Buffered virtual machine replication
Abstract
Recovery points can be used for replicating a virtual machine and reverting the virtual machine to a different state. A filter driver can monitor and capture input/output commands between a virtual machine and a virtual machine disk. The captured input/output commands can be used to create a recovery point. The recovery point can be associated with a bitmap that may be used to identify data blocks that have been modified between two versions of the virtual machine. Using this bitmap, a virtual machine may be reverted or restored to a different state by replacing modified data blocks and without replacing the entire virtual machine disk.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A computer-implemented method of selecting a recovery point of a virtual machine, the computer-implemented method comprising:
receiving a first plurality of data blocks comprising:
at least one write command to write at least one data block of the first plurality of data blocks to a virtual disk of a virtual machine, and
metadata indicating an address where each data block of the first plurality of data blocks is to be written at the virtual disk;
storing the first plurality of data blocks and the corresponding metadata in a buffer, wherein the buffer comprises a first amount of space allocated to store the first plurality of data blocks; sending a second plurality of data blocks selected from the first plurality of data blocks to a recovery point management system, wherein the buffer comprises a third plurality of data blocks remaining to be sent after the second plurality of data blocks are sent to the recovery point management system; determining, after sending the second plurality of data blocks, that an amount of space remaining in the buffer does not satisfy a buffer capacity threshold at a first time; reducing a size of the third plurality of data blocks based on the determination that the amount of space remaining in the buffer does not satisfy the buffer capacity threshold by discarding data of the third plurality of data blocks while maintaining the corresponding metadata for the third plurality of data blocks; and, restoring, after the first time, the size of the third plurality of data blocks prior to sending the third plurality of data blocks to the recovery point management system.
2 . The method of claim 1 , wherein:
the first plurality of data blocks are received from a virtual machine server, and the at least one write command corresponds to a write command performed at the virtual machine server.
3 . The method of claim 1 , wherein restoring the size of each data block of the third plurality of data blocks comprises:
determining, using metadata associated with each data block of the third plurality of data blocks; and, requesting each data block from the virtual disk using the address of the data block.
4 . The method of claim 1 , wherein restoring the size of the third plurality of data blocks comprises:
determining which data block of the third plurality of data blocks is the oldest data block relative to the other data blocks of the third plurality of data blocks; and, restoring the oldest data block of the third plurality of data blocks before restoring other data blocks of the third plurality of data blocks.
5 . The method of claim 1 , wherein:
data of the first plurality of data blocks are stored in a first portion of the buffer, and metadata of the first plurality of data blocks are stored in a second portion of the buffer.
6 . The method of claim 1 , further comprising:
determining that an amount of space remaining in the buffer satisfies the buffer capacity threshold at a second time; and, storing, at the buffer, a fourth plurality of data blocks received from a virtual machine server subsequent to the second time.
7 . The method of claim 1 , wherein:
each data block of the first plurality of data blocks is associated with a sequence number, and the method further comprises:
determining that the sequence number of a data block currently being sent to the recovery point management system is a highest sequence number of the sequence numbers assigned to the data blocks of the first plurality of data blocks; and,
providing a crash consistent marker to the recovery point management system subsequent to the data block currently being sent.
8 . A system for selecting a recovery point of a virtual machine, the system comprising:
one or more non-transitory, computer-readable mediums having computer-executable instructions stored thereon; and one or more processors that, having executed the computer-executable instructions, configure the system to perform a plurality of operations comprising:
receiving a first plurality of data blocks comprising:
at least one write command to write at least one data block of the first plurality of data blocks to a virtual disk of a virtual machine, and
metadata indicating an address where each data block of the first plurality of data blocks is to be written at the virtual disk;
storing the first plurality of data blocks and the corresponding metadata in a buffer, wherein the buffer comprises a first amount of space allocated to store the first plurality of data blocks;
sending a second plurality of data blocks selected from the first plurality of data blocks to a recovery point management system, wherein the buffer comprises a third plurality of data blocks remaining to be sent after the second plurality of data blocks are sent to the recovery point management system;
determining, after sending the second plurality of data blocks, that an amount of space remaining in the buffer does not satisfy a buffer capacity threshold at a first time;
reducing a size of the third plurality of data blocks based on the determination that the amount of space remaining in the buffer does not satisfy the buffer capacity threshold by discarding data of the third plurality of data blocks while maintaining the corresponding metadata for the third plurality of data blocks; and,
restoring, after the first time, the size of the third plurality of data blocks prior to sending the third plurality of data blocks to the recovery point management system.
9 . The system of claim 8 , wherein:
the first plurality of data blocks are received from a virtual machine server, and the at least one write command corresponds to a write command performed at the virtual machine server.
10 . The system of claim 8 , wherein restoring the size of each data block of the third plurality of data blocks comprises:
determining, using metadata associated with each data block of the third plurality of data blocks; and, requesting each data block from the virtual disk using the address of the data block.
11 . The system of claim 8 , wherein restoring the size of the third plurality of data blocks comprises:
determining which data block of the third plurality of data blocks is the oldest data block relative to the other data blocks of the third plurality of data blocks; and, restoring the oldest data block of the third plurality of data blocks before restoring other data blocks of the third plurality of data blocks.
12 . The system of claim 8 , wherein:
data of the first plurality of data blocks are stored in a first portion of the buffer, and metadata of the first plurality of data blocks are stored in a second portion of the buffer.
13 . The system of claim 8 , wherein the plurality of operations further comprises:
determining that an amount of space remaining in the buffer satisfies the buffer capacity threshold at a second time; and, storing, at the buffer, a fourth plurality of data blocks received from a virtual machine server subsequent to the second time.
14 . The system of claim 8 , wherein:
each data block of the first plurality of data blocks is associated with a sequence number, and the plurality of operations further comprises:
determining that the sequence number of a data block currently being sent to the recovery point management system is a highest sequence number of the sequence numbers assigned to the data blocks of the first plurality of data blocks; and,
providing a crash consistent marker to the recovery point management system subsequent to the data block currently being sent.
15 . A non-transitory, computer-readable medium having computer-executable instructions stored thereon that, when executed by one or more processors, causes a system to perform a plurality of operations comprising:
receiving a first plurality of data blocks comprising:
at least one write command to write at least one data block of the first plurality of data blocks to a virtual disk of a virtual machine, and
metadata indicating an address where each data block of the first plurality of data blocks is to be written at the virtual disk;
storing the first plurality of data blocks and the corresponding metadata in a buffer, wherein the buffer comprises a first amount of space allocated to store the first plurality of data blocks; sending a second plurality of data blocks selected from the first plurality of data blocks to a recovery point management system, wherein the buffer comprises a third plurality of data blocks remaining to be sent after the second plurality of data blocks are sent to the recovery point management system; determining, after sending the second plurality of data blocks, that an amount of space remaining in the buffer does not satisfy a buffer capacity threshold at a first time; reducing a size of the third plurality of data blocks based on the determination that the amount of space remaining in the buffer does not satisfy the buffer capacity threshold by discarding data of the third plurality of data blocks while maintaining the corresponding metadata for the third plurality of data blocks; and, restoring, after the first time, the size of the third plurality of data blocks prior to sending the third plurality of data blocks to the recovery point management system.
16 . The non-transitory, computer-readable medium of claim 15 , wherein:
the first plurality of data blocks are received from a virtual machine server, and the at least one write command corresponds to a write command performed at the virtual machine server.
17 . The non-transitory, computer-readable medium of claim 15 , wherein restoring the size of each data block of the third plurality of data blocks comprises:
determining, using metadata associated with each data block of the third plurality of data blocks; and, requesting each data block from the virtual disk using the address of the data block.
18 . The non-transitory, computer-readable medium of claim 15 , wherein restoring the size of the third plurality of data blocks comprises:
determining which data block of the third plurality of data blocks is the oldest data block relative to the other data blocks of the third plurality of data blocks; and, restoring the oldest data block of the third plurality of data blocks before restoring other data blocks of the third plurality of data blocks.
19 . The non-transitory, computer-readable medium of claim 15 , wherein:
data of the first plurality of data blocks are stored in a first portion of the buffer, and metadata of the first plurality of data blocks are stored in a second portion of the buffer.
20 . The non-transitory, computer-readable medium of claim 15 , wherein the plurality of operations further comprises:
determining that an amount of space remaining in the buffer satisfies the buffer capacity threshold at a second time; and, storing, at the buffer, a fourth plurality of data blocks received from a virtual machine server subsequent to the second time.Join the waitlist — get patent alerts
Track US2021117294A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.