Abstract:
A method and apparatus are provided for implementing enhanced deployment of a virtual machine (VM) in a cloud environment. VM boot profiling is performed and used for providing VM image download prioritization. The VM boot profiling facilitates the transfer of the earliest needed portions of the VM image first, allowing the VM to boot and begin operating quickly while the later needed portions of the VM image are still transferring.

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention relates generally to the data processing field, and more particularly, relates to method and apparatus for implementing deployment of a virtual machine (VM) in a cloud environment including VM boot profiling used for the VM image download prioritization. 
       DESCRIPTION OF THE RELATED ART 
       [0002]    In deploying a virtual machine (VM) in a cloud environment, the part of the process that takes the longest is the transfer of the image from some repository, for example, Glance in OpenStack, to the hosting platform, for example to a boot disk from which the VM must boot and operate. 
         [0003]    One example technique to mitigate the VM image transfer time includes prefetching VM images to the host. In order to be optimal, all possible images should be stored locally on the host. This becomes more difficult and expensive, both in terms of hardware and bandwidth, as the number and diversity of such images increases; and it makes maintenance of the images difficult. 
         [0004]    Another technique to mitigate the VM image transfer time includes caching images closer to the target host. Again, this uses bandwidth and hardware proportional to the number of VM images in play; and it still ultimately requires transfer of the image to the host prior to VM boot. 
         [0005]    Another technique to mitigate the VM image transfer time includes using copy-on-write (COW) file systems to allow quick pseudo-cloning of an image already deployed locally. This works great as long as many VMs will share the same image; however, it does not help for the first VM deployed on that host, for which the entire image must still be transferred. 
         [0006]    A need exists for an efficient and effective method and apparatus for implementing deployment of a virtual machine (VM) in a cloud environment including transfer of the VM image. 
       SUMMARY OF THE INVENTION 
       [0007]    Principal aspects of the present invention are to provide a method and apparatus for implementing enhanced deployment of a virtual machine (VM) in a cloud environment. Other important aspects of the present invention are to provide such method and apparatus substantially without negative effects and that overcome many of the disadvantages of prior art arrangements. 
         [0008]    In brief, a method and apparatus are provided for implementing enhanced deployment of a virtual machine (VM) in a cloud environment. VM boot profiling is performed and used for providing VM image download prioritization. The VM boot profiling facilitates the transfer of the earliest needed portions of the VM image first, allowing the VM to boot and begin operating quickly while the later needed portions of the VM image are still transferring. 
         [0009]    In accordance with features of the invention, the VM boot profiling includes high level summary logging of an order and files that are accessed during boot time to be used by other processes to improve image transfer performance for booting. 
         [0010]    In accordance with features of the invention, the VM boot profiling includes logging an order and location of files that are accessed at boot time. 
         [0011]    In accordance with features of the invention, the VM boot profiling includes organizing the files for optimal transfer at boot time. 
         [0012]    In accordance with features of the invention, the VM boot profiling includes marking check points in the boot process. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0013]    The present invention together with the above and other objects and advantages may best be understood from the following detailed description of the preferred embodiments of the invention illustrated in the drawings, wherein: 
           [0014]      FIG. 1  is a block diagram of an example computer system for implementing enhanced deployment of a virtual machine (VM) in a cloud environment in accordance with the preferred embodiment; 
           [0015]      FIGS. 2A and 2B  are flow charts together illustrating example operations for implementing virtual machine (VM) profiling in accordance with the preferred embodiment; 
           [0016]      FIGS. 3A and 3B  are flow charts together illustrating example operations for implementing virtual machine (VM) coordinated parallel boot process in accordance with the preferred embodiment; and 
           [0017]      FIG. 4  is a block diagram illustrating a computer program product in accordance with the preferred embodiment. 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0018]    In the following detailed description of embodiments of the invention, reference is made to the accompanying drawings, which illustrate example embodiments by which the invention may be practiced. It is to be understood that other embodiments may be utilized and structural changes may be made without departing from the scope of the invention. In particular, references to “file” should be broadly considered to include and may be substituted with block, page or any other logical subdivision of data, 
         [0019]    The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. 
         [0020]    In accordance with features of the invention, a method and apparatus are provided for implementing enhanced deployment of a virtual machine (VM) in a cloud environment. VM boot profiling is performed for providing VM image download prioritization. The VM boot profiling includes high level summary logging the order and files that are accessed during boot time to be used by other processes to improve image transfer performance for booting. 
         [0021]    Having reference now to the drawings, in  FIGS. 1 , there is shown a computer system embodying the present invention generally designated by the reference character  100  for implementing enhanced deployment of a virtual machine (VM) in a cloud environment, in accordance with the preferred embodiment. Computer system  100  includes one or more processors  102  or general-purpose programmable central processing units (CPUs)  102 , # 1 -N. As shown, computer system  100  includes multiple processors  102  typical of a relatively large system; however, system  100  can include a single CPU  102 . Computer system  100  includes a cache memory  104  connected to each processor  102 . 
         [0022]    Computer system  100  includes a system memory  106 . System memory  106  is a random-access semiconductor memory for storing data, including applications and programs. System memory  106  is comprised of, for example, a dynamic random access memory (DRAM), a synchronous direct random access memory (SDRAM), a current double data rate (DDRx) SDRAM, non-volatile memory, optical storage, and other storage devices. 
         [0023]    I/O bus interface  114 , and buses  116 ,  118  provide communication paths among the various system components. Bus  116  is a processor/memory bus, often referred to as front-side bus, providing a data communication path for transferring data among CPUs  102  and caches  104 , system memory  106  and I/O bus interface unit  114 . I/O bus interface  114  is further coupled to system I/O bus  118  for transferring data to and from various I/O units. 
         [0024]    As shown, computer system  100  includes a storage interface  120  coupled to storage devices, such as, a direct access storage device (DASD)  122 , and a CD-ROM  124 . Computer system  100  includes a terminal interface  126  coupled to a plurality of terminals  128 , # 1 -M, a network interface  130  coupled to a network  132 , such as the Internet, local area or other networks, shown connected to another separate computer system  133 , and a I/O device interface  134  coupled to I/O devices, such as a first printer/fax  136 A, and a second printer  136 B. 
         [0025]    I/O bus interface  114  communicates with multiple I/O interface units  120 ,  126 ,  130 ,  134 , which are also known as I/O processors (IOPs) or I/O adapters (IOAs), through system I/O bus  116 . System I/O bus  116  is, for example, an industry standard PCI bus, or other appropriate bus technology. 
         [0026]    System memory  106  stores an operating system  140 , system image files  1 -Z,  142 , image event log entries  144 , an agent  146  for generating profiles, a profiling and boot control program  148  in accordance with the preferred embodiments. 
         [0027]    In accordance with features of the invention, in an illustrative embodiment of VM boot profiling such as shown in  FIGS. 2A and 2B , instrumenting of low-level file accessors of the operating system in an image in question is performed. In this case, for example assuming a C-based kernel using stat( ) and open( ) calls, and the idea in general is to find a narrow choke-point that will catch all file accesses during the boot process. As the system boots, the instrumented hooks make a log of each file name as it is accessed, along with the time stamp at which this occurred. Meanwhile, some other mechanism is identifying significant (in the eye of the user) operating system events as they occur. This other mechanism might be instrumentation in some other syscall or program, for example, “ifup” for the network event, some program that runs and watches for a particular condition, such as, a ping loop to detect when networking comes up, or even a human. When a significant event occurs, the mechanism makes an entry in the same log, giving the event a tag for later use, and a timestamp. This continues until all events of interest have occurred. 
         [0028]    Referring now to  FIGS. 2A and 2B , there are shown example flow charts together illustrating example operations for implementing virtual machine (VM) profiling generally designated by the reference character  200  in accordance with the preferred embodiment. An agent, such as agent  146  observes a VM as it boots, begins work, and identifies which files are accessed during this process. In this manner, the profiling and boot control program  148  of the present invention can break the image into prioritized chunks of almost any granularity, down to the level of individual files, I/O blocks, memory pages, and the like. Using such an agent, the user of the invention, for example, cloud image administrator advantageously performs a mock deploy against this image to generate its chunk profile. This profile is used in subsequent deploys to prioritize the transfer and startup sequence of the VM. 
         [0029]    As indicated at a block  202  in  FIG. 2A , each of files  1 -X is accessed, and as indicated at a block  204  in  FIG. 2B , each such access is recorded and timestamped. One example of a mechanism that could achieve this profiling: hook into the VM kernel&#39;s low-level stat and/or open syscall and log (to a file, NVRAM, and the like) the file system path from each call. This produces an ordered list of files, which can then be culled for duplicates, preserving only the earliest entry for a given path. 
         [0030]    During the profiling mock deploy of  FIGS. 2A and 2B , logging events/checkpoints in the same medium, either automatically, for example, each process as it starts, or based on the input of the user, for example, “here&#39;s where it finished booting to the point where I could log in”; “here&#39;s where network configuration finished”; “here&#39;s where I performed a software update”; “here&#39;s where I kicked off the workload”. These checkpoints can be used to schedule which pieces of the VM&#39;s workload advantageously are kicked off based on which segments have finished downloading. As indicated at a block  206  in  FIG. 2A , networking is active, and as indicated at a block  208  in  FIG. 2B , an event, networking active is recorded and timestamped. 
         [0031]    As indicated at a block  210  in  FIG. 2A , each of files X+1-file Y is accessed, and as indicated at a block  212  in  FIG. 2B , each such access is recorded and timestamped. As indicated at a block  214  in  FIG. 2A , a login prompt is identified, and as indicated at a block  216  in  FIG. 2B , an event, login prompt is recorded and timestamped. 
         [0032]    As indicated at a block  218  in  FIG. 2A , each of files Y+1-file Z is started and opened, and as indicated at a block  220  in  FIG. 2B , each such access is recorded and timestamped. As indicated at a block  222  in  FIG. 2A , a workload is identified, and as indicated at a block  224  in  FIG. 2B , an event, workload is recorded and timestamped. As indicated at a block  226  in  FIG. 2A , a next file Z+1 is accessed, and the profiling mock deploy operations are continued. 
         [0033]    In accordance with features of the invention, during Boot, such as shown in  FIGS. 3A and 3B , having created the log file once, via VM boot profiling or a Dummy Run in  FIGS. 2A and 2B , now booting VMs is performed many times using this same image. The coordinated boot process runs two things in parallel: uploading the image, and a boot controller agent which kicks off various pieces of work. The image is uploaded in chunks in the order specified by the log file. Whenever the upload comes across an event log entry, it sends a notification to the boot controller agent, which now knows the VM is ready for the one or more pieces of work associated with that event. The boot controller continues to run until all the events of interest have been seen, at which point the boot controller exits. The uploader continues to run until the log file has been entirely traversed. At this point, there are typically one or more remaining chunks that have not been uploaded yet, for example, because they were never touched during the VM boot profiling or Dummy Run. The uploader now uploads those remaining chunks in arbitrary order, and then exits. At this point, the VM looks just like it would have under a normal serial full-upload-then-boot. 
         [0034]    Referring to  FIGS. 3A and 3B , there are shown example flow charts together illustrating example operations for implementing virtual machine (VM) coordinated parallel boot process generally designated by the reference character  300  in accordance with the preferred embodiment. As indicated at a block  302  in  FIG. 3A , operations start to create a VM, resources and the like are allocated as indicated at a block  304 . As indicated at a block  306  in  FIG. 3A , a boot device is assigned. As indicated at a block  308  in  FIG. 3B , the boot controller operations start. As indicated at a block  310  in  FIG. 3A , transfer of boot image begins, and transferring files  1 -File X is performed as indicated at a block  312 . As indicated at a block  314  in  FIG. 3A , responsive to an identified event log entry, ready for network is signaled to the boot controller agent. As indicated at a block  316  in  FIG. 3B , booting to network is performed. As indicated at a block  318  in  FIG. 3A , transferring files X+1-File Y is performed and ready for login is signaled as indicated at a block  320 . As indicated at a block  322  in  FIG. 3B , waiting is performed, then login is performed as indicated at a block  324 . 
         [0035]    As indicated at a block  326  in  FIG. 3A , transferring files Y+1-File Z is performed and ready for workload is signaled as indicated at a block  328 . As indicated at a block  330  in  FIG. 3B , waiting is performed, then workload is started as indicated at a block  332 . As indicated at a block  334  in  FIG. 3A , transferring files Z+1 is performed, remaining files are transferred as indicated at a block  336  and complete is signaled as indicated at a block  338 . As indicated at a block  332  in  FIG. 3B , starting workload is continued. 
         [0036]    Referring now to  FIG. 4 , an article of manufacture or a computer program product  400  of the invention is illustrated. The computer program product  400  is tangibly embodied on a non-transitory computer readable storage medium that includes a recording medium  402 , such as, a floppy disk, a high capacity read only memory in the form of an optically read compact disk or CD-ROM, a tape, or another similar computer program product. Recording medium  402  stores program means  404 ,  406 ,  408 , and  410  on the medium  402  for carrying out the methods for implementing enhanced deployment of a virtual machine (VM) in a cloud environment of the preferred embodiment in the system  100  of  FIG. 1 . 
         [0037]    A sequence of program instructions or a logical assembly of one or more interrelated modules defined by the recorded program means  404 ,  406 ,  408 , and  410 , direct the system  100  for implementing enhanced deployment of a virtual machine (VM) in a cloud environment of the preferred embodiment. 
         [0038]    While the present invention has been described with reference to the details of the embodiments of the invention shown in the drawing, these details are not intended to limit the scope of the invention as claimed in the appended claims.