US8819660B2 - Virtual machine block substitution - Google Patents
Virtual machine block substitution Download PDFInfo
- Publication number
- US8819660B2 US8819660B2 US13/171,443 US201113171443A US8819660B2 US 8819660 B2 US8819660 B2 US 8819660B2 US 201113171443 A US201113171443 A US 201113171443A US 8819660 B2 US8819660 B2 US 8819660B2
- Authority
- US
- United States
- Prior art keywords
- virtual machine
- block
- blocks
- operating system
- guest operating
- 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, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Definitions
- VMs virtual machines
- 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.
- 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).
- 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.
- the guest operating system may be forced to flush from memory and cache executable code replaced by the substitution block.
- 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.
- 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 .
- each virtual machine 114 typically has an associated virtual disk image and a guest operating system.
- 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 ServerTM, VMWare ESX ServerTM, Xen, Oracle VMTM, 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 .
- VMM virtual machine monitor
- the term “virtual machine” refers to a system-type virtual machine that simulates any specific hardware architecture (e.g., ⁇ 86) 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 .
- 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.
- 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.
- a virtual machine 114 VM
- the virtualization layer identifies an associated virtual machine image 140 .
- 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 .
- 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 .
- 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 .
- FIG. 3 shows a process for substituting blocks into an executing virtual machine.
- substitution blocks are identified. This may be accomplished in a number of ways.
- 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 InstallerTM file) to update an operating system or software installed thereon, including modifying a binary machine executable file.
- a patching process e.g., a Microsoft InstallerTM 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.
- tainted block(s) blocks containing the modified code
- a same block in the first and second virtual machine image e.g. block N
- 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.
- the substitution blocks may be in the form of a difference disk or delta disk, details of which are known and described elsewhere.
- the virtual machine images may be dynamic virtual disks that expand in size as needed.
- 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.
- 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.
- 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.
- 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.
- the virtualization layer informs the guest operating system by a signal or message, possibly passed through a virtual machine bus or the like.
- 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.
- substitution blocks may contain customization information, which is specialized information to target or facilitation substitution.
- a substation block may contain the name of the machine or may specify various machine configuration settings.
- substitution information is used to update a setting or state of the guest that is persisted in the corresponding virtual machine image.
- 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.
- 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.
- 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-
- 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 .
- a patch tool configured to read the format of the virtual machine images
- 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.
- the modified blocks 196 are copied into the virtual machine image 220 .
- the tainted block list 200 is used to substitute in the modified blocks 196 for corresponding pre-existing outdated blocks.
- the modified blocks 196 are effectively copied in by placing them in a difference-disk without explicitly overwriting old blocks.
- the guest operating system 226 may implicitly or explicitly begin to access data, including possibly executable code, in the modified blocks 196 .
- 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 196 A may contain a portion of executable code 240 A, for instance machine instructions for a processor of the relevant host.
- the executable code 240 A originated from the patch 192 .
- the substitution block 196 A is small and contains only patched/new executable code.
- the substitution block 196 A may contain some files or other data that has not changed (i.e., a file that was not changed by the patch 192 ).
- the hypervisor 242 updates the target virtual machine image 220 with the substitution block 196 A, which replaces a previous block 244 .
- the code 240 A becomes available within the target virtual machine image 220 as code 240 B (now a part of the virtual machine image 220 of the executing virtual machine 222 ).
- the code 240 B is accessed by the guest operating system 226 .
- the code 240 B is paged into physical memory 246 by the virtualization layer, forming in-memory code 240 C.
- the in-memory code 240 C backs code 240 D mapped in the virtual memory address space of the guest operating system 226 .
- any of the involved components may be modified or augmented to force out old code and force in new code.
- 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 240 B into physical memory 246 as code 240 C), etc.
- 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.
- an appropriately enlightened operating system may float up to the hypervisor information about the relevant files and or memory.
- the substitution block 196 A when the substitution block 196 A 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 196 A. 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.
- 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.
- the live-patching technique discussed above may be used without regard for the underlying operating system.
- patching may be performed outside the ordinary mechanisms of virtual machine control and ownership.
- 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.
- Some embodiments may be more readily implemented when update blocks contain read-only files.
- 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.
- RAM random-access memory
- CPU central processing unit
- 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.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
Description
Claims (20)
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 |
---|---|---|---|
US13/171,443 US8819660B2 (en) | 2011-06-29 | 2011-06-29 | Virtual machine block substitution |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/298,902 Continuation US9317279B2 (en) | 2011-06-29 | 2014-06-07 | Virtual machine block substitution |
Publications (2)
Publication Number | Publication Date |
---|---|
US20130007733A1 US20130007733A1 (en) | 2013-01-03 |
US8819660B2 true US8819660B2 (en) | 2014-08-26 |
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 After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/298,902 Active US9317279B2 (en) | 2011-06-29 | 2014-06-07 | Virtual machine block substitution |
Country Status (1)
Country | Link |
---|---|
US (2) | US8819660B2 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100306770A1 (en) * | 2009-05-31 | 2010-12-02 | Shahar Frank | Method and apparatus for swapping virtual machine memory |
US20140188807A1 (en) * | 2012-04-27 | 2014-07-03 | University Of British Columbia | De-duplicated virtual machine image transfer |
US20140289720A1 (en) * | 2011-06-29 | 2014-09-25 | Microsoft Corporation | Virtual Machine Block Substitution |
CN109688180A (en) * | 2017-10-19 | 2019-04-26 | 阿里巴巴集团控股有限公司 | A kind of cloud service method for upgrading software and device based on mirror image |
US10776150B2 (en) | 2018-10-30 | 2020-09-15 | Red Hat, Inc. | Dynamically updating virtual central processing units |
US11934819B2 (en) | 2021-03-26 | 2024-03-19 | Target Brands, Inc. | Bare-metal deployment |
US12056514B2 (en) | 2021-06-29 | 2024-08-06 | Microsoft Technology Licensing, Llc | Virtualization engine for virtualization operations in a virtualization system |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
US11347498B2 (en) * | 2013-02-26 | 2022-05-31 | 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 |
US9736179B2 (en) * | 2013-09-30 | 2017-08-15 | Fireeye, Inc. | System, apparatus and method for using malware analysis results to drive adaptive instrumentation of virtual machines to improve exploit detection |
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 |
US11119745B2 (en) * | 2014-11-10 | 2021-09-14 | 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 |
US10747572B2 (en) * | 2016-09-30 | 2020-08-18 | International Business Machines Corporation | Computing system including enhanced application performance based on last completed operation sequence value |
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 |
US11144412B2 (en) * | 2017-06-05 | 2021-10-12 | Vmware, Inc. | Virtual machine image file synchronization using delta bitmaps and delta files |
US20230010516A1 (en) * | 2021-07-06 | 2023-01-12 | Vmware, Inc. | Input/output (i/o) quiescing for sequential ordering of operations in a write-ahead-log (wal)-based storage system |
US12014186B2 (en) * | 2022-03-25 | 2024-06-18 | Sap Se | Reducing downtime during operating system patching |
Citations (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987477A (en) * | 1997-07-11 | 1999-11-16 | International Business Machines Corporation | Parallel file system and method for parallel write sharing |
US6634025B1 (en) * | 1996-05-06 | 2003-10-14 | Koninklijke Philips Electronics N. V. | System for exchanging software processes during execution using threads |
US20040015944A1 (en) * | 1998-12-18 | 2004-01-22 | Adobe Systems Incorporated, A Delaware Corporation | Run-time addition of interfaces |
US20040255286A1 (en) * | 2003-06-13 | 2004-12-16 | Rothman Michael A. | Method for distributed update of firmware across a clustered platform infrastructure |
US6915513B2 (en) * | 2001-11-29 | 2005-07-05 | Hewlett-Packard Development Company, L.P. | System and method for dynamically replacing code |
US7000229B2 (en) * | 2002-07-24 | 2006-02-14 | Sun Microsystems, Inc. | Method and system for live operating environment upgrades |
US20060184937A1 (en) | 2005-02-11 | 2006-08-17 | Timothy Abels | System and method for centralized software management in virtual machines |
US7168062B1 (en) * | 1999-04-26 | 2007-01-23 | Objectbuilders, Inc. | Object-oriented software system allowing live modification of an application |
US20070061372A1 (en) * | 2005-09-14 | 2007-03-15 | International Business Machines Corporation | Dynamic update mechanisms in operating systems |
US20080163194A1 (en) * | 2007-01-02 | 2008-07-03 | Daniel Manuel Dias | Method and apparatus for deploying a set of virtual software resource templates to a set of nodes |
US20080243840A1 (en) * | 2007-03-29 | 2008-10-02 | Microsoft Corporation | Comparing data sets through identification of matching blocks |
US7451443B2 (en) | 2003-10-01 | 2008-11-11 | Hewlett-Packard Development Company, L.P. | Online computer maintenance utilizing a virtual machine monitor |
US20090007105A1 (en) * | 2007-06-29 | 2009-01-01 | Microsoft Corporation | Updating Offline Virtual Machines or VM Images |
US7533377B2 (en) * | 2003-09-29 | 2009-05-12 | International Business Machines Corporation | Achieving autonomic behavior in an operating system via a hot-swapping mechanism |
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 |
US20090249324A1 (en) | 2008-03-31 | 2009-10-01 | Microsoft Corporation | Virtualized application image patching |
US7627866B2 (en) | 2004-12-15 | 2009-12-01 | Bea Systems, Inc. | Systems and methods for dynamic application patching |
US20100058335A1 (en) * | 2008-08-28 | 2010-03-04 | Weber Bret S | Methods and systems for integrated storage and data management using a hypervisor |
US20100180272A1 (en) * | 2009-01-15 | 2010-07-15 | Kevin Kettler | System For Enabling Virtual Services On A Business And A Consumer Device |
US7784044B2 (en) | 2002-12-02 | 2010-08-24 | Microsoft Corporation | Patching of in-use functions on a running computer system |
US20100250869A1 (en) * | 2009-03-27 | 2010-09-30 | Vmware, Inc. | Virtualization system using hardware assistance for shadow page table coherence |
US7890946B2 (en) * | 2004-05-11 | 2011-02-15 | Microsoft Corporation | Efficient patching |
US20110271270A1 (en) * | 2010-04-28 | 2011-11-03 | Novell, Inc. | System and method for upgrading kernels in cloud computing environments |
US20110302569A1 (en) * | 2010-06-01 | 2011-12-08 | Tobias Kunze | Facilitating the execution of web applications in the cloud |
US8104031B2 (en) * | 2007-01-30 | 2012-01-24 | Fujitsu Limited | Storage system, storage unit, and method for hot swapping of firmware |
US8117434B2 (en) * | 2008-12-31 | 2012-02-14 | Schneider Electric USA, Inc. | Component configuration mechanism for rebooting |
US8146073B2 (en) * | 2004-09-30 | 2012-03-27 | Microsoft Corporation | Updating software while it is running |
US8166470B2 (en) * | 2004-07-03 | 2012-04-24 | International Business Machines Corporation | Method for replacing code in a running object oriented program |
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 |
US8245223B2 (en) * | 2008-12-23 | 2012-08-14 | Microsoft Corporation | Networked deployment of multi-application customizations |
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 |
US8266576B2 (en) * | 2006-08-02 | 2012-09-11 | Moka5, Inc. | Sharing live appliances |
US8316120B2 (en) * | 2010-02-02 | 2012-11-20 | Microsoft Corporation | Applicability detection using third party target state |
US8336044B2 (en) * | 2002-10-09 | 2012-12-18 | Rpx Corporation | Method and system for deploying a software image |
US8387037B2 (en) * | 2005-01-28 | 2013-02-26 | Ca, Inc. | Updating software images associated with a distributed computing system |
US8464241B2 (en) * | 2008-05-20 | 2013-06-11 | Citrix Systems, Inc. | Methods and systems for patching multiple disk images derived from a common base disk image |
US8468516B1 (en) * | 2008-12-19 | 2013-06-18 | Juniper Networks, Inc. | Creating hot patches for embedded systems |
US8539468B2 (en) * | 2008-02-18 | 2013-09-17 | International Business Machines Corporation | System and methods for replacing software application classes using transparent object adapters |
US8561050B2 (en) * | 2005-11-10 | 2013-10-15 | Hewlett-Packard Development Company, L.P. | Method and system for updating an application |
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 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8205193B2 (en) * | 2001-06-11 | 2012-06-19 | Hewlett-Packard Development Company, L.P. | Runtime updating of virtual machine class files |
JP4408033B2 (en) * | 2002-09-24 | 2010-02-03 | 株式会社リコー | Remote management system |
US8370819B2 (en) * | 2005-03-25 | 2013-02-05 | 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 |
US7836442B2 (en) * | 2007-03-15 | 2010-11-16 | Lenovo (Singapore) Pte. Ltd. | Out-of-band patch management system |
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 |
US8543998B2 (en) * | 2008-05-30 | 2013-09-24 | Oracle International Corporation | System and method for building virtual appliances using a repository metadata server and a dependency resolution service |
US8117435B2 (en) * | 2008-06-30 | 2012-02-14 | Intel Corporation | 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 |
JP2013514569A (en) * | 2009-12-18 | 2013-04-25 | シダンスク ユニバーシティ | 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 |
US10019159B2 (en) * | 2012-03-14 | 2018-07-10 | Open Invention Network Llc | Systems, methods and devices for management of virtual memory systems |
GB2522677A (en) * | 2014-02-03 | 2015-08-05 | Ibm | Updating software products on virtual machines with software images of new levels thereof |
-
2011
- 2011-06-29 US US13/171,443 patent/US8819660B2/en active Active
-
2014
- 2014-06-07 US US14/298,902 patent/US9317279B2/en active Active
Patent Citations (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6634025B1 (en) * | 1996-05-06 | 2003-10-14 | Koninklijke Philips Electronics N. V. | System for exchanging software processes during execution using threads |
US5987477A (en) * | 1997-07-11 | 1999-11-16 | International Business Machines Corporation | Parallel file system and method for parallel write sharing |
US20040015944A1 (en) * | 1998-12-18 | 2004-01-22 | Adobe Systems Incorporated, A Delaware Corporation | 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 |
US7000229B2 (en) * | 2002-07-24 | 2006-02-14 | Sun Microsystems, Inc. | Method and system for live operating environment upgrades |
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 |
US20040255286A1 (en) * | 2003-06-13 | 2004-12-16 | Rothman Michael A. | 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 |
US8166470B2 (en) * | 2004-07-03 | 2012-04-24 | International Business Machines Corporation | Method for replacing code in a running object oriented program |
US8146073B2 (en) * | 2004-09-30 | 2012-03-27 | Microsoft Corporation | Updating software while it is running |
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 |
US20070061372A1 (en) * | 2005-09-14 | 2007-03-15 | 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 |
US8266576B2 (en) * | 2006-08-02 | 2012-09-11 | Moka5, Inc. | Sharing live appliances |
US20080163194A1 (en) * | 2007-01-02 | 2008-07-03 | Daniel Manuel Dias | Method and apparatus for deploying a set of virtual software resource templates to a set of nodes |
US8104031B2 (en) * | 2007-01-30 | 2012-01-24 | Fujitsu Limited | Storage system, storage unit, and method for hot swapping of firmware |
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 |
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 |
US20090007105A1 (en) * | 2007-06-29 | 2009-01-01 | Microsoft Corporation | Updating Offline Virtual Machines or VM Images |
US8539468B2 (en) * | 2008-02-18 | 2013-09-17 | International Business Machines Corporation | System and methods for replacing software application classes using transparent object adapters |
US20090249324A1 (en) | 2008-03-31 | 2009-10-01 | Microsoft Corporation | Virtualized application image patching |
US8464241B2 (en) * | 2008-05-20 | 2013-06-11 | Citrix Systems, Inc. | Methods and systems for patching multiple disk images derived from a common base disk image |
US20100058335A1 (en) * | 2008-08-28 | 2010-03-04 | Weber Bret S | 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 |
US20100250869A1 (en) * | 2009-03-27 | 2010-09-30 | 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 |
US20110271270A1 (en) * | 2010-04-28 | 2011-11-03 | Novell, Inc. | System and method for upgrading kernels in cloud computing environments |
US20110302569A1 (en) * | 2010-06-01 | 2011-12-08 | Tobias Kunze | Facilitating the execution of web applications in the cloud |
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 |
Non-Patent Citations (16)
Title |
---|
Al-Kiswany, et al., "VMFlock: Virtual Machine Co-Migration for the Cloud"; 2011 ACM; [retrieved on Feb. 18, 2014]; Retrieved from Internet ;pp. 159-170. * |
Al-Kiswany, et al., "VMFlock: Virtual Machine Co-Migration for the Cloud"; 2011 ACM; [retrieved on Feb. 18, 2014]; Retrieved from Internet <URL:http://dl.acm.org/citation.cfm?id=1996130>;pp. 159-170. * |
Chen, et al., "An Efficient Resource Management System for On-line Virtual Cluster Provision"; 2009 IEEE; [retrieved on 2-18-2014]; Retrieved from Internet ;pp72-79. * |
Chen, et al., "An Efficient Resource Management System for On-line Virtual Cluster Provision"; 2009 IEEE; [retrieved on 2-18-2014]; Retrieved from Internet <URL:http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5284146>;pp72-79. * |
Devirtualizable Virtual Machines Enabling General, Single-Node, Online Maintenance Date Published Oct. 13, 2004. |
Hicks, "Dynamic Software Updating"; 2001, Dissertation, University of Pennsylvania; [retrieved on Nov. 26, 2013]; Retrieved from Internet ;pp. 1-221. * |
Hicks, "Dynamic Software Updating"; 2001, Dissertation, University of Pennsylvania; [retrieved on Nov. 26, 2013]; Retrieved from Internet <URL :http://www.win.tue.nl/˜hmei/SoftwareUpdate/DynamicSoftwareUpdating PhDThesis.pdf>;pp. 1-221. * |
Huang, et al., "Minimizing Latency in Fetching Virtual Machine Images Based on Multi-Point Collaborative Approach"; 2013 IEEE; [retrieved on Feb. 18, 2014]; Retrieved from Internet ;pp. 262-267. * |
Huang, et al., "Minimizing Latency in Fetching Virtual Machine Images Based on Multi-Point Collaborative Approach"; 2013 IEEE; [retrieved on Feb. 18, 2014]; Retrieved from Internet <URL:http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6682076>;pp. 262-267. * |
Miedes, Dunoz-Escoi, "Dynamic Software Update"; 2012, technical Report ITI-SIDI-2012/004 of Universitat Politecnica de Valencia; [retrieved on Nov. 26, 2013]; Retrieved from Internet ;pp. 1-28. * |
Miedes, Dunoz-Escoi, "Dynamic Software Update"; 2012, technical Report ITI—SIDI-2012/004 of Universitat Politecnica de Valencia; [retrieved on Nov. 26, 2013]; Retrieved from Internet <URL:http://web.iti.upv.es/˜fmunyoz/research/pdf/TR-ITI-SIDI-2012004.pdf>;pp. 1-28. * |
Reich, et al., "VMTorrrent: Scalabale P2P Virtual machine Streaming"; 2012 ACM; [retrieved on Feb. 18, 2014]; Retrieved from Internet ;pp. 289-300. * |
Reich, et al., "VMTorrrent: Scalabale P2P Virtual machine Streaming"; 2012 ACM; [retrieved on Feb. 18, 2014]; Retrieved from Internet <URL:http://dl.acm.org/citation.cfm?id=2413176>;pp. 289-300. * |
Ruth, et al., "Autonomic Live Adaptation of Virtual Computational Environments in a Multi-Domain Infrastructure"; 2006 IEEE; [retrieved on Nov. 25, 2013]; Retrieved from Internet;pp. 5-14. * |
Ruth, et al., "Autonomic Live Adaptation of Virtual Computational Environments in a Multi-Domain Infrastructure"; 2006 IEEE; [retrieved on Nov. 25, 2013]; Retrieved from Internet<URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?Ip=&arnumber=1662376>;pp. 5-14. * |
VMware vSphere 4 Features and Benefits Compared Date Published Dec. 6, 2010. |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100306770A1 (en) * | 2009-05-31 | 2010-12-02 | Shahar Frank | Method and apparatus for swapping virtual machine memory |
US8943498B2 (en) * | 2009-05-31 | 2015-01-27 | Red Hat Israel, Ltd. | Method and apparatus for swapping virtual machine memory |
US20140289720A1 (en) * | 2011-06-29 | 2014-09-25 | Microsoft Corporation | Virtual Machine Block Substitution |
US9317279B2 (en) * | 2011-06-29 | 2016-04-19 | Microsoft Technology Licensing, Llc | Virtual machine block substitution |
US20140188807A1 (en) * | 2012-04-27 | 2014-07-03 | University Of British Columbia | De-duplicated virtual machine image transfer |
US9886352B2 (en) * | 2012-04-27 | 2018-02-06 | University Of British Columbia | De-duplicated virtual machine image transfer |
CN109688180A (en) * | 2017-10-19 | 2019-04-26 | 阿里巴巴集团控股有限公司 | A kind of cloud service method for upgrading software and device based on mirror image |
CN109688180B (en) * | 2017-10-19 | 2022-05-10 | 阿里巴巴集团控股有限公司 | Cloud service software upgrading method and device based on mirror image |
US10776150B2 (en) | 2018-10-30 | 2020-09-15 | Red Hat, Inc. | Dynamically updating virtual central processing units |
US11934819B2 (en) | 2021-03-26 | 2024-03-19 | Target Brands, Inc. | Bare-metal deployment |
US12056514B2 (en) | 2021-06-29 | 2024-08-06 | Microsoft Technology Licensing, Llc | Virtualization engine for virtualization operations in a virtualization system |
Also Published As
Publication number | Publication date |
---|---|
US20140289720A1 (en) | 2014-09-25 |
US20130007733A1 (en) | 2013-01-03 |
US9317279B2 (en) | 2016-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9317279B2 (en) | Virtual machine block substitution | |
US11886903B2 (en) | Continuous uptime of guest virtual machines during upgrade of a virtualization host device | |
US9665378B2 (en) | Intelligent boot device selection and recovery | |
US9207962B2 (en) | Virtual machine image analysis | |
US9063821B1 (en) | Method for updating operating system without memory reset | |
US8291180B2 (en) | Loose synchronization of virtual disks | |
US8776053B2 (en) | System and method to reconfigure a virtual machine image suitable for cloud deployment | |
US8949585B2 (en) | In-place conversion of virtual machine state | |
US10564996B2 (en) | Parentless virtual machine forking | |
US8185884B2 (en) | System and method for offline updation of software in virtual machine (VM) images | |
US20140359617A1 (en) | Patching a Virtual Image | |
US9558023B2 (en) | Live application mobility from one operating system level to an updated operating system level and applying overlay files to the updated operating system | |
US10860393B2 (en) | Tracking driver load and unload on windows OS | |
US12093713B2 (en) | Systems and methods for live update of operating systems and hypervisors within virtualization systems | |
US20180365046A1 (en) | Creating operating system volumes | |
US10296318B2 (en) | Offline tools upgrade for virtual machines | |
Chiang et al. | Bootstrapped migration for linux OS | |
US10365907B2 (en) | Offline tools installation for virtual machines | |
US20230236864A1 (en) | Lazy restore of virtual machines | |
Segalini | Beyond virtual machine migration for resources optimization in highly consolidated data centers | |
US20140282516A1 (en) | Providing execution access to files not installed in a virtualized space | |
WO2016190892A1 (en) | Improving performance of virtual machines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FRIES, ROBERT;PARTHASARATHY, SRIVATSAN;SIGNING DATES FROM 20110801 TO 20110808;REEL/FRAME:026753/0217 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034544/0001 Effective date: 20141014 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551) Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |