IP Library Granted Patent US 8,806,480
Granted Patent B2
US 8,806,480 · App. 11/772,056 · Granted Aug 12, 2014

Virtual machine smart migration

Inventors: Nelson Sampaio Araujo, Jr. (Redmond, WA); Robert M. Fries (Kirkland, WA); Michael L. Michael (Houston, TX)
Assignee: Microsoft Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,806,480
App. No.
11/772,056
Granted
Aug 12, 2014
Kind
B2
Abstract

Migration mechanisms are disclosed herein that smartly transfer data among virtual machines, minimizing the down time of migration of such machines but maximizing the consistent state of data stored thereon. Specifically, data can be classified into three types: low volatility data (such as hard disk data), high volatility data (such a random access memory data), and immutable data (such as read only data). This data can be migrated from a source virtual machine to a target virtual machine by sending the immutable data along with the low volatility data first—before the source virtual machine has stopped itself for the migration process. Then, after the source virtual machine has stopped, high volatility data and (again) low volatility data can be sent from the source to the target. In this latter case, only differences between the low volatility data may be sent (or alternatively, new low volatility data may be sent).

Claims (54)

1. A computer system configured to transfer a virtual machine, comprising:

a processor; and

a memory coupled to the processor, the memory including instructions stored thereon that upon execution by the processor cause the computer system to at least:

run a virtual machine, the virtual machine having access to random access memory and a virtual disk;

send, while the virtual machine is running, data indicative of contents stored in the virtual disk and/or contents of the random access memory to a target computer system;

determine that a first change to the data has occurred;

send the target computer system a part of the data corresponding to the first change while the virtual machine is running, in response to determining that an amount of time needed to send the part of the data corresponding to the first change is greater than a threshold amount of time;

determine that a second change to the data has occurred;

determine that an amount of time needed to send a part of the data corresponding to the second change is less than the threshold amount of time;

stop the virtual machine in response to the determination that the amount of time needed to send a part of the data corresponding to the second change is less than the threshold amount of time; and

send, while the virtual machine is stopped, the part of the data corresponding to the second change to the target computer system.

2. The system according to claim 1 , wherein the memory further comprises instructions that upon execution cause the computer system to:

send, while the virtual machine is running, read-only data to the target computer system.

3. The system according to claim 1 , wherein said instructions that upon execution cause the computer system to determine that the amount of time needed to send a part of the data corresponding to the second change that changed is less than the threshold amount of time further comprise instructions that upon execution cause the computer system to:

determine that the amount of time is less than the threshold amount of time using information that identifies a data transfer rate.

4. The system according to claim 1 , wherein the memory further comprises instructions that upon execution cause the computer system to:

set the threshold amount of time based on a determined time of day.

5. The system according to claim 2 , wherein said instructions that upon execution cause the computer system to send, while the virtual machine is running, read-only data to the target computer system further comprise instructions that upon execution cause the computer system to:

send, while the virtual machine is running, data indicative of a parent virtual hard disk file to the target computer system.

6. The system according to claim 1 , wherein said instructions that upon execution cause the computer system to determine that the amount of time needed to send the data corresponding to the second change is less than the threshold amount of time further comprise instructions that upon execution cause the computer system to:

determine that the amount of time is less than the threshold amount of time based on an amount of down time that the virtual machine would have as a result of stopping the virtual machine to send the part of the data corresponding to the second change to the target computer system.

7. A computer-implemented method for transferring virtual machines, comprising:

running, by a computer system, a virtual machine;

sending to a target computer system, while the virtual machine is running, data stored in a virtual disk and/or stored in random access memory allocated;

determining that a first change to the data has occurred;

sending the target computer system a part of the data corresponding to the first change while the virtual machine is running, in response to determining that an estimated amount of time needed to send the part of the data corresponding to the first change is greater than a threshold amount of time;

determining that a second change to the data has occurred;

determining that an estimated amount of time needed to transfer a portion of the data corresponding to the second change is less than the threshold amount of time;

stopping the virtual machine in response to the determination that the estimated amount of time is less than the threshold amount of time; and

sending the portion of the data corresponding to the second change to the target computer system.

8. The method according to claim 7 , further comprising:

sending, while the virtual machine is running, read-only data associated with the virtual machine to the target computer system.

9. The method according to claim 7 , further comprising:

pre-caching said first data in a plurality of servers, the plurality of servers including the target computer system.

10. The method according to claim 8 , wherein sending the read-only data associated with the virtual machine further comprises:

sending, while the virtual machine is running, data indicative of a parent virtual disk file to the target computer system.

11. The method according to claim 7 , wherein determining that the estimated amount of time needed to transfer the portion of the data corresponding to the second change is less than the threshold amount of time further comprises:

determining that the estimated amount of time is less than the threshold amount of time using information that identifies a data transfer rate.

12. The method according to claim 7 , further comprising:

setting the threshold amount of time based on a determined time of day.

13. A computer-readable storage medium including instructions stored thereon that upon execution by a processor of a computer system cause the computer system to at least:

run a virtual machine, the virtual machine having access to random access memory and a virtual disk;

send, while the virtual machine is running, data stored in a virtual disk file and/or stored in the random access memory to a second computer system;

determine that a first change to the data has occurred;

send the target computer system a part of the data corresponding to the first change while the virtual machine is running, in response to determining that an estimated amount of time needed to send the part of the data corresponding to the first change is greater than a threshold time, the threshold time being based on a detected time of day;

determine that a second change to the data has occurred;

determine a second threshold time based on a second detected time of day;

determine that an estimated amount of time needed to send a part of the data corresponding to the second change is less than the determined second threshold amount of time;

stop the virtual machine in response to the determination that the estimated amount of time needed to send the part of the data corresponding to the second change is less than the determined second threshold amount of time; and

send the part of the data corresponding to the second change to the second computer system.

14. The computer-readable medium according to claim 13 , further comprising instructions that upon execution cause the computer system to:

send, while the virtual machine is running, data indicative of a read-only parent virtual hard disk file to the second computer system.

15. The computer-readable medium according to claim 13 , further comprising instructions that upon execution cause the computer system to:

determine that the estimated amount of time is less than the threshold using information that identifies a data transfer rate.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 24, 2007
From: ARAUJO, NELSON SAMPAIO, JR.; FRIES, ROBERT M.; MICHAEL, MICHAEL L.
To: MICROSOFT CORPORATION
Reel/Frame 019745/0034 →
Continuity (1)
Related Publication 20090007106A1 · Jan 1, 2009