IP Library Granted Patent US 10,983,875
Granted Patent B2
US 10,983,875 · App. 16/590,061 · Granted Apr 20, 2021

Time-based virtual machine reversion

Inventors: Amit Mitkar (Manalapan, NJ); Andrei Erofeev (Marlboro, NJ); Amit Bhaskar Ausarkar (Ocean, NJ); Ajay Venkat Nagrale (Marlboro, NJ)
Assignee: Commvault Systems, Inc.
G06F11/1469G06F3/064G06F3/065G06F3/0619G06F3/0656G06F9/45558G06F11/3006G06F11/3034G06F11/324G06F16/21G06F16/162G06F16/164G06F16/1734G06F16/188G06F2009/45562G06F2009/45595G06F2201/815G06F2201/82G06F2201/84
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,983,875
App. No.
16/590,061
Granted
Apr 20, 2021
Kind
B2
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 (51)

1. A computer-implemented method of reverting a virtual machine to a different version, the computer-implemented method comprising:

by a first computing system comprising one or more hardware processors and computer memory, executing a filter driver that operates between a virtual machine hosted by the first computing system and a virtual disk that stores data associated with the virtual machine, wherein the filter driver captures input/output commands between the virtual machine and the virtual disk;

by the first computing system, receiving an identification of a recovery point of the virtual machine;

by the first computing system, initiating the virtual machine in a first state that differs from a second state corresponding to the recovery point;

by the filter driver, using the identification of the recovery point to access a bitmap corresponding to the recovery point,

wherein the bitmap is stored at a second computing system comprising one or more hardware processors and computer memory, and

wherein the second computing system is communicatively coupled to the first computing system, and is also communicatively coupled to one or more storage devices storing the recovery point;

by the filter driver, using the bitmap to identify a set of data blocks to retrieve from the one or more storage devices,

wherein the bitmap indicates data blocks, stored in the one or more storage devices, that differ in content compared to corresponding data blocks in the virtual disk;

by the filter driver, causing the virtual machine to revert to the second state corresponding to the recovery point by initiating a retrieval process to retrieve the set of data blocks from the one or more storage devices and to store the set of data blocks to the virtual disk;

by the filter driver, receiving a command from the virtual machine that references a data block among the set of data blocks, wherein the data block has yet to be retrieved from the one or more storage devices; and

by the filter driver, prioritizing retrieval of the data block over remaining data blocks from the set of data blocks.

2. The computer-implemented method of claim 1 , further comprising executing the command subsequent to the retrieval of the data block.

3. The computer-implemented method of claim 1 , further comprising providing the virtual machine with a copy of the data block subsequent to the retrieval of the data block.

4. The computer-implemented method of claim 1 , further comprising prioritizing for retrieval a co located data block of the data block from the set of data blocks over the remaining data blocks from the set of data blocks.

5. The computer-implemented method of claim 1 , wherein prioritizing the retrieval of the data block comprises:

pausing retrieval of the remaining data blocks from the set of data blocks;

retrieving the data block; and

resuming retrieval of the remaining data blocks subsequent to retrieving the data block.

6. The computer-implemented method of claim 1 , wherein prioritizing the retrieval of the data block comprises initiating a new retrieval thread to retrieve the data block.

7. The computer-implemented method of claim 1 , wherein initiating the virtual machine in the first state comprises initiating the virtual machine to a current state.

8. The computer-implemented method of claim 1 , wherein initiating the virtual machine in the first state comprises:

identifying a snapshot of the virtual machine that is closest in time to the recovery point; and

loading the snapshot of the virtual machine.

9. The computer-implemented method of claim 1 , wherein identifying the set of data blocks to retrieve comprises determining differences between the bitmap and a second bitmap corresponding to the first state of the virtual machine.

10. The computer-implemented method of claim 1 , wherein the virtual machine is reverted to the second state without replacing the entire virtual disk.

11. A non-transitory computer-readable medium comprising instructions that, when executed by a first computing system comprising one or more processors and computer memory, cause the first computing system to perform operations comprising:

executing a filter driver that operates between a virtual machine hosted by the first computing system and a virtual disk that stores data associated with the virtual machine, wherein the filter driver captures input/output commands between the virtual machine and the virtual disk;

activating the virtual machine in a first state;

receiving an identification of a recovery point of the virtual machine, wherein the recovery point corresponds to a second state of the virtual machine that is different from the first state;

by the filter driver, using the identification of the recovery point to access a bitmap corresponding to the recovery point, wherein the bitmap indicates data blocks that differ in content compared to corresponding data blocks in the virtual disk,

wherein the bitmap is stored at one or more of: the first computing system, and a second computing system comprising one or more hardware processors and computer memory, and

wherein the second computing system is communicatively coupled to the first computing system, and to one or more storage devices storing the recovery point;

by the filter driver, using the bitmap to identify a set of data blocks in the recovery point to be retrieved from the one or more storage devices;

by the filter driver, causing the virtual machine to revert to the second state by initiating a process to retrieve the set of data blocks from the one or more storage devices and to store the set of data blocks to the virtual disk;

by the filter driver, receiving a command from the virtual machine that references a data block among the set of data blocks, wherein the data block has yet to be retrieved from the one or more storage devices; and

by the filter driver, prioritizing retrieval of the data block over remaining data blocks from the set of data blocks.

12. The non-transitory computer-readable medium of claim 11 , wherein the filter driver permits execution of the command subsequent to the retrieval of the data block.

13. The non-transitory computer-readable medium of claim 11 , wherein the filter driver provides the virtual machine with a copy of the data block subsequent to the retrieval of the data block.

14. The non-transitory computer-readable medium of claim 11 , wherein the filter driver prioritizes retrieval of a second data block co-located with the data block over the remaining data blocks from the set of data blocks.

15. The non-transitory computer-readable medium of claim 11 , wherein the filter driver prioritizes retrieval of the data block by:

pausing retrieval of the remaining data blocks from the set of data blocks;

retrieving the data block; and

resuming retrieval of the remaining data blocks subsequent to retrieving the data block.

16. The non-transitory computer-readable medium of claim 11 , wherein the virtual machine is reverted to the second state without replacing the entire virtual disk.

17. The non-transitory computer-readable medium of claim 11 , wherein initiating the virtual machine in the first state comprises initiating the virtual machine to a current state.

18. The non-transitory computer-readable medium of claim 11 , wherein initiating the virtual machine in the first state comprises:

identifying a snapshot of the virtual machine that is closest in time to the recovery point; and

loading the snapshot of the virtual machine.

19. The non-transitory computer-readable medium of claim 11 , wherein the filter driver identifies the set of data blocks to retrieve by determining differences between the bitmap and a second bitmap corresponding to the first state of the virtual machine.

20. The non-transitory computer-readable medium of claim 11 , wherein the filter driver identifies the set of data blocks to retrieve by determining differences between the bitmap and a second bitmap corresponding to the first state of the virtual machine, and wherein the second bitmap is stored at the first computing system.

Assignments (3)
SUPPLEMENTAL CONFIRMATORY GRANT OF SECURITY INTEREST IN UNITED STATES PATENTS Recorded Apr 16, 2025
From: COMMVAULT SYSTEMS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 070864/0344 →
SECURITY INTEREST Recorded Dec 13, 2021
From: COMMVAULT SYSTEMS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 058496/0836 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 1, 2019
From: MITKAR, AMIT; EROFEEV, ANDREI; AUSARKAR, AMIT BHASKAR; NAGRALE, AJAY VENKAT
To: COMMVAULT SYSTEMS, INC.
Reel/Frame 050590/0816 →
Continuity (5)
Continuation 15924004 · Mar 16, 2018
Provisional Application 62476554 · Mar 24, 2017
Provisional Application 62476556 · Mar 24, 2017
Provisional Application 62476595 · Mar 24, 2017
Related Publication 20200034252A1 · Jan 30, 2020
Cited By (3)
US 12,299,467 US 12,373,308 US 12,430,214