IP Library Granted Patent US 10,474,542
Granted Patent B2
US 10,474,542 · App. 15/924,004 · Granted Nov 12, 2019

Time-based virtual machine reversion

Inventors: Amit Mitkar (Manalapan, NJ); Andrei Erofeev (Marlboro, NJ); Amit Bhaskar Ausarkar (Ocean, NJ); Ajay Venkat Nagrale (Tinton Falls, NJ)
Assignee: Commvault Systems, Inc.
G06F11/1469G06F3/064G06F3/065G06F3/067G06F3/0619G06F3/0647G06F3/0656G06F3/0664G06F9/45558G06F3/0481G06F2009/45562G06F2009/45583G06F2009/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,474,542
App. No.
15/924,004
Granted
Nov 12, 2019
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 to an earlier version of a virtual machine, the computer-implemented method comprising:

as implemented by a filter driver within a first computing system comprising one or more hardware processors and configured with computer-executable instructions,

wherein the filter driver operates between an input/output framework of a virtual machine hosted by the first computing system and a virtual disk of the virtual machine,

receiving an identification of a recovery point of the virtual machine;

at the first computing system, initiating the virtual machine in a first state, wherein the first state is more recent than a second state corresponding to the recovery point;

by the filter driver, accessing a bitmap corresponding to the recovery point,

wherein the bitmap is stored at a second computing system comprising one or more hardware processors and configured with computer-executable instructions, and

wherein the second computing system is part of a secondary storage system that is communicatively coupled to the first computing system;

identifying a set of data blocks to retrieve from the secondary storage system based at least in part on the bitmap, wherein the bitmap indicates data blocks stored in the secondary storage system that differ in content compared to corresponding data blocks of the virtual disk of the virtual machine;

to revert the virtual machine to the second state corresponding to the recovery point, initiating a data block retrieval process to retrieve the set of data blocks from the secondary storage system;

by the filter driver, receiving an input/output command from the virtual machine that references a data block from the set of data blocks, wherein the data block has yet to be retrieved from the secondary storage system; and

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

2. The computer-implemented method of claim 1 , further comprising executing the input/output command subsequent to 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 retrieval of the data block.

4. The computer-implemented method of claim 1 , further comprising prioritizing for retrieval a collocated 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 data block for retrieval 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 data block for retrieval 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 identifying the set of data blocks to retrieve comprises determining a storage location at the secondary storage system of one or more data blocks from the set of data blocks.

11. A system for reverting to an earlier version of a virtual machine, the system comprising:

a filter driver implemented on a first computing system comprising one or more hardware processors, wherein the filter driver operates between an input/output framework of a virtual machine and a virtual disk of the virtual machine to monitor and capture input/output commands between the virtual machine and the virtual disk;

a secondary storage system in communication with the first computing system, wherein the secondary storage system comprises one or more secondary storage devices, a second computing system comprising one or more hardware processors, and a bitmap corresponding to a recovery point of the virtual machine; and

wherein the filter driver is configured to:

receive an identification of the recovery point of the virtual machine;

initiate the virtual machine in a first state, the first state more recent than a second state corresponding to the recovery point;

access the bitmap corresponding to the recovery point;

identify a set of data blocks to retrieve from the secondary storage system based at least in part on the bitmap, wherein the bitmap indicates data blocks stored in the secondary storage system that differ in content compared to corresponding data blocks of the virtual disk of the virtual machine;

to revert the virtual machine to the second state corresponding to the recovery point, initiate a data block retrieval process to retrieve the set of data blocks from the secondary storage system;

capture an input/output command from the virtual machine that references a data block from the set of data blocks, wherein the data block has yet to be retrieved from the secondary storage system; and

prioritize the data block for retrieval over remaining data blocks from the set of data blocks.

12. The system of claim 11 , wherein the filter driver is further configured to permit execution of the input/output command subsequent to retrieval of the data block.

13. The system of claim 11 , wherein the filter driver is further configured to provide the virtual machine with a copy of the data block subsequent to retrieval of the data block.

14. The system of claim 11 , wherein the filter driver is further configured to prioritize for retrieval a collocated data block of the data block from the set of data blocks over the remaining data blocks from the set of data blocks.

15. The system of claim 11 , wherein the filter driver is further configured to prioritize the data block for retrieval 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 system of claim 11 , wherein the filter driver is further configured to prioritize the data block for retrieval by initiating a new retrieval thread to retrieve the data block.

17. The system of claim 11 , wherein initiating the virtual machine in the first state comprises initiating the virtual machine to a current state.

18. The system 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 system of claim 11 , wherein the filter driver is further configured to identify 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 system of claim 11 , wherein identifying the set of data blocks to retrieve comprises determining a storage location at the secondary storage system of one or more data blocks from the set of data blocks.

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 Jun 8, 2018
From: MITKAR, AMIT; EROFEEV, ANDREI; AUSARKAR, AMIT BHASKAR; NAGRALE, AJAY VENKAT
To: COMMVAULT SYSTEMS, INC.
Reel/Frame 046030/0354 →
Cited By (10)
US 12,235,744 US 12,299,467 US 12,306,725 US 12,360,942 US 12,367,107 US 12,373,308 US 12,386,711 US 12,430,214 US 12,639,173 US 12,681,817