US2021117294A1PendingUtilityA1

Buffered virtual machine replication

Assignee: COMMVAULT SYSTEMS INCPriority: Mar 24, 2017Filed: Dec 4, 2020Published: Apr 22, 2021
Est. expiryMar 24, 2037(~10.7 yrs left)· nominal 20-yr term from priority
G06F 3/0619G06F 3/064G06F 11/3006G06F 11/3034G06F 16/162G06F 11/1469G06F 16/188G06F 2009/45562G06F 11/3055G06F 2201/815G06F 2201/84G06F 11/2048G06F 3/0656G06F 16/21G06F 3/065G06F 16/164G06F 9/45558G06F 2009/45595G06F 11/1451G06F 11/324G06F 11/2038G06F 16/1734G06F 3/067G06F 11/2097G06F 2201/82
71
PatentIndex Score
0
Cited by
0
References
0
Claims

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-modified
What 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.