|Publication number||US7313793 B2|
|Application number||US 10/193,531|
|Publication date||Dec 25, 2007|
|Filing date||Jul 11, 2002|
|Priority date||Jul 11, 2002|
|Also published as||EP1380947A2, EP1380947A3, US7657888, US20040010787, US20080098154|
|Publication number||10193531, 193531, US 7313793 B2, US 7313793B2, US-B2-7313793, US7313793 B2, US7313793B2|
|Inventors||Eric P. Traut, Rene A. Vega|
|Original Assignee||Microsoft Corporation|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (8), Non-Patent Citations (5), Referenced by (134), Classifications (10), Legal Events (6)|
|External Links: USPTO, USPTO Assignment, Espacenet|
The present invention relates in general to the field of virtual machines and, more particularly, to a method for applying the concepts of forking and migration to virtual machines.
Computers include general purpose central processing units (CPUs) that are designed to execute a specific set of system instructions. A group of processors that have similar architecture or design specifications may be considered to be members of the same processor family. Examples of current processor families include the Motorola 680X0 processor family, manufactured by Motorola, Inc. of Phoenix, Ariz.; the Intel 80X86 processor family, manufactured by Intel Corporation of Sunnyvale, Calif.; and the PowerPC processor family, which is manufactured by Motorola, Inc. and used in computers manufactured by Apple Computer, Inc. of Cupertino, Calif. Although a group of processors may be in the same family because of their similar architecture and design considerations, processors may vary widely within a family according to their clock speed and other performance parameters.
Each family of microprocessors executes instructions that are unique to the processor family. The collective set of instructions that a processor or family of processors can execute is known as the processor's instruction set. As an example, the instruction set used by the Intel 80X86 processor family is incompatible with the instruction set used by the PowerPC processor family. The Intel 80X86 instruction set is based on the Complex Instruction Set Computer (CISC) format. The Motorola PowerPC instruction set is based on the Reduced Instruction Set Computer (RISC) format. CISC processors use a large number of instructions, some of which can perform rather complicated functions, but which require generally many clock cycles to execute. RISC processors use a smaller number of available instructions to perform a simpler set of functions that are executed at a higher rate.
The uniqueness of the processor family among computer systems also typically results in incompatibility among the other elements of hardware architecture of the computer systems. A computer system manufactured with a processor from the Intel 80X86 processor family will have a hardware architecture that is different from the hardware architecture of a computer system manufactured with a processor from the PowerPC processor family. Because of the uniqueness of the processor instruction set and a computer system's hardware architecture, application software programs are typically written to run on a particular computer system running a particular operating system.
A computer manufacturer will want to maximize its functionality by having more rather than fewer applications run on the microprocessor family associated with the computer manufacturer's product line. To expand the number of operating systems and application programs that can run on a computer system, a field of technology has developed in which a given computer having one type of CPU, called a host, will run an emulator program that allows the host computer to emulate receiving and executing the instructions of an unrelated type of CPU, called a guest. Thus, the host computer will execute an application that will cause one or more host instructions to be called in response to a given guest instruction. In some cases, the host computer can both run software designed for its own hardware architecture, other than the emulation program, and software written for computers having an unrelated hardware architecture. As a more specific example, a computer system manufactured by Apple Computer, for example, may run operating systems and programs written for PC-based computer systems. It may also be possible to use an emulator program to concurrently operate multiple incompatible operating systems on a single CPU. In this arrangement, although each operating system is incompatible with the other, an emulator program can host one of the two operating systems, allowing the otherwise incompatible operating systems to run concurrently on the same computer system.
When a guest computer system is emulated on a host computer system, the guest computer system is said to be a virtual machine, as the guest computer system exists only as a software representation of the operation of the hardware architecture of the guest computer system. The terms emulator and virtual machine are sometimes used interchangeably to denote the ability to mimic or emulate the hardware architecture of an entire computer system. As an example, the Virtual PC software created by Connectix Corporation of San Mateo, Calif. emulates an entire computer that includes an Intel 80X86 Pentium processor and various motherboard components and cards. The operation of these components is emulated in the virtual machine that is being run on the host machine. An emulator program executing on the operating system software and hardware architecture of the host computer, such as a computer system having a PowerPC processor, mimics the operation of the entire guest computer system. The emulator program acts as the interchange between the hardware architecture of the host machine and the instructions transmitted by the software running within the emulated environment.
One advantage of a virtual machine over a real machine is the ability to quickly and cheaply create multiple instances of virtual machines. If allowed by the virtual machine implementation, multiple virtual machines can exist simultaneously in a single host machine (host computer system) environment. Resources of the host machine can be divided among the various virtual machines. For example, a single host machine with four processors and 1 gigabyte of random access memory (RAM) could be divided evenly into four virtual machines, each of which is given one processor and 256 megabytes of RAM. Other resource allocation divisions are possible.
This flexible resource allocation becomes even more useful when combined with the ability to move virtual machines from one host machine to another. This allows for “load balancing” of systems. For example, if a virtual machine requires more processing power than is available on one host machine, it can be moved to another host machine that has extra capacity.
In some computing environments, it is useful to have multiple machines that are nearly identical in configuration (both hardware and software). For example, a large electronic-commerce web site such as Amazon.com has dozens or hundreds of web servers that are all nearly identical in configuration. This setup allows for easy expandability. When current capacity is inadequate, additional servers can quickly be brought on line.
Another case where nearly-identical configurations are useful is in the testing of configuration modifications. When dealing with mission-critical applications, IS managers often want to test software configuration changes before applying them to the production system. For example, if a new “security patch” was made available by Microsoft Corporation for the Windows operating system, an administrator may want to test this patch on a separate server machine before installing the patch on the production server.
The present invention in one implementation provides a method for increasing the efficiency of virtual machine processing. One step of the method is providing a parent virtual machine. Another step is temporarily suspending the parent virtual machine. Another step is forking the parent virtual machine to create a child virtual machine at a new location.
The present invention provides another method for increasing the efficiency of virtual machine processing. One step of the method is providing a parent virtual machine that is associated with stored data. Another step of the method is temporarily suspending the parent virtual machine. Another step is forking the parent virtual machine to create a child virtual machine at a new location without at least a first portion of the stored data.
Further, the present invention provides another method for increasing the efficiency of virtual machine processing. One step of the method is providing a parent virtual machine that is associated with stored data. Another step of the method is permanently suspending the parent virtual machine. Another step is migrating the parent virtual machine to create a child virtual machine at a new location without at least a first portion of the stored data.
An advantage of one implementation of the present invention is that it makes possible the forking of a virtual machine. The ability to fork increases the utility of the aforementioned multiple instances of virtual machines. Forking can, in some circumstances, create multiple instances quickly enough that most functions of and applications running on the virtual machines are not affected significantly.
Another advantage of an implementation of the present invention is that it increases the efficiency of virtual machine processing.
One implementation of the method of the present invention has the advantage of a forking time unaffected by the size of the parent virtual machine's memory. When the non-memory portion of the parent virtual machine consists of only a few hundred kilobytes of data, the forking time is about a millisecond on some systems.
If demand paging is added to the method, then total execution time may also depend on the size of the parent's memory. However, demand paging does not cause conflicts with the applications running on the parent and child virtual machines.
No one of the preceding advantages is critical to the invention. Particular implementations of the invention may achieve only a subset of the advantages. For example, one implementation of the invention may only provide the option of forking a virtual machine. Other technical advantages of the present invention will be readily apparent to one skilled in the art from the following figures, descriptions, and claims.
A more complete understanding of the present invention and advantages thereof may be acquired by referring to the following description taken in conjunction with the accompanying drawings, in which like reference numbers indicate like features, and wherein:
In the case of an emulated computer system or virtual machine, an emulation program provides an emulated operating environment in the host computer system. Shown in
Referring now to
In the present invention, the concept of forking a single process is combined with the concept of a virtual machine. The present invention allows for fast conversion of shared resources to private copies between an original virtual machine and its fork. However, resource sharing is possible only if both virtual machines are running on the same host.
Virtual machine forking can be used to quickly replicate an existing virtual machine. For example, if a user wants to test a new patch, he can fork the virtual machine and apply the patch to the non-production fork. Once the patch has been tested, it can be applied to the original copy with limited risk. Alternatively, the production and non-production virtual machines could be swapped once the testing of the patch was completed.
In step 306, it is determined whether or not the child virtual machine is accessing the memory of the parent virtual machine. If the child is accessing the parent's memory, in step 308, the child virtual machine is temporarily suspended and the piece of the parent's memory required by the child is sent from the parent to the child. If the child is not accessing the parent's memory, in step 310, pieces of the parent's memory that are not actively required by the child may be sent from the parent to the child. If step 308 or step 310 is completed, the method proceeds to step 312.
In step 312, it is determined whether or not all of the memory of the parent virtual machine has been sent to the child virtual machine. If not all of the memory has been sent, the method proceeds to step 302, described above. If all of the memory has been sent, then the demand paging method ends.
Referring now to
In the present invention, migrating is similar to forking in its implementation. As with a forked virtual machine, a migrated virtual machine can start running almost immediately after it is created, i.e. within a second or two after creation. This feature results from the use of demand paging and “copy-on-access,” wherein copy-on-access is defined as the copying of parent's memory to the child upon the child's accessing the parent's memory. Copy-on-access is an aspect of demand paging for migrating a virtual machine.
Copy-on-access is also an advantage of the present invention over existing technologies. Existing technologies save and restore an entire copy of the parent's Random Access Memory (RAM). Existing technologies' saving and restoring can take anywhere from 5 to 60 seconds, depending on the size of the memory allocated to the parent
One application of migrating a virtual machine is load balancing. Another application would be for fail-over or hardware maintenance. For example, if the hardware in the host machine requires maintenance (e.g. more memory is to be added), the virtual machine can be temporarily migrated to a backup machine, preventing downtime.
In step 312, it is determined whether or not all of the memory of the parent virtual machine has been sent to the child virtual machine. If not all of the memory has been sent, the method proceeds to step 306, described above. If all of the memory has been sent, the method proceeds to step 502. In step 502, the parent's memory is deleted. After step 502, the demand paging method ends.
The present invention is not limited in its application to the emulation of a particular computer system architecture, particularly the Intel 80X86 architecture.
Although the present invention has been described in detail, it should be understood that various changes, substitutions, and alterations can be made thereto without departing from the spirit and scope of the invention as defined by the appended claims.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5313647 *||Sep 20, 1991||May 17, 1994||Kendall Square Research Corporation||Digital data processor with improved checkpointing and forking|
|US6704764 *||Jul 14, 1998||Mar 9, 2004||Hewlett-Packard Development Company, L.P.||Method and apparatus for a servlet server class|
|US6732220 *||Apr 18, 2001||May 4, 2004||Elbrus International||Method for emulating hardware features of a foreign architecture in a host operating system environment|
|US6802062 *||May 10, 2000||Oct 5, 2004||Hitachi, Ltd.||System with virtual machine movable between virtual machine systems and control method|
|US6850953 *||Aug 23, 2000||Feb 1, 2005||Sun Microsystems, Inc.||Creating multiple sets of data by spawning a secondary virtual machine|
|US7093086 *||Mar 28, 2002||Aug 15, 2006||Veritas Operating Corporation||Disaster recovery and backup using virtual machines|
|US20020029308 *||Apr 18, 2001||Mar 7, 2002||Boris Babaian||Method for emulating hardware features of a foreign architecture in a host operating system environment|
|US20030033344 *||Aug 6, 2002||Feb 13, 2003||International Business Machines Corporation||Method and apparatus for suspending a software virtual machine|
|1||*||Casas, Jeremy et al. "MPVM: A Migration Tranparent Version of PVM." Department of Computer Science and Engineering, Oregon Graduate Institute of Science & Technology. Feb. 1995.|
|2||*||Kozuch, Michael et al. "Efficient State Transfer for Internet Suspend/Resume." Intel Corporation. May 2002.|
|3||*||Kozuch, Michael et al. "Internet Suspend/Resume." Intel Corporation. Apr. 2002.|
|4||Sapuntzakis, Constantine et al. "Optimizing the Migration of Virtual Computers." Dec. 2002.|
|5||*||U.S. Appl. No. 10/109,406, filed Mar. 28, 2002.|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US7480908 *||Jun 24, 2005||Jan 20, 2009||Azul Systems, Inc.||Segmented virtual machine transport mechanism|
|US7506338 *||Aug 30, 2004||Mar 17, 2009||International Business Machines Corporation||Method and apparatus for simplifying the deployment and serviceability of commercial software environments|
|US7536688 *||Feb 28, 2003||May 19, 2009||Azul Systems||Segmented virtual machine|
|US7577959 *||Jun 24, 2004||Aug 18, 2009||International Business Machines Corporation||Providing on-demand capabilities using virtual machines and clustering processes|
|US7657888||Dec 21, 2007||Feb 2, 2010||Microsoft Corporation||Method for forking or migrating a virtual machine|
|US7698706 *||May 20, 2005||Apr 13, 2010||International Business Machines Corporation||Methods and apparatus for implementing an integrated user interface for managing multiple virtual machines operative in a computing system|
|US7747814 *||Jun 26, 2007||Jun 29, 2010||Microsoft Corporation||Virtual machine state snapshots|
|US7761573 *||Dec 7, 2006||Jul 20, 2010||Avaya Inc.||Seamless live migration of virtual machines across optical networks|
|US7966615 *||Nov 6, 2008||Jun 21, 2011||Vmware, Inc.||Transitioning of virtual machine from replay mode to live mode|
|US8099615 *||Jun 30, 2008||Jan 17, 2012||Oracle America, Inc.||Method and system for power management in a virtual machine environment without disrupting network connectivity|
|US8108855||Sep 12, 2007||Jan 31, 2012||International Business Machines Corporation||Method and apparatus for deploying a set of virtual software resource templates to a set of nodes|
|US8108858 *||Jun 3, 2008||Jan 31, 2012||International Business Machines Corporation||Implementing an integrated user interface for managing multiple virtual machines operative in a computing system|
|US8191063||Sep 30, 2007||May 29, 2012||Symantex Corporation||Method for migrating a plurality of virtual machines by associating files and state information with a single logical container|
|US8260904 *||Mar 11, 2010||Sep 4, 2012||Vmware, Inc.||Virtual machine migration|
|US8276138||Dec 5, 2008||Sep 25, 2012||Azul Systems, Inc.||Segmented virtual machine transport mechanism|
|US8286147 *||Mar 16, 2009||Oct 9, 2012||International Business Machines Corporation||Simplifying the deployment and serviceability of commercial software environments|
|US8296551||Mar 5, 2009||Oct 23, 2012||Vmware, Inc.||Binary translator with precise exception synchronization mechanism|
|US8327350 *||Jan 2, 2007||Dec 4, 2012||International Business Machines Corporation||Virtual resource templates|
|US8336048||Dec 5, 2008||Dec 18, 2012||Azul Systems, Inc.||Reducing latency in a segmented virtual machine|
|US8352942||Aug 11, 2009||Jan 8, 2013||Fujitsu Limited||Virtual-machine control apparatus and virtual-machine moving method|
|US8356297||Mar 21, 2007||Jan 15, 2013||Azul Systems, Inc.||External data source redirection in segmented virtual machine|
|US8370473 *||Dec 16, 2009||Feb 5, 2013||International Business Machines Corporation||Live multi-hop VM remote-migration over long distance|
|US8370560||Nov 16, 2009||Feb 5, 2013||International Business Machines Corporation||Symmetric live migration of virtual machines|
|US8370802||Sep 18, 2007||Feb 5, 2013||International Business Machines Corporation||Specifying an order for changing an operational state of software application components|
|US8386825 *||Dec 13, 2011||Feb 26, 2013||Oracle America, Inc.||Method and system for power management in a virtual machine environment without disrupting network connectivity|
|US8521912 *||Nov 27, 2007||Aug 27, 2013||Broadcom Corporation||Method and system for direct device access|
|US8554900 *||Aug 30, 2012||Oct 8, 2013||Vmware, Inc.||Virtual machine migration|
|US8566824||Nov 1, 2010||Oct 22, 2013||Microsoft Corporation||Migrating a virtual machine to a target machine|
|US8607009||Jul 13, 2006||Dec 10, 2013||Microsoft Corporation||Concurrent virtual machine snapshots and restore|
|US8612971||Oct 17, 2006||Dec 17, 2013||Manageiq, Inc.||Automatic optimization for virtual systems|
|US8621274 *||May 18, 2011||Dec 31, 2013||Netapp Inc.||Virtual machine fault tolerance|
|US8631066 *||Jul 23, 2009||Jan 14, 2014||Vmware, Inc.||Mechanism for providing virtual machines for use by multiple users|
|US8635396||Nov 1, 2012||Jan 21, 2014||International Business Machines Corporation||Method for symmetric live migration of virtual machines|
|US8661211||Aug 27, 2007||Feb 25, 2014||International Business Machines Corporation||Method for migrating contents of a memory on a virtual machine|
|US8671256||Aug 27, 2007||Mar 11, 2014||International Business Machines Corporation||Migrating contents of a memory on a virtual machine|
|US8677318 *||Mar 24, 2008||Mar 18, 2014||International Business Machines Corporation||Management of composite software services|
|US8694990 *||Aug 27, 2007||Apr 8, 2014||International Business Machines Corporation||Utilizing system configuration information to determine a data migration order|
|US8706947 *||Sep 30, 2010||Apr 22, 2014||Amazon Technologies, Inc.||Virtual machine memory page sharing system|
|US8726275 *||Dec 15, 2010||May 13, 2014||International Business Machines Corporation||Selective partial cloning of virtual machines in a virtual computing environment|
|US8752045||Nov 27, 2007||Jun 10, 2014||Manageiq, Inc.||Methods and apparatus for using tags to control and manage assets|
|US8789049 *||Sep 20, 2012||Jul 22, 2014||Vmware, Inc.||Offloading operations to a replicate virtual machine|
|US8832691||Jun 7, 2012||Sep 9, 2014||Manageiq, Inc.||Compliance-based adaptations in managed virtual systems|
|US8839246||May 3, 2013||Sep 16, 2014||Manageiq, Inc.||Automatic optimization for virtual systems|
|US8850433||Jun 7, 2012||Sep 30, 2014||Manageiq, Inc.||Compliance-based adaptations in managed virtual systems|
|US8924917||Mar 20, 2013||Dec 30, 2014||Manageiq, Inc.||Methods and apparatus for storing and transmitting historical configuration data associated with information technology assets|
|US8924967||Apr 28, 2011||Dec 30, 2014||Vmware, Inc.||Maintaining high availability of a group of virtual machines using heartbeat messages|
|US8938572||Jul 29, 2013||Jan 20, 2015||Amazon Technologies, Inc.||Virtual machine memory page sharing system|
|US8949825||Oct 17, 2006||Feb 3, 2015||Manageiq, Inc.||Enforcement of compliance policies in managed virtual systems|
|US8949826 *||Nov 27, 2007||Feb 3, 2015||Managelq, Inc.||Control and management of virtual systems|
|US8977736 *||Oct 2, 2013||Mar 10, 2015||Vmware, Inc.||Virtual machine migration|
|US8984244||Nov 13, 2013||Mar 17, 2015||Microsoft Technology Licensing, Llc||Concurrent virtual machine snapshots and restore|
|US9015324||Mar 13, 2012||Apr 21, 2015||Adaptive Computing Enterprises, Inc.||System and method of brokering cloud computing resources|
|US9015703||Nov 27, 2007||Apr 21, 2015||Manageiq, Inc.||Enforcement of compliance policies in managed virtual systems|
|US9038062||Nov 27, 2007||May 19, 2015||Manageiq, Inc.||Registering and accessing virtual systems for use in a managed system|
|US9043391||Dec 21, 2012||May 26, 2015||Citrix Systems, Inc.||Capturing and restoring session state of a machine without using memory images|
|US9043454 *||Aug 26, 2009||May 26, 2015||Red Hat Israel, Ltd.||Auto suspense of virtual machine on client disconnection|
|US9075657 *||Apr 7, 2006||Jul 7, 2015||Adaptive Computing Enterprises, Inc.||On-demand access to compute resources|
|US9086917||Oct 17, 2006||Jul 21, 2015||Manageiq, Inc.||Registering and accessing virtual systems for use in a managed system|
|US9170833||Sep 8, 2014||Oct 27, 2015||Manage Iq, Inc.||Compliance-based adaptations in managed virtual systems|
|US9201653||Oct 22, 2012||Dec 1, 2015||Vmware, Inc.||Binary translator with precise exception synchronization mechanism|
|US9231886||May 5, 2015||Jan 5, 2016||Adaptive Computing Enterprises, Inc.||Simple integration of an on-demand compute environment|
|US9274949||Aug 27, 2007||Mar 1, 2016||International Business Machines Corporation||Tracking data updates during memory migration|
|US9292666||Mar 20, 2013||Mar 22, 2016||Manageiq, Inc||Methods and apparatus for locating an unauthorized virtual machine|
|US9317314 *||Jun 29, 2010||Apr 19, 2016||Microsoft Techology Licensing, Llc||Techniques for migrating a virtual machine using shared storage|
|US9323550||Jan 14, 2014||Apr 26, 2016||Vmware, Inc.||Mechanism for providing virtual machines for use by multiple users|
|US9354921 *||Feb 17, 2015||May 31, 2016||Vmware, Inc.||Virtual machine migration|
|US9438670||Mar 13, 2013||Sep 6, 2016||International Business Machines Corporation||Data replication for a virtual networking system|
|US9477520||Jul 20, 2015||Oct 25, 2016||Manageiq, Inc.||Registering and accessing virtual systems for use in a managed system|
|US9501305 *||Apr 8, 2009||Nov 22, 2016||Inernational Business Machines Corporation||System for virtualisation monitoring|
|US9529807 *||Nov 26, 2012||Dec 27, 2016||Microsoft Technology Licensing, Llc||Creating host-level application-consistent backups of virtual machines|
|US9558070||Dec 5, 2014||Jan 31, 2017||Vmware, Inc.||Maintaining high availability of a group of virtual machines using heartbeat messages|
|US9563460||Apr 20, 2015||Feb 7, 2017||Manageiq, Inc.||Enforcement of compliance policies in managed virtual systems|
|US9612919||Dec 29, 2014||Apr 4, 2017||Manageiq, Inc.||Methods and apparatus for storing and transmitting historical configuration data associated with information technology assets|
|US9697019 *||Oct 17, 2006||Jul 4, 2017||Manageiq, Inc.||Adapt a virtual machine to comply with system enforced policies and derive an optimized variant of the adapted virtual machine|
|US9710482||Feb 2, 2015||Jul 18, 2017||Manageiq, Inc.||Enforcement of compliance policies in managed virtual systems|
|US9747125||Jan 28, 2016||Aug 29, 2017||Citrix Systems, Inc.||Associating virtual machines on a server computer with particular users on an exclusive basis|
|US20040172629 *||Feb 28, 2003||Sep 2, 2004||Azul Systems||Segmented virtual machine|
|US20050289540 *||Jun 24, 2004||Dec 29, 2005||Lu Nguyen||Providing on-demand capabilities using virtual machines and clustering processes|
|US20060047974 *||Aug 30, 2004||Mar 2, 2006||Alpern Bowen L||Method and apparatus for simplifying the deployment and serviceability of commercial software environments|
|US20060085784 *||Oct 15, 2004||Apr 20, 2006||Microsoft Corporation||Systems and methods for authoring and accessing computer-based materials using virtual machines|
|US20060230149 *||Apr 7, 2006||Oct 12, 2006||Cluster Resources, Inc.||On-Demand Access to Compute Resources|
|US20060265711 *||May 20, 2005||Nov 23, 2006||International Business Machines Corporation||Methods and apparatus for implementing an integrated user interface for managing multiple virtual machines operative in a computing system|
|US20070079307 *||Sep 30, 2005||Apr 5, 2007||Puneet Dhawan||Virtual machine based network carriers|
|US20070180436 *||Dec 7, 2006||Aug 2, 2007||Franco Travostino||Seamless Live Migration of Virtual Machines across Optical Networks|
|US20070204271 *||Feb 28, 2006||Aug 30, 2007||Andrew Gaiarsa||Method and system for simulating a multi-CPU/multi-core CPU/multi-threaded CPU hardware platform|
|US20080022032 *||Jul 13, 2006||Jan 24, 2008||Microsoft Corporation||Concurrent virtual machine snapshots and restore|
|US20080070222 *||Aug 29, 2006||Mar 20, 2008||Christopher Crowhurst||Performance-Based Testing System and Method Employing Emulation and Virtualization|
|US20080098154 *||Dec 21, 2007||Apr 24, 2008||Microsoft Corporation||Method for forking or migrating a virtual machine|
|US20080126792 *||Sep 19, 2006||May 29, 2008||Herington Daniel E||Systems and methods for achieving minimal rebooting during system update operations|
|US20080133709 *||Nov 27, 2007||Jun 5, 2008||Eliezer Aloni||Method and System for Direct Device Access|
|US20080134176 *||Nov 27, 2007||Jun 5, 2008||Managelq, Inc.||Enforcement of compliance policies in managed virtual systems|
|US20080134178 *||Nov 27, 2007||Jun 5, 2008||Manageiq, Inc.||Control and management of virtual systems|
|US20080163171 *||Jan 2, 2007||Jul 3, 2008||David Michael Chess||Virtual resource templates|
|US20080163194 *||Sep 12, 2007||Jul 3, 2008||Daniel Manuel Dias||Method and apparatus for deploying a set of virtual software resource templates to a set of nodes|
|US20080168424 *||Mar 24, 2008||Jul 10, 2008||Ajay Mohindra||Management of composite software services|
|US20080201455 *||Feb 15, 2008||Aug 21, 2008||Husain Syed M Amir||Moving Execution of a Virtual Machine Across Different Virtualization Platforms|
|US20080209397 *||May 6, 2008||Aug 28, 2008||Ajay Mohindra||Method and apparatus for on-demand composition and teardown of service infrastructure|
|US20080229227 *||Jun 3, 2008||Sep 18, 2008||International Business Machines Corporation||Methods and Apparatus for Implementing an Integrated User Interface for Managing Multiple Virtual Machines Operative in a Computing System|
|US20090006728 *||Jun 26, 2007||Jan 1, 2009||Microsoft Corporation||Virtual machine state snapshots|
|US20090013029 *||Jul 3, 2007||Jan 8, 2009||Childress Rhonda L||Device, system and method of operating a plurality of virtual logical sites|
|US20090063749 *||Aug 27, 2007||Mar 5, 2009||International Business Machines Corporation||Tracking data updates during memory migration|
|US20090063750 *||Aug 27, 2007||Mar 5, 2009||International Business Machines Corporation||Migrating contents of a memory on a virtual machine|
|US20090063751 *||Aug 27, 2007||Mar 5, 2009||International Business Machines Corporation||Method for migrating contents of a memory on a virtual machine|
|US20090063752 *||Aug 27, 2007||Mar 5, 2009||International Business Machines Corporation||Utilizing data access patterns to determine a data migration order|
|US20090063753 *||Aug 27, 2007||Mar 5, 2009||International Business Machines Corporation||Method for utilizing data access patterns to determine a data migration order|
|US20090064136 *||Aug 27, 2007||Mar 5, 2009||International Business Machines Corporation||Utilizing system configuration information to determine a data migration order|
|US20090089781 *||Sep 30, 2007||Apr 2, 2009||Symantec Corporation||System for and Method of Migrating One or More Virtual Machines|
|US20090119665 *||Nov 6, 2008||May 7, 2009||Vmware, Inc.||Transitioning of virtual machine from replay mode to live mode|
|US20090172665 *||Dec 5, 2008||Jul 2, 2009||Azul Systems, Inc.||Reducing latency in a segmented virtual machine|
|US20090178035 *||Mar 16, 2009||Jul 9, 2009||International Business Machines Corporation||Simplifying the deployment and serviceability of commercial software environments|
|US20090178039 *||Dec 5, 2008||Jul 9, 2009||Azul Systems, Inc.||Segmented virtual machine transport mechanism|
|US20090271786 *||Apr 8, 2009||Oct 29, 2009||International Business Machines Corporation||System for virtualisation monitoring|
|US20090282101 *||Jul 23, 2009||Nov 12, 2009||Vmware, Inc.||Mechanism for providing virtual machines for use by multiple users|
|US20090296726 *||Jun 3, 2009||Dec 3, 2009||Brocade Communications Systems, Inc.||ACCESS CONTROL LIST MANAGEMENT IN AN FCoE ENVIRONMENT|
|US20090300614 *||Aug 11, 2009||Dec 3, 2009||Fujitsu Limited||Virtual-machine control system and virtual-machine moving method|
|US20090327781 *||Jun 30, 2008||Dec 31, 2009||Sun Microsystems, Inc.||Method and system for power management in a virtual machine environment without disrupting network connectivity|
|US20100169537 *||Mar 11, 2010||Jul 1, 2010||Vmware, Inc.||Virtual Machine Migration|
|US20110047548 *||Nov 1, 2010||Feb 24, 2011||Microsoft Corporation||Systems and Methods for a Disaster Recovery System Utilizing Virtual Machines Running on at Least Two Host Computers in Physically Different Locations|
|US20110055372 *||Aug 26, 2009||Mar 3, 2011||Vitaly Elyashev||Auto Suspense Of Virtual Machine On Client Disconnection|
|US20110119427 *||Nov 16, 2009||May 19, 2011||International Business Machines Corporation||Symmetric live migration of virtual machines|
|US20110145380 *||Dec 16, 2009||Jun 16, 2011||International Business Machines Corporation||Live multi-hop vm remote-migration over long distance|
|US20110154331 *||Dec 15, 2010||Jun 23, 2011||International Business Machines Corporation||Cloning virtual machines in a virtual computer environment|
|US20110320556 *||Jun 29, 2010||Dec 29, 2011||Microsoft Corporation||Techniques For Migrating A Virtual Machine Using Shared Storage|
|US20120089981 *||Dec 13, 2011||Apr 12, 2012||Oracle America Inc.|
|US20130013908 *||Sep 14, 2012||Jan 10, 2013||Apple Inc.||Parallelizing multiple boot images with virtual machines|
|US20130024940 *||Sep 20, 2012||Jan 24, 2013||Vmware, Inc.||Offloading operations to a replicate virtual machine|
|US20130060947 *||Aug 30, 2012||Mar 7, 2013||Vmware, Inc.||Virtual machine migration|
|US20130085994 *||Nov 26, 2012||Apr 4, 2013||Microsoft Corporation||Creating host-level application-consistent backups of virtual machines|
|US20130111127 *||Oct 28, 2011||May 2, 2013||Hitachi, Ltd.||Storage system and data processing method in storage system|
|US20140032767 *||Oct 2, 2013||Jan 30, 2014||Vmware, Inc.||Virtual machine migration|
|US20150040127 *||Aug 5, 2013||Feb 5, 2015||Amazon Technologies, Inc.||Virtual computing instance migration|
|US20150160964 *||Feb 17, 2015||Jun 11, 2015||Vmware, Inc.||Virtual machine migration|
|US20150378850 *||Sep 7, 2015||Dec 31, 2015||Netapp Inc.||Virtual machine fault tolerance|
|US20170192814 *||Mar 21, 2017||Jul 6, 2017||Vmware, Inc.||Rapid Suspend/Resume for Virtual Machines via Resource Sharing|
|U.S. Classification||718/1, 711/165, 709/201, 711/6|
|International Classification||G06F9/455, G06F9/46|
|Cooperative Classification||G06F9/45537, G06F9/4856|
|European Classification||G06F9/455H1, G06F9/48C4P2|
|Jul 11, 2002||AS||Assignment|
Owner name: CONNECTIX CORPORATION, CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:TRAUT, ERIC P.;VEGA, RENE A.;REEL/FRAME:013103/0935
Effective date: 20020710
|Jan 5, 2005||AS||Assignment|
Owner name: MICROSOFT CORPORATION, WASHINGTON
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CONNECTIX CORPORATION;REEL/FRAME:015530/0252
Effective date: 20030218
|Jun 22, 2007||AS||Assignment|
Owner name: MICROSOFT CORPORATION, WASHINGTON
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CONNECTIX CORPORATION;REEL/FRAME:019467/0893
Effective date: 20030218
|May 25, 2011||FPAY||Fee payment|
Year of fee payment: 4
|Dec 9, 2014||AS||Assignment|
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034541/0477
Effective date: 20141014
|May 26, 2015||FPAY||Fee payment|
Year of fee payment: 8