IP Library Granted Patent US 12710973
Granted Patent B2
US 12710973 · App. 17/851,970 · Granted Aug 18, 2026

Efficiently moving virtual machines between network hosts

Inventors: Michael Tsirkin (Yokneam Illit, IL); David Gilbert (Farnborough, GB)
Assignee: Red Hat, Inc.
G06F9/45558G06F9/45545G06F2009/4557G06F2009/45583G06F2009/45595
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 12710973
App. No.
17/851,970
Granted
Aug 18, 2026
Kind
B2
Abstract

An example method may include generating a block list comprising a plurality of list items, wherein each list item identifies a respective block of a source virtual machine image, and the list items are ordered in the block list according to a timestamp of each respective block, wherein the timestamp indicates a time of a last access of the respective block, sending the block list to a destination computing device, receiving, from the destination computing device, one or more candidate blocks, determining whether the one or more candidate blocks are included in the source virtual machine image, and sending, to the destination computing device, a result indicating whether the one or more candidate blocks are included in the source virtual machine image.

Claims (59)

1 . A method comprising:

generating, by a source computing device, a block list comprising a plurality of list items, wherein each list item identifies a respective block of a source virtual machine image corresponding to a state of a first virtual machine, and the list items are ordered in the block list according to a timestamp of each respective block, wherein the timestamp indicates a time of a last access of the respective block;

deleting a list item from the block list based on a length of the block list exceeding a limit;

sending the block list to a destination computing device;

sending, to the destination computing device, a first block as referenced by a first list item;

deleting the first list item from the block list;

emptying the block list;

receiving, from the destination computing device, one or more candidate blocks;

determining whether the one or more candidate blocks are included in the source virtual machine image by identifying the one or more matching blocks, wherein the one or more matching blocks include each of the candidate blocks that matches a respective block of the source virtual machine image;

sending, to the destination computing device, a result indicating one or more matching blocks among the one or more candidate blocks that are included in the source virtual machine image;

sending, to the destination computing device, the source virtual machine image excluding the one or more matching blocks; and

causing the first virtual machine to migrate from the source computing device to the destination computing device such that a second virtual machine starts to execute on the destination computing device using the state of the first virtual machine.

2 . The method of claim 1 , wherein identifying the one or more matching blocks comprises:

identifying, for each received candidate block, the respective block of the source virtual machine image; and

comparing data stored in each received candidate block to data stored in the respective block of the source virtual machine image,

wherein the one or more matching blocks include the received candidate block if the data stored in the respective block of the source virtual machine image matches the data stored in the received candidate block.

3 . The method of claim 2 , wherein each of the one or more candidate blocks is associated with a respective block identifier, and identifying the respective block of the source virtual machine image comprises searching the source virtual machine image for a block associated with the respective block identifier.

4 . The method of claim 1 , further comprising:

receiving, from the destination computing device, an indication that the one or more matching blocks have been copied; and

responsive to receiving the indication, removing, from the block list, each list item that identifies one of the one or more matching blocks.

5 . The method of claim 1 , wherein the list items are sorted in decreasing order of recency of use of each respective block, wherein a first item at a head of the block list identifies a most recently used block of the source virtual machine image, and a second item at a tail of the block list identifies a least recently used block of the source virtual machine image.

6 . The method of claim 1 , further comprising:

identifying, using the block list, one or more first blocks including a most-recently-used block; and

sending the one or more first blocks to the destination computing device.

7 . The method of claim 6 , wherein determining whether that one or more candidate blocks located on the destination computing device are included in the source virtual machine image is performed concurrently with sending the one or more first blocks to the destination computing device.

8 . The method of claim 6 , wherein the one or more first blocks are sent in order of decreasing recency of use.

9 . The method of claim 6 , wherein the one or more first blocks are sent to the destination computing device via a network uplink, and the one or more candidate blocks are received from the destination computing device via a network downlink having greater bandwidth than the network uplink.

10 . The method of claim 6 , further comprising:

transmitting, to the destination computing device, the one or more first blocks from the source computing device; and

causing the destination computing device to store the one or more first blocks in a destination virtual machine image.

11 . The method of claim 1 , further comprising:

causing the destination computing device to copy the one or more matching blocks to a destination virtual machine image.

12 . The method of claim 11 , further comprising:

receiving, from the destination computing device, an indication that the one or more matching blocks have been copied.

13 . A system comprising:

a memory device; and

a processing device, operatively coupled to the memory device, to:

generate a block list comprising a plurality of list items, wherein each list item identifies a respective block of a source virtual machine image corresponding to a state of a first virtual machine, and the list items are ordered in the block list according to a timestamp of each respective block, wherein the timestamp indicates a time of a last access of the respective block;

delete a list item from the block list based on a length of the block list exceeding a limit;

send the block list to a destination computing device;

send, to the destination computing device, a first block as referenced by a first list item;

delete the first list item from the block list;

empty the block list;

receive, from the destination computing device, one or more candidate blocks; determine whether the one or more candidate blocks are included in the source virtual machine image by identifying the one or more matching blocks, wherein the one or more matching blocks include each of the candidate blocks that matches a respective block of the source virtual machine image;

send, to the destination computing device, a result indicating one or more matching blocks among the one or more candidate blocks that are included in the source virtual machine image;

send, to the destination computing device, the source virtual machine image excluding the one or more matching blocks; and

cause the first virtual machine to migrate from the source computing device to the destination computing device such that a second virtual machine starts to execute on the destination computing device using the state of the first virtual machine.

14 . A non-transitory machine-readable storage medium storing instructions that cause a processing device to:

generate a block list comprising a plurality of list items, wherein each list item identifies a respective block of a source virtual machine image corresponding to a state of a first virtual machine with an application, and the list items are ordered in the block list according to a timestamp of each respective block, wherein the timestamp indicates a time of a last access of the respective block;

delete a list item from the block list based on a length of the block list exceeding a limit;

send the block list to a destination computing device;

send, to the destination computing device, a first block as referenced by a first list item;

delete the first list item from the block list;

empty the block list;

receive, from the destination computing device, one or more candidate blocks;

determine whether the one or more candidate blocks are included in the source virtual machine image by identifying the one or more matching blocks, wherein the one or more matching blocks include each of the candidate blocks that matches a respective block of the source virtual machine image;

send, to the destination computing device, a result indicating one or more matching blocks among the one or more candidate blocks that are included in the source virtual machine image;

send, to the destination computing device, the source virtual machine image excluding the one or more matching blocks; and

cause the first virtual machine to migrate from the source computing device to the destination computing device such that a second virtual machine starts to execute on the destination computing device using the state of the first virtual machine.