IP Library › Granted Patent US 10,073,713
Granted Patent B2
US 10,073,713 · App. 15/167,941 · Granted Sep 11, 2018

Virtual machine migration

Inventor: Michael Nelson (Alamo, CA)
Assignee: VMware, Inc.
G06F9/45558G06F3/0604G06F3/0647G06F3/0683G06F9/4856H04L47/783G06F2009/4557G06F2009/45583G06F2009/45595H04L67/148
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 10,073,713
App. No.
15/167,941
Filed
May 27, 2016
Granted
Sep 11, 2018
Kind
B2
Art Unit
2457
USPC
718/1
Abstract

A source virtual machine (VM) hosted on a source server is migrated to a destination VM on a destination server without first powering down the source VM. After optional pre-copying of the source VM's memory to the destination VM, the source VM is suspended and its non-memory state is transferred to the destination VM; the destination VM is then resumed from the transferred state. In one embodiment, the source VM memory is either paged into the destination VM on demand, or is transferred asynchronously by pre-copying and write-protecting the source VM memory, and then later transferring only the modified pages after the destination VM is resumed. In one embodiment, the source and destination servers share common storage, in which the source VM's virtual disk is stored; this avoids the need to transfer the virtual disk contents.

Claims (45)

1. A non-transitory computer-readable medium having stored therein instructions which, when executed by a processor, perform a method of migrating a source software abstraction running on a source computer to a destination computer, wherein each of the source and the destination computer is configured to support to support one or more software abstractions running thereon, each software abstraction is executable and has at least one application running therein, the method comprising:

suspending execution of the source software abstraction;

after the suspending of the source software abstraction, transferring non-memory state of the source software abstraction to the destination computer, thereby enabling execution of a destination software abstraction on the destination computer from the transferred non-memory state of the source software abstraction; and

transferring contents of source software abstraction memory to the destination computer, either while the source software abstraction is executing, or after the execution of the destination software abstraction from the transferred non-memory state of the source software abstraction.

2. The non-transitory computer-readable medium of claim 1 , the method further comprising:

executing the destination software abstraction on the destination computer from the transferred non-memory state.

3. The non-transitory computer-readable medium of claim 2 , the method further comprising:

creating the destination software abstraction before suspending the source software abstraction; and

loading the transferred non-memory state of the source software abstraction into the destination software abstraction.

4. The non-transitory computer-readable medium of claim 2 , wherein the contents of the source software abstraction memory are transferred to the destination computer after the execution of the destination software abstraction from the transferred non-memory state of the source software abstraction.

5. The non-transitory computer-readable medium of claim 2 , wherein the contents of the source software abstraction memory are transferred to the destination computer while the source software abstraction is executing, and the method further comprising:

after the suspending of the source software abstraction, retransferring to the destination computer contents of any units of the source software abstraction memory that were modified since contents of the source software abstraction memory were previously transferred from the source computer to the destination computer.

6. The non-transitory computer-readable medium of claim 5 , wherein the step of retransferring to the destination computer is performed before the execution of the destination software abstraction from the transferred non-memory state of the source software abstraction.

7. The non-transitory computer-readable medium of claim 5 , wherein the step of retransferring to the destination computer is performed after the execution of the destination software abstraction from the transferred non-memory state of the source software abstraction.

8. The non-transitory computer-readable medium of claim 2 , wherein the step of transferring contents of source software abstraction memory to the destination computer comprises:

iteratively transferring the contents of the source software abstraction memory to the destination computer while the source software abstraction is executing, wherein iteratively transferring includes retransferring to the destination computer any units of the source software abstraction memory that were modified since the source software abstraction memory was previously transferred from the source computer to the destination computer.

9. The non-transitory computer-readable medium of claim 2 , wherein the source software abstraction's non-memory state does not include contents of a source virtual disk.

10. The non-transitory computer-readable medium of claim 9 , the method further including:

storing the contents of a source virtual disk in a storage arrangement shared by both the source and destination computers; and

preparing a virtual disk of the destination software abstraction by mapping the virtual disk of the destination software abstraction to the source virtual disk in the shared storage arrangement.

11. The non-transitory computer-readable medium of claim 9 , the method further including:

transferring contents of the source virtual disk on a source storage device to a destination storage device of the destination computer, either while the source software abstraction is executing, or after the execution of the destination software abstraction from the transferred non-memory state of the source software abstraction.

12. The non-transitory computer-readable medium of claim 11 , the method further including:

wherein the contents of the source virtual disk are transferred to the destination storage device after the execution of the destination software abstraction from the transferred non-memory state of the source software abstraction.

13. The non-transitory computer-readable medium of claim 11 , wherein the contents of the source virtual disk are transferred to the destination storage device while the source software abstraction is executing, and the method further comprising:

after the suspending of the source software abstraction, transferring to the destination storage device contents of any disk blocks of the source virtual disk that were modified or added since contents of the source virtual disk were previously transferred from the source virtual disk to the destination storage device.

14. A computer system comprising:

a source computer having one or more software abstraction running thereon, each software abstraction is executable and has at least one application running therein, the one or more software abstraction including a source software abstraction;

a destination computer configured to support one or more software abstractions running thereon; and

computer software executing on the source and destination computers and implementing a method for migrating the source software abstraction to the destination computer, the method comprising:

suspending execution of the source software abstraction;

after the suspending of the source software abstraction, transferring non-memory state of the source software abstraction to the destination computer;

executing the destination software abstraction on the destination computer from the transferred non-memory state; and

transferring contents of source software abstraction memory to the destination computer, either while the source software abstraction is executing, or after the execution of the destination software abstraction from the transferred non-memory state of the source software abstraction.

15. The computer system of claim 14 , wherein the contents of the source software abstraction memory are transferred to the destination computer after the execution of the destination software abstraction from the transferred non-memory state of the source software abstraction.

16. The computer system of claim 14 , wherein the contents of the source software abstraction memory are transferred to the destination computer while the source software abstraction is executing, and the method further comprising:

after the suspending of the source software abstraction, retransferring to the destination computer contents of any units of the source software abstraction memory that were modified since contents of the source software abstraction memory were previously transferred from the source computer to the destination computer.

17. The computer system of claim 14 , wherein the step of transferring contents of source software abstraction memory to the destination computer comprises:

iteratively transferring the contents of the source software abstraction memory to the destination computer while the source software abstraction is executing, wherein iteratively transferring includes retransferring to the destination computer any units of the source software abstraction memory that were modified since the source software abstraction memory was previously transferred from the source computer to the destination computer.

18. The computer system of claim 17 , wherein the retransferring of the units of the source software abstraction memory that were modified is executed a plurality of times.

19. The computer system of claim 18 , wherein retransferring of the units of the source software abstraction memory that were modified is repeated until the number of the units is less than a threshold value, and then transferring the number of units after suspending the source software abstraction.

20. A method of migrating a source software abstraction running on a source computer to a destination computer, wherein each of the source and the destination computer is configured to support to support one or more software abstractions running thereon, each software abstraction is executable and has at least one application running therein, the method comprising:

suspending execution of the source software abstraction;

after the suspending of the source software abstraction, transferring non-memory state of the source software abstraction to the destination computer, thereby enabling execution of a destination software abstraction on the destination computer from the transferred non-memory state of the source software abstraction; and

transferring contents of source software abstraction memory to the destination computer, either while the source software abstraction is executing, or after the execution of the destination software abstraction from the transferred non-memory state of the source software abstraction.

Continuity (7)
Continuation 14624009 · Feb 17, 2015
Continuation 14044195 · Oct 2, 2013
Continuation 13599759 · Aug 30, 2012
Continuation 12721899 · Mar 11, 2010
Continuation 12352242 · Jan 12, 2009
Continuation 10319217 · Dec 12, 2002
Related Publication 20160274934A1 · Sep 22, 2016