US9317279B2 - Virtual machine block substitution - Google Patents

Virtual machine block substitution Download PDF

Info

Publication number
US9317279B2
US9317279B2 US14/298,902 US201414298902A US9317279B2 US 9317279 B2 US9317279 B2 US 9317279B2 US 201414298902 A US201414298902 A US 201414298902A US 9317279 B2 US9317279 B2 US 9317279B2
Authority
US
United States
Prior art keywords
virtual machine
block
blocks
guest operating
hypervisor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
US14/298,902
Other versions
US20140289720A1 (en
Inventor
Robert Fries
Srivatsan Parthasarathy
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US13/171,443 priority Critical patent/US8819660B2/en
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Priority to US14/298,902 priority patent/US9317279B2/en
Publication of US20140289720A1 publication Critical patent/US20140289720A1/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Publication of US9317279B2 publication Critical patent/US9317279B2/en
Application granted granted Critical
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • G06F8/68
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Abstract

Techniques are described to allow substation of blocks into a virtual machine image of an executing virtual machine. A patch may be applied to a first virtual machine image. One or more blocks modified by the patch are identified and copied to a host having a virtual machine executing from a virtual machine image that is based on the first virtual machine image (prior to the patch). While the virtual machine is executing, the substitution blocks are applied (supersede) corresponding original blocks in the virtual machine image. A guest operating system in the virtual machine may either begin using an executable file in a substitution block. In addition, the guest operating system may be forced to flush from memory and cache executable code replaced by the substitution block.

Description

CROSS-REFERENCE TO RELATED APPLICATION

This application is a Continuation of application Ser. No. 13/171,443, filed Jun. 29, 2011, allowed and to be issued, and hereby incorporated in original form by reference.

BACKGROUND

Data centers, compute clouds, and other networks of cooperating hosts often use virtual machines (VMs) for management and efficiency benefits. In some cases, a virtual machine image such as a “golden image” may be duplicated and used in multiple virtual machines. That is, a root or base virtual machine image may exist at a management server, and virtual machines on hosts may be running copies of the base virtual machine image.

At times, it may be desirable to update or patch the software such as applications and operating systems on virtual machines. Often, the same patch must be applied to all of the virtual machines that are based on a same virtual machine image. That is, virtual machines using copies of a base virtual machine image may need a same patch or update. Typically, this has involved, for running virtual machines, copying a patch, installing the patch, and restarting the virtual machine and its guest operating system. However, restarting a virtual machine may present problems. Particularly in environments of distributed or highly interconnected applications, or with applications that require minimal downtime, restarting may disrupt a service or affect a Service Level Agreement. Even in cases where there is only virtual machine to be updated, it may nonetheless be inconvenient to restart that virtual machine.

Techniques related to updating virtual machine images of live virtual machines are discussed below.

SUMMARY

The following summary is included only to introduce some concepts discussed in the Detailed Description below. This summary is not comprehensive and is not intended to delineate the scope of the claimed subject matter, which is set forth by the claims presented at the end.

Techniques are described to allow substation of blocks into a virtual machine image of an executing virtual machine. A patch may be applied to a first virtual machine image. One or more blocks modified by the patch are identified and copied to a host having a virtual machine executing from a virtual machine image that is based on the first virtual machine image (prior to the patch). While the virtual machine is executing, the substitution blocks are applied (supersede) corresponding original blocks in the virtual machine image. A guest operating system in the virtual machine may either begin using an executable file in a substitution block. In addition, the guest operating system may be forced to flush from memory and cache executable code replaced by the substitution block.

Many of the attendant features will be explained below with reference to the following detailed description considered in connection with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The present description will be better understood from the following detailed description read in light of the accompanying drawings, wherein like reference numerals are used to designate like parts in the accompanying description.

FIG. 1 shows an example virtualization layer.

FIG. 2 shows processes and interactions of virtualization layer in relation to virtual machines and virtual machine images.

FIG. 3 shows a process for substituting blocks into an executing virtual machine.

FIG. 4 shows a virtual machine image being patched.

FIG. 5 shows substitute or modified blocks being applied to a target virtual machine image of an executing virtual machine.

FIG. 6 shows a detailed view of physical memory and storage when a substitute block is loaded.

DETAILED DESCRIPTION

Virtualization Overview

FIG. 1 shows an example virtualization layer 100. A computer 102 has hardware 104, including a central processing unit (CPU) 106, memory 108, a network interface 110, non-volatile storage 112, and other components not shown, such as a bus, a display adapter, etc. The virtualization layer 100 manages and facilitates execution of virtual machines 114. Although not shown in FIG. 1, each virtual machine 114 typically has an associated virtual disk image and a guest operating system. For brevity, the operating system and perhaps application software of a virtual machine 114 will sometimes be referred to as a guest, which is stored and executed from the virtual disk image associated with the virtual machine 114.

The virtualization layer 100 may be of any variety of known or future implementations, such as Hyper-V Server™, VMWare ESX Server™, Xen, Oracle VM™, etc. The architecture of the virtualization layer may a hosted type, with a virtual machine monitor (VMM) running on a host operating system, or a bare-metal type with a hypervisor or the like running directly on the hardware 104 of the computer 102. As used herein, the term “virtual machine” refers to a system-type virtual machine that simulates any specific hardware architecture (e.g., x86) able to run native code for that hardware architecture; to the guest, the virtual machine may be nearly indistinguishable from a hardware machine. Virtual machines discussed herein are not abstract or process-type virtual machines such as Java Virtual Machines.

The virtualization layer 100 performs the basic function of managing the virtual machines 114 and sharing of the hardware 104 by both itself and the virtual machines 114. Any of a variety of techniques may be used to isolate the virtual machines 114 from the hardware 104. In one embodiment, the virtualization layer may provide different isolated environments (i.e., partitions or domains) which correspond to virtual machines 114. Some of the virtualization layer 100 such as shared virtual device drivers, inter virtual machine communication facilities, and virtual machine management APIs (application programming interfaces), may run in a special privileged partition or domain, allowing for a compact and efficient hypervisor. In other embodiments, functionality for virtual machine management and coherent sharing of the hardware 104 may reside in a monolithic on-the-metal hypervisor.

FIG. 2 shows processes and interactions of virtualization layer 100 in relation to virtual machines 114 and virtual machine images 140. The virtualization layer 100 performs a process 142 of starting and executing a virtual machine 114, possibly according to corresponding virtual machine configuration parameters. When a virtual machine 114 (VM) is started, the virtualization layer identifies an associated virtual machine image 140. In practice, any virtual machine image 140 can be used by any virtual machine 114. The virtual machine image 140 may be a specially formatted file (e.g., a VHD) on a file system 141 of the virtualization layer 100. The virtualization layer 100 loads the identified virtual machine image 140. The started virtual machine 114 mounts and reads the virtual machine image 140, perhaps seeking a master boot record or other boot information, and boots a guest operating system which begins executing.

The virtualization layer 100 manages execution of the virtual machine 114, handling certain calls to the guest's kernel, hypercalls, etc., and coordinating the virtual machine 114's access to the underlying hardware 104. As the guest and its software run, the virtualization layer 100 may maintain state of the guest on the virtual disk image 140; when the guest, or an application run by the guest, writes data to “disk”, the virtualization layer 100 translates the data to the format of the virtual disk image 140 and writes to the image.

The virtualization layer 100 may perform a process 144 for shutting down the virtual machine 114. When an instruction is received to stop the virtual machine 114, the state of the virtual machine 114 and its guest is saved to the virtual disk image 140, and the executing virtual machine 114 process (or partition) is deleted. A specification of the virtual machine 114 may remain for a later restart of the virtual machine 114.

Live Block Substitution

FIG. 3 shows a process for substituting blocks into an executing virtual machine. At step 160 substitution blocks are identified. This may be accomplished in a number of ways. In one embodiment, a patch is applied to a first virtual machine image (e.g., a golden image). The patch may be applied by mounting the first virtual machine image as a file system and modifying files or other guest data stored in the virtual machine image. The patch may be applied by booting the virtual machine image in a virtual machine and executing a patching process (e.g., a Microsoft Installer™ file) to update an operating system or software installed thereon, including modifying a binary machine executable file. One or more blocks in the second (patched) virtual machine image may be identified by comparing the first and second virtual machine images block by block. If only a few select files containing binary machine executable instructions have been updated, it may be possible to identify the tainted block(s) (blocks containing the modified code) directly during the patching process. For example, a same block in the first and second virtual machine image (e.g. block N) may contain an original and updated file, respectively. By whatever means, it is assumed that at least one tainted block is identified in the second virtual machine image.

At step 162, the substitution blocks are copied to one or more target virtual machines. The substitution blocks may or may not be accompanied by a list identifying the substitution blocks. In one embodiment, the substitution blocks may be in the form of a difference disk or delta disk, details of which are known and described elsewhere. In another embodiment, the virtual machine images may be dynamic virtual disks that expand in size as needed.

At step 164 the blocks are applied at the hosts at which they are received. The substitution blocks are handled at the virtualization layer, which applies the substitution blocks to the virtual machine images thereon. For discussion, consider only a single host and a single substitution block. The host has a virtualization layer that manages execution of a virtual machine using a virtual machine image. The virtualization layer has a block-level driver that virtualizes access to the virtual machine image, providing block-level access to the image and causing the virtual machine image file to appear as a disk to the virtual machine. As such, the virtualization layer is able to transparently alter that “disk” without the need for awareness or cooperation of the virtual machine or the guest software executing in the virtual machine (although embodiments involving same are described later). The virtualization layer (or hypervisor) identifies a block in the target virtual machine image that will be replaced by the substitution block, possibly using a tainted block list received with the substitution block, or by comparing the substitution block with blocks in the target virtual machine image. The identified tainted block is then replaced with the substitution block, which becomes available to the still-executing associated virtual machine and guest software.

At step 166, operations below the virtualization layer may be performed. Note that in a case where the substitution block is known or assumed to contain read-only data, the substitution block may be copied directly and any substituted-in files may be simply used when they are accessed by the guest operating system. In another embodiment, the virtualization layer informs the guest operating system by a signal or message, possibly passed through a virtual machine bus or the like. For example, the hypervisor may send the virtual machine information about files in the substitute block that have been modified (possibly files with binary executable code). Or, by informing the operating system about the storage area of the block, and leaving it to the operating system to take any action, such as scanning the file system at file system locations corresponding to the block. In one embodiment, substitution blocks may contain customization information, which is specialized information to target or facilitation substitution. For example, a substation block may contain the name of the machine or may specify various machine configuration settings. When substitution occurs, the customization information is used to update a setting or state of the guest that is persisted in the corresponding virtual machine image. In this case, the substitution system has built-in understanding of the guest operating system, in contrast to embodiments where substitution is performed at the virtual hardware layer without regard for the guest operating system.

In one embodiment, the guest operating system may have a component such as a kernel module that responds to a signal from the hypervisor by taking various steps to assure that a file in the substitute block becomes available when the substitution block is copied into the virtual machine image. This may involve the guest operating system invalidating any paged-in executable code from the original (replace) block that is now out-of-date, invalidating or marking invalid any relevant file cache, and so forth. The guest operating system might also force a page fault to cause the file to be reloaded into memory (thus allowing for execution of code in the substitute block). The guest operating system may access a translation lookaside buffer to identify where the old code of a new file is located in physical memory, and update accordingly.

FIG. 4 shows a virtual machine image being patched. An original virtual machine image 190, such as a golden image, is to be patched. A patch 192 is applied to the original virtual machine image (VMI-A). As noted above, this may involve mounting the original virtual machine image 190 (e.g., with an administrative tool), or booting the original virtual machine image 190 in a virtual machine. The patch 192 is then applied, which may update files, registry settings, virtualization settings, executables (libraries, programs, etc.), and other known patchable objects. A number of original blocks 194 may be affected. Modified blocks 196 in the patched virtual machine image 198 (VMI-A′) are indicated by shading in FIG. 4. In one embodiment, a patch tool, virtual machine image tool (configured to read the format of the virtual machine images), or the like compares the original virtual machine image 190 and the patched virtual machine image 198 (e.g., by comparing block hashes, disk differencing, ec.). In another embodiment, blocks are tracked as they are updated and a list 200 of tainted blocks is thus accumulated. The substitute blocks 196 are then transmitted via a network to hosts where they will be applied.

FIG. 5 shows substitute or modified blocks 196 being applied to a target virtual machine image 220 of an executing virtual machine 222. A host 224 is hosting a hypervisor that runs the virtual machine 222 and manages access to the virtual machine image 220. The modified blocks 196 are received at the host 224 from a data center's virtual machine management software, for example. As the virtual machine 222 is executing, the modified blocks 196 are copied into the virtual machine image 220. In one embodiment, the tainted block list 200 is used to substitute in the modified blocks 196 for corresponding pre-existing outdated blocks. In another embodiment, if disk-differencing is used, the modified blocks 196 are effectively copied in by placing them in a difference-disk without explicitly overwriting old blocks. As the guest operating system 226 executes, it may implicitly or explicitly begin to access data, including possibly executable code, in the modified blocks 196. For example, an executable file 228 in a modified block 196 begins executing in the guest operating system 226 without restarting the guest operating system 226 or the virtual machine 222.

FIG. 6 shows a detailed view of physical memory and storage when a substitute block is loaded. A substitution block 196A may contain a portion of executable code 240A, for instance machine instructions for a processor of the relevant host. The executable code 240A originated from the patch 192. In some cases, it might be that the substitution block 196A is small and contains only patched/new executable code. In other cases, the substitution block 196A may contain some files or other data that has not changed (i.e., a file that was not changed by the patch 1 92). The hypervisor 242 updates the target virtual machine image 220 with the substitution block 196A, which replaces a previous block 244. The code 240A becomes available within the target virtual machine image 220 as code 240B (now a part of the virtual machine image 220 of the executing virtual machine 222).

In response to the insertion of the new substitution block 196A, or with some latency (for instance, when needed by the guest operating system 226), the code 240B is accessed by the guest operating system 226. At this time, the code 240B is paged into physical memory 246 by the virtualization layer, forming in-memory code 240C. The in-memory code 240C backs code 240D mapped in the virtual memory address space of the guest operating system 226.

It will be appreciated that any of the involved components may be modified or augmented to force out old code and force in new code. For example, the guest operating system 226 may be “enlightened” (provided with a virtualization-aware element) that flushes any affected caches, forces relevant pages to be faulted (and therefore re-read, thus loading code 240B into physical memory 246 as code 240C), etc. In another embodiment, the virtualization layer itself might directly update the physical memory of the guest operating system 226 with new code, possibly by scanning physical memory 246 to recognize the old code to be replaced. For instance, an appropriately enlightened operating system may float up to the hypervisor information about the relevant files and or memory. It is important to recognize that when the substitution block 196A is added the virtual machine may have an execution state that is inconsistent with the virtual machine image 220; code may still reside in memory that has been replaced by the substitution block 196A. A number of approaches are discussed below to address this possibility.

One approach for dealing with substituted-in code replacing code that has already been executed is to keep a pedigree for every memory-paged file. That is, the hypervisor tracks which disk block each file came from. With this approach, page table entries are invalidated, and the file cache may need to be cleared. In another embodiment, a page is taken, a page fault is forced, the page tables is searched, and the appropriate pages are faulted in, and the page tables are updated (possibly using a hook in the hypervisor). Another approach may involve the hypervisor passing to the guest a list of updated (invalid files), which the guest uses to refresh accordingly. In another embodiment, a file-to-block mapping is used to identify updated files, with appropriate memory fixes then performed.

To elaborate, consider that hypervisors typically provide a block device layer, and the guest operating system a file system layer. If the guest executes a binary file, then certain sections are mapped to physical pages; there is a page layer, which is backed by files (sometimes a swap file), backed by or directly mapped onto blocks. A file such as the text section of a binary file, may be loaded to a page.

While updates to a executing virtual machine have been mentioned, another embodiment may pause or suspend a virtual machine when a new block is substituted in. Although it may be convenient to use blocks that match a block-size used by the hypervisor performing the substitution, this is not required; smaller or larger blocks may be used. Moreover, although it may in some cases be desirable to avoid restarting virtual machines and guest operating systems, such may still be performed after a live block substitution, for example to resolve errors or to handle irreconcilable memory-disk issues.

Without limiting the embodiments, it should be noted that the live-patching technique discussed above may be used without regard for the underlying operating system. In addition, patching may be performed outside the ordinary mechanisms of virtual machine control and ownership. Specifically, a cloud hoster or data center operator can apply a patch to virtual machines without requiring guest or virtual machine credentials, which may be convenient for updating cloud fabric code that is embedded in a virtual machine. Furthermore, it may be possible to update software on a virtual machine without having to restart the virtual machine or the guest operating system. Some embodiments may be more readily implemented when update blocks contain read-only files.

CONCLUSION

Embodiments and features discussed above can be realized in the form of information stored in volatile or non-volatile computer or device readable media. This is deemed to include at least media such as optical storage (e.g., compact-disk read-only memory (CD-ROM)), magnetic media, flash read-only memory (ROM), or any current or future means of storing digital information. The stored information can be in the form of machine executable instructions (e.g., compiled executable binary code), source code, bytecode, or any other information that can be used to enable or configure computing devices to perform the various embodiments discussed above. This is also deemed to include at least volatile memory such as random-access memory (RAM) and/or virtual memory storing information such as central processing unit (CPU) instructions during execution of a program carrying out an embodiment, as well as non-volatile media storing information that allows a program or executable to be loaded and executed. The embodiments and features can be performed on any type of computing device, including portable devices, workstations, servers, mobile wireless devices, and so on.

Claims (20)

The invention claimed is:
1. A computer-implemented method of updating a virtual machine, the method comprising:
executing a hypervisor on a host computer, the hypervisor managing execution of the virtual machine on the host computer, wherein a guest operating system is configured to execute on the virtual machine, the hypervisor configured to provide the virtual machine with block-based access to a virtual machine image, the virtual machine image comprised of blocks;
receiving a substitution block at the host computer; and
while the virtual machine is live, replacing, by the hypervisor, a target block in the virtual machine image with the substitution block, the target block comprising one of the blocks of the virtual machine image, the hypervisor managing the blocks of the virtual machine image and, when the virtual machine is executing, presenting the blocks of the virtual machine image, including the substitution block, to the virtual machine as a virtualized disk.
2. A method according to claim 1, further comprising receiving a list of blocks, and using the list of blocks to identify the target block.
3. A method according to claim 1, wherein the substitution block was obtained from a base virtual machine image in relation to application of a patch thereof, and wherein the virtual machine image was derived from the base virtual machine image before the patch was applied.
4. A method according to claim 1, wherein the target block contains a first version of a portion of a binary machine code file executable by the guest operating system, the substitution block comprises a second version of the binary machine code file, and when the substitution block replaces the target lock in the virtual machine image, the second version of the binary machine executable file is available for execution by the guest operating system.
5. A method according to claim 1, wherein the virtual machine is paused or suspended during the replacing.
6. A method according to claim 1, wherein the virtual machine is executing during the replacing.
7. A method according to claim 1, the method further comprising providing, by the hypervisor, a signal to the guest operating system indicating the replacing, and wherein the guest operating system responds to the signal by executing a corresponding action.
8. One or more computer-readable storage devices storing information to enable a computer to perform a process, the process performed by a virtualization layer executing on the computer, the process comprising:
executing the virtualization layer on the computer, the virtualization layer configured to manage execution of a virtual machine on the computer, wherein a guest operating system is configured to execute on the virtual machine, the virtualization layer configured to provide the virtual machine with block-based access to a first virtual machine image if the virtual machine is executing, the first virtual machine image comprised of first blocks that are units of storage that the virtualization layer presents as a virtualized disk;
receiving a second block obtained from a second virtual machine image; and
while the virtual machine is live, replacing one of the first blocks with the second block.
9. One or more computer-readable storage devices according to claim 8, wherein the virtual machine executes from the virtualized disk and the virtualized disk comprises a differencing disk, and wherein the second block is added to the differencing disk without removing the replaced first block from the virtualized disk.
10. One or more computer-readable storage devices according to claim 9, wherein the replacing is performed such that the process is specific to the guest operating system.
11. One or more computer-readable storage devices according to claim 8, wherein the hypervisor provides the guest operating system with information identifying the replaced first block.
12. One or more computer-readable storage devices according to claim 11, wherein the guest operating system uses the information identifying the replaced block to reload a corresponding unit of storage managed by the guest operating system.
13. One or more computer-readable storage devices according to claim 8, wherein the virtual machine is suspended or paused by the hypervisor during the replacing.
14. A method performed by one or more computers, the method comprising:
modifying a first virtual machine image to generate a second virtual machine image;
identifying blocks of the first virtual machine image that were modified by the modifying;
distributing the identified blocks to a host, the host having a hypervisor and one or more virtual machines managed thereby, the virtual machine having a virtual machine image comprised of blocks and presented as a virtual disk by the hypervisor; and
while the hypervisor keeps the virtual machine in a live state, applying the blocks to the virtual machine on the host, the applying performed by the hypervisor replacing blocks of the virtual machine image managed by the hypervisor.
15. A method according to claim 14, the process further comprising pausing or suspending the virtual machine prior to the applying and resuming execution of the virtual machine after the applying.
16. A method according to claim 15, further comprising responding, to an indication that the applying was performed, by the guest operating system using the indication to identify storage elements managed by the guest operating system that are to be re-read by the guest operating system.
17. A method according to claim 15, further comprising using a file-to-block mapping on the host to identify a file managed by the guest operating system.
18. A method according to claim 17, further comprising forcing a page fault to force executable code in one of the blocks into memory of the guest operating system.
19. A method according to claim 15, wherein the virtual machine is executing when the replacing is performed.
20. A method according to claim 15, wherein the hypervisor comprises a block-based device driver that handles access to a virtual machine image of the virtual machine by mapping blocks of the virtual machine image to a virtual disk of the virtual machine, the block-based device driver providing the applied blocks to the virtual machine.
US14/298,902 2011-06-29 2014-06-07 Virtual machine block substitution Active US9317279B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US13/171,443 US8819660B2 (en) 2011-06-29 2011-06-29 Virtual machine block substitution
US14/298,902 US9317279B2 (en) 2011-06-29 2014-06-07 Virtual machine block substitution

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/298,902 US9317279B2 (en) 2011-06-29 2014-06-07 Virtual machine block substitution

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US13/171,443 Continuation US8819660B2 (en) 2011-06-29 2011-06-29 Virtual machine block substitution

Publications (2)

Publication Number Publication Date
US20140289720A1 US20140289720A1 (en) 2014-09-25
US9317279B2 true US9317279B2 (en) 2016-04-19

Family

ID=47392074

Family Applications (2)

Application Number Title Priority Date Filing Date
US13/171,443 Active 2032-12-05 US8819660B2 (en) 2011-06-29 2011-06-29 Virtual machine block substitution
US14/298,902 Active US9317279B2 (en) 2011-06-29 2014-06-07 Virtual machine block substitution

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US13/171,443 Active 2032-12-05 US8819660B2 (en) 2011-06-29 2011-06-29 Virtual machine block substitution

Country Status (1)

Country Link
US (2) US8819660B2 (en)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8943498B2 (en) * 2009-05-31 2015-01-27 Red Hat Israel, Ltd. Method and apparatus for swapping virtual machine memory
US8904382B2 (en) * 2010-06-17 2014-12-02 International Business Machines Corporation Creating instances of cloud computing environments
US9326001B2 (en) * 2011-03-22 2016-04-26 International Business Machines Corporation Scalable image distribution in virtualized server environments
US8819660B2 (en) * 2011-06-29 2014-08-26 Microsoft Corporation Virtual machine block substitution
US9886352B2 (en) * 2012-04-27 2018-02-06 University Of British Columbia De-duplicated virtual machine image transfer
US9411621B2 (en) * 2013-01-24 2016-08-09 International Business Machines Corporation Grouping and automatically propagating updates to equivalent online and offline virtual machines in a data center
US8997080B2 (en) * 2013-02-11 2015-03-31 Citrix Systems, Inc. System updates with personal virtual disks
US20140245275A1 (en) * 2013-02-26 2014-08-28 Red Hat, Inc. Bytecode modification
US9690566B2 (en) * 2013-03-14 2017-06-27 Oracle International Corporation System and method for virtual assembly patching in a cloud environment
CN103281398B (en) * 2013-06-14 2017-04-12 清华大学 Data center network ubiquitous caching method
US9058239B2 (en) * 2013-06-20 2015-06-16 International Business Machines Corporation Hypervisor subpartition as concurrent upgrade
US9720719B2 (en) * 2013-12-23 2017-08-01 Citrix Systems, Inc. Method and system for optimizing virtual disk provisioning
US10503531B2 (en) 2013-12-24 2019-12-10 Red Hat, Inc. Loading runtime configuration files into virtual machine instances which when executed transform a stored virtual machine image into a customized configuration
CN105573766A (en) * 2014-10-09 2016-05-11 中兴通讯股份有限公司 Software upgrading method and device and electronic equipment
US9286102B1 (en) * 2014-11-05 2016-03-15 Vmware, Inc. Desktop image management for hosted hypervisor environments
US20190065165A1 (en) * 2014-11-10 2019-02-28 Amazon Technologies, Inc. Automated deployment of applications
US20160350099A1 (en) * 2015-05-29 2016-12-01 Hewlett Packard Enterprise Development Lp Application deployment to virtual machines
US9996374B2 (en) * 2015-06-16 2018-06-12 Assured Information Security, Inc. Deployment and installation of updates in a virtual environment
US9959061B1 (en) * 2015-09-30 2018-05-01 EMC IP Holding Company LLC Data synchronization
US10768961B2 (en) 2016-07-14 2020-09-08 International Business Machines Corporation Virtual machine seed image replication through parallel deployment
CN107690166B (en) * 2016-08-03 2020-11-20 深信服科技股份有限公司 VMI platform access method, device and system
US10467034B1 (en) * 2016-09-30 2019-11-05 EMC IP Holding Company LLC Performing application specific actions without in-guest credential information
US10261780B2 (en) * 2017-05-01 2019-04-16 Google Llc Transparent upgrade of a system service or application
US20180349233A1 (en) * 2017-06-05 2018-12-06 Vmware, Inc. File synchronization using delta bitmaps
US10776150B2 (en) 2018-10-30 2020-09-15 Red Hat, Inc. Dynamically updating virtual central processing units

Citations (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020188935A1 (en) * 2001-06-11 2002-12-12 William Hertling Runtime updating of virtual machine class files
US7000229B2 (en) * 2002-07-24 2006-02-14 Sun Microsystems, Inc. Method and system for live operating environment upgrades
US20060218544A1 (en) * 2005-03-25 2006-09-28 Microsoft Corporation Mechanism to store information describing a virtual machine in a virtual disk image
US20080243840A1 (en) * 2007-03-29 2008-10-02 Microsoft Corporation Comparing data sets through identification of matching blocks
US7516450B2 (en) * 2002-09-24 2009-04-07 Ricoh Company, Ltd. Remote management system, intermediary apparatus therefor, and method of updating software in the intermediary apparatus
US20090113408A1 (en) * 2007-10-30 2009-04-30 Telefonaktiebolaget Lm Ericsson (Publ) System synchronization in cluster
US20090150872A1 (en) * 2006-07-04 2009-06-11 George Russell Dynamic code update
US7836442B2 (en) * 2007-03-15 2010-11-16 Lenovo (Singapore) Pte. Ltd. Out-of-band patch management system
US20110072254A1 (en) * 2008-06-30 2011-03-24 Ming Kuang Method and system for secured dynamic bios update
US8146073B2 (en) * 2004-09-30 2012-03-27 Microsoft Corporation Updating software while it is running
US8205194B2 (en) * 2007-06-29 2012-06-19 Microsoft Corporation Updating offline virtual machines or VM images
US8245217B2 (en) * 2007-10-12 2012-08-14 Microsoft Corporation Management of software and operating system updates required for the process of creating a virtual machine facsimile of an existing physical or virtual machine
US8266576B2 (en) * 2006-08-02 2012-09-11 Moka5, Inc. Sharing live appliances
US8544016B2 (en) * 2008-05-30 2013-09-24 Oracle International Corporation Rebuilding a first and second image based on software components having earlier versions for one or more appliances and performing a first and second integration test for each respective image in a runtime environment
US20130282994A1 (en) * 2012-03-14 2013-10-24 Convergent.Io Technologies Inc. Systems, methods and devices for management of virtual memory systems
US8607208B1 (en) * 2008-10-01 2013-12-10 Oracle International Corporation System and methods for object code hot updates
US8707287B2 (en) * 2009-12-18 2014-04-22 Syddansk Universitet Method, computer program product, and system for non-blocking dynamic update of statically typed class-based object-oriented software
US8745614B2 (en) * 2011-05-13 2014-06-03 Lsi Corporation Method and system for firmware upgrade of a storage subsystem hosted in a storage virtualization environment
US8776053B2 (en) * 2009-09-25 2014-07-08 Oracle International Corporation System and method to reconfigure a virtual machine image suitable for cloud deployment
US8819660B2 (en) * 2011-06-29 2014-08-26 Microsoft Corporation Virtual machine block substitution
US9021459B1 (en) * 2011-09-28 2015-04-28 Juniper Networks, Inc. High availability in-service software upgrade using virtual machine instances in dual control units of a network device
US20150220324A1 (en) * 2014-02-03 2015-08-06 International Business Machines Corporation Updating software products on virtual machines with software images of new levels

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19617976A1 (en) * 1996-05-06 1997-11-13 Philips Patentverwaltung Communication system with means for exchanging software processes
US5987477A (en) * 1997-07-11 1999-11-16 International Business Machines Corporation Parallel file system and method for parallel write sharing
US6397384B1 (en) * 1998-12-18 2002-05-28 Adobe Systems Incorporated Run-time addition of interfaces
US7168062B1 (en) * 1999-04-26 2007-01-23 Objectbuilders, Inc. Object-oriented software system allowing live modification of an application
US6915513B2 (en) * 2001-11-29 2005-07-05 Hewlett-Packard Development Company, L.P. System and method for dynamically replacing code
US8336044B2 (en) * 2002-10-09 2012-12-18 Rpx Corporation Method and system for deploying a software image
US7784044B2 (en) 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
US7222339B2 (en) * 2003-06-13 2007-05-22 Intel Corporation Method for distributed update of firmware across a clustered platform infrastructure
US7533377B2 (en) * 2003-09-29 2009-05-12 International Business Machines Corporation Achieving autonomic behavior in an operating system via a hot-swapping mechanism
US7451443B2 (en) 2003-10-01 2008-11-11 Hewlett-Packard Development Company, L.P. Online computer maintenance utilizing a virtual machine monitor
US7890946B2 (en) * 2004-05-11 2011-02-15 Microsoft Corporation Efficient patching
GB0414983D0 (en) * 2004-07-03 2004-08-04 Ibm A method for replacing code in a running object oriented program
US7627866B2 (en) 2004-12-15 2009-12-01 Bea Systems, Inc. Systems and methods for dynamic application patching
US8387037B2 (en) * 2005-01-28 2013-02-26 Ca, Inc. Updating software images associated with a distributed computing system
US20060184937A1 (en) 2005-02-11 2006-08-17 Timothy Abels System and method for centralized software management in virtual machines
US7818736B2 (en) * 2005-09-14 2010-10-19 International Business Machines Corporation Dynamic update mechanisms in operating systems
US8561050B2 (en) * 2005-11-10 2013-10-15 Hewlett-Packard Development Company, L.P. Method and system for updating an application
US7565519B1 (en) * 2006-03-23 2009-07-21 Netapp, Inc. System and method for automatically upgrading/reverting configurations across a plurality of product release lines
US8108855B2 (en) * 2007-01-02 2012-01-31 International Business Machines Corporation Method and apparatus for deploying a set of virtual software resource templates to a set of nodes
JP4940967B2 (en) * 2007-01-30 2012-05-30 富士通株式会社 Storage system, storage device, firmware hot replacement method, firmware hot swap program
US8656386B1 (en) * 2007-03-13 2014-02-18 Parallels IP Holdings GmbH Method to share identical files in a common area for virtual machines having the same operating system version and using a copy on write to place a copy of the shared identical file in a private area of the corresponding virtual machine when a virtual machine attempts to modify the shared identical file
US8539468B2 (en) * 2008-02-18 2013-09-17 International Business Machines Corporation System and methods for replacing software application classes using transparent object adapters
US8631397B2 (en) 2008-03-31 2014-01-14 Microsoft Corporation Virtualized application image patching
CN102037444B (en) * 2008-05-20 2014-07-30 思杰系统有限公司 Methods and systems for patching multiple disk images derived from a common base disk image
US8627312B2 (en) * 2008-08-28 2014-01-07 Netapp, Inc. Methods and systems for integrated storage and data management using a hypervisor
US8261247B2 (en) * 2008-10-01 2012-09-04 Oracle International Corporation Method of modifying code of a running computer program based on symbol values discovered from comparison of running code to corresponding object code
US8468516B1 (en) * 2008-12-19 2013-06-18 Juniper Networks, Inc. Creating hot patches for embedded systems
US8245223B2 (en) * 2008-12-23 2012-08-14 Microsoft Corporation Networked deployment of multi-application customizations
US8117434B2 (en) * 2008-12-31 2012-02-14 Schneider Electric USA, Inc. Component configuration mechanism for rebooting
US20100180272A1 (en) * 2009-01-15 2010-07-15 Kevin Kettler System For Enabling Virtual Services On A Business And A Consumer Device
US8443156B2 (en) * 2009-03-27 2013-05-14 Vmware, Inc. Virtualization system using hardware assistance for shadow page table coherence
US8316120B2 (en) * 2010-02-02 2012-11-20 Microsoft Corporation Applicability detection using third party target state
US8505003B2 (en) * 2010-04-28 2013-08-06 Novell, Inc. System and method for upgrading kernels in cloud computing environments
US9009663B2 (en) * 2010-06-01 2015-04-14 Red Hat, Inc. Cartridge-based package management
US20120117555A1 (en) * 2010-11-08 2012-05-10 Lsi Corporation Method and system for firmware rollback of a storage device in a storage virtualization environment

Patent Citations (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020188935A1 (en) * 2001-06-11 2002-12-12 William Hertling Runtime updating of virtual machine class files
US7000229B2 (en) * 2002-07-24 2006-02-14 Sun Microsystems, Inc. Method and system for live operating environment upgrades
US7516450B2 (en) * 2002-09-24 2009-04-07 Ricoh Company, Ltd. Remote management system, intermediary apparatus therefor, and method of updating software in the intermediary apparatus
US8146073B2 (en) * 2004-09-30 2012-03-27 Microsoft Corporation Updating software while it is running
US20060218544A1 (en) * 2005-03-25 2006-09-28 Microsoft Corporation Mechanism to store information describing a virtual machine in a virtual disk image
US20090150872A1 (en) * 2006-07-04 2009-06-11 George Russell Dynamic code update
US8266576B2 (en) * 2006-08-02 2012-09-11 Moka5, Inc. Sharing live appliances
US7836442B2 (en) * 2007-03-15 2010-11-16 Lenovo (Singapore) Pte. Ltd. Out-of-band patch management system
US20080243840A1 (en) * 2007-03-29 2008-10-02 Microsoft Corporation Comparing data sets through identification of matching blocks
US8205194B2 (en) * 2007-06-29 2012-06-19 Microsoft Corporation Updating offline virtual machines or VM images
US8245217B2 (en) * 2007-10-12 2012-08-14 Microsoft Corporation Management of software and operating system updates required for the process of creating a virtual machine facsimile of an existing physical or virtual machine
US20090113408A1 (en) * 2007-10-30 2009-04-30 Telefonaktiebolaget Lm Ericsson (Publ) System synchronization in cluster
US8544016B2 (en) * 2008-05-30 2013-09-24 Oracle International Corporation Rebuilding a first and second image based on software components having earlier versions for one or more appliances and performing a first and second integration test for each respective image in a runtime environment
US20110072254A1 (en) * 2008-06-30 2011-03-24 Ming Kuang Method and system for secured dynamic bios update
US8607208B1 (en) * 2008-10-01 2013-12-10 Oracle International Corporation System and methods for object code hot updates
US8776053B2 (en) * 2009-09-25 2014-07-08 Oracle International Corporation System and method to reconfigure a virtual machine image suitable for cloud deployment
US8707287B2 (en) * 2009-12-18 2014-04-22 Syddansk Universitet Method, computer program product, and system for non-blocking dynamic update of statically typed class-based object-oriented software
US8745614B2 (en) * 2011-05-13 2014-06-03 Lsi Corporation Method and system for firmware upgrade of a storage subsystem hosted in a storage virtualization environment
US8819660B2 (en) * 2011-06-29 2014-08-26 Microsoft Corporation Virtual machine block substitution
US9021459B1 (en) * 2011-09-28 2015-04-28 Juniper Networks, Inc. High availability in-service software upgrade using virtual machine instances in dual control units of a network device
US20130282994A1 (en) * 2012-03-14 2013-10-24 Convergent.Io Technologies Inc. Systems, methods and devices for management of virtual memory systems
US20150220324A1 (en) * 2014-02-03 2015-08-06 International Business Machines Corporation Updating software products on virtual machines with software images of new levels

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
Brasser, et al., "Swap and Play Live Updating Hypervisors and its Application to Xen"; 2014 ACM; [retrieved on Dec. 8, 2015]; Retrieved from Internet ;pp. 33-44. *
Brasser, et al., "Swap and Play Live Updating Hypervisors and its Application to Xen"; 2014 ACM; [retrieved on Dec. 8, 2015]; Retrieved from Internet <URL:http://dl.acm.org/citation.cfm?id=2664173&CFID=565835148&CFTOKEN=92651070>;pp. 33-44. *
Chen, et al., "Live Updating Operating Systems Using Virtualization", 2006 ACM; [retrieved on Dec. 8, 2015]; Retrieved from Internet ;pp. 35-44. *
Chen, et al., "Live Updating Operating Systems Using Virtualization", 2006 ACM; [retrieved on Dec. 8, 2015]; Retrieved from Internet <URL:http://dl.acm.org/citation.cfm?id=1134767&CFID=565835148&CFTOKEN=92651070>;pp. 35-44. *
Knittel, "A parallel algorithm for scientific visualization", 1996 IEEE; [retrieved on Dec. 8, 2015]; Retrieved from Internet ;pp. II-116-II123. *
Knittel, "A parallel algorithm for scientific visualization", 1996 IEEE; [retrieved on Dec. 8, 2015]; Retrieved from Internet <URL:http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=537390>;pp. II-116-II123. *
Wan, et al., "An Image Management System Implemented on Open-source Cloud Platform"; 2011 IEEE; [retrieved on Dec. 8, 2015]; Retrieved from Internet ;pp. 2064-2070. *
Wan, et al., "An Image Management System Implemented on Open-source Cloud Platform"; 2011 IEEE; [retrieved on Dec. 8, 2015]; Retrieved from Internet <URL:http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6651111>;pp. 2064-2070. *

Also Published As

Publication number Publication date
US20130007733A1 (en) 2013-01-03
US8819660B2 (en) 2014-08-26
US20140289720A1 (en) 2014-09-25

Similar Documents

Publication Publication Date Title
US10073713B2 (en) Virtual machine migration
US10437727B2 (en) Transparent host-side caching of virtual disks located on shared storage
US10289435B2 (en) Instruction set emulation for guest operating systems
US9430223B2 (en) Live operating system update mechanisms
US10007463B2 (en) Online virtual machine disk migration
US9471365B2 (en) Techniques for performing virtual machine software upgrades using virtual disk swapping
US9239814B2 (en) System and method for creating or reconfiguring a virtual server image for cloud deployment
JP2017045477A (en) Virtual disk storage techniques
US9405567B2 (en) Method and apparatus for supporting address translation in a multiprocessor virtual machine environment using tracking data to eliminate interprocessor interrupts
US8769226B2 (en) Discovering cluster resources to efficiently perform cluster backups and restores
US20180101452A1 (en) Memory first live snapshot
US7395405B2 (en) Method and apparatus for supporting address translation in a virtual machine environment
US8099568B2 (en) Separate swap files corresponding to different virtual machines in a host computer system
US9547346B2 (en) Context agent injection using virtual machine introspection
US8739160B1 (en) Methods and systems for safe execution of guest code in virtual machine context
CA2648761C (en) Converting machines to virtual machines
US9489389B2 (en) System and method for maintaining cache coherency
US8489552B1 (en) Generic granular restore of application data from a volume image backup
US8521504B1 (en) Method and apparatus for managing registers in a binary translator
JP5657121B2 (en) On-demand image streaming for virtual machines
US8683466B2 (en) System and method for generating a virtual desktop
US9020801B2 (en) Cluster-based operating system-agnostic virtual computing system
US9928091B2 (en) Techniques for streaming virtual machines from a server to a host
US9875115B2 (en) Memory-preserving reboot
US8302091B2 (en) Installation of a bootable image for modifying the operational environment of a computing system

Legal Events

Date Code Title Description
AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034747/0417

Effective date: 20141014

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:039025/0454

Effective date: 20141014

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4