IP Library Granted Patent US 11,372,725
Granted Patent B2
US 11,372,725 · App. 16/855,873 · Granted Jun 28, 2022

Fast and optimized restore using delta information

Inventor: Rupesh Bajaj (Dewas, IN)
Assignee: Cohesity, Inc.
G06F11/1451G06F16/128G06F2201/80G06F2201/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 11,372,725
App. No.
16/855,873
Granted
Jun 28, 2022
Kind
B2
Abstract

An indication of one or more changes to file system data since a last backup snapshot is received. One or more changes to the file system data between a requested backup version and the last backup snapshot are determined based in part on differences between a first tree data structure corresponding to the requested backup version and a second tree data structure corresponding to the last backup snapshot. The differences correspond to the one or more changes to the file system data between the requested backup version and the last backup snapshot. One or more data blocks corresponding to the one or more changes to the file system data since the last backup snapshot and one or more data blocks corresponding to the one or more changes to file system data between the requested backup version and the last backup snapshot are provided to a primary system.

Claims (34)

1. A method, comprising:

receiving, at a secondary storage system, a request to restore a backup version of data blocks associated with a primary system;

receiving, at the secondary storage system from the primary system, an indication of one or more changes to file system data of the primary system since a last backup snapshot;

determining, by the secondary storage system, which data blocks to restore to the primary system by determining one or more changes to the file system data between the requested backup version and the last backup snapshot based in part on determining differences between a first tree data structure corresponding to the requested backup version and a second tree data structure corresponding to the last backup snapshot and traversing the second tree data structure corresponding to the last backup snapshot to locate one or more data blocks corresponding to the one or more changes to the file system data of the last backup snapshot that have changed since the last backup snapshot, wherein the determined differences correspond to the one or more changes to the file system data between the requested backup version and the last backup snapshot, wherein the first tree data structure corresponding to the requested backup version includes one or more data storing nodes associated with the one or more data blocks corresponding to the one or more changes to the file system data between the requested backup version and the last backup snapshot; and

restoring to the primary system the determined data blocks by providing to the primary system, the one or more data blocks corresponding to the one or more changes to the file system data of the last backup snapshot that have changed since the last backup snapshot and the one or more data blocks corresponding to the one or more changes to the file system data between the requested backup version and the last backup snapshot.

2. The method of claim 1 , wherein in response to receiving the one or more data blocks corresponding to the one or more changes to the file system data since the last backup snapshot and the one or more data blocks corresponding to the one or more changes to the file system data between the requested backup version and the last backup snapshot, the primary system applies the received data blocks to an object, virtual machine, physical entity, file system, array backup, and/or volume of the primary system.

3. The method of claim 1 , wherein the indication is received in response to an object, virtual machine, physical entity, file system, array backup, and/or volume of the primary system being corrupted.

4. The method of claim 1 , further comprising receiving a request for one or more data blocks associated with the requested backup version.

5. The method of claim 4 , wherein the request is for an entire version of the requested backup version.

6. The method of claim 5 , wherein the entire version of the requested backup version is requested in the event an object, virtual machine, physical entity, file system, array backup, and/or volume of the primary system has been corrupted beyond a threshold amount.

7. The method of claim 5 , wherein in the event the request is for the entire version of the requested backup version, one or more data blocks associated with the entire version of the requested backup version are provided to the primary system in place of the one or more data blocks corresponding to the one or more changes to the file system data since the last backup snapshot and the one or more data blocks corresponding to the one or more changes to the file system data between the requested backup version and the last backup snapshot.

8. The method of claim 1 , wherein the primary system includes a change block tracker to determine the one or more changes to the file system data of the primary system since the last backup snapshot.

9. The method of claim 1 , wherein at least one node of the second tree data structure corresponding to the last backup snapshot references at least one node of the first tree data structure corresponding to the requested backup version.

10. The method of claim 1 , wherein the second tree data structure corresponding to the last backup snapshot and the first tree data structure corresponding to the requested backup version have corresponding root nodes.

11. The method of claim 1 , wherein the one or more determined changes to the file system data between the requested backup version and the last backup snapshot includes one or more nodes that are included in the first tree data structure corresponding to the requested backup version and are not included in the second tree data structure corresponding to the last backup snapshot.

12. The method of claim 11 , wherein the one or more data blocks corresponding to the one or more changes to the file system data between the requested backup version and the last backup snapshot include one or more data blocks corresponding to the one or more nodes that are included in the first tree data structure corresponding to the requested backup version and are not included in the second tree data structure corresponding to the last backup snapshot.

13. The method of claim 1 , wherein the secondary storage system includes a plurality of storage nodes storing the one or more data blocks corresponding to the one or more changes to the file system data since the last backup snapshot and the one or more data blocks corresponding to the one or more changes to the file system data between the requested backup version and the last backup snapshot.

14. The method of claim 1 , further comprising determining that a conflict exists between the one or more data blocks corresponding to the one or more changes to the file system data since the last backup snapshot and the one or more data blocks corresponding to the one or more changes to the file system data between the requested backup version and the last backup snapshot.

15. The method of claim 14 , further comprising resolving the conflict at least in part by providing at least one data block corresponding to the one or more changes to the file system data between the requested backup version and the last backup snapshot in place of at least one data block corresponding to the one or more changes to the file system data since the last backup snapshot.

16. A computer program product, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

receiving a request to restore a backup version of data blocks associated with a primary system;

receiving an indication of one or more changes to file system data of the primary system since a last backup snapshot;

determining which data blocks to restore to the primary system by determining one or more changes to the file system data between a requested backup version and the last backup snapshot based in part on determining differences between a first tree data structure corresponding to the requested backup version and a second tree data structure corresponding to the last backup snapshot, and traversing the second tree data structure corresponding to the last backup snapshot to locate one or more data blocks corresponding to the one or more changes to the file system data of the last backup snapshot that have changed since the last backup snapshot wherein the determined differences correspond to the one or more changes to the file system data between the requested backup version and the last backup snapshot, wherein the first tree data structure corresponding to the requested backup version includes one or more data storing nodes associated with the one or more data blocks corresponding to the one or more changes to the file system data between the requested backup version and the last backup snapshot; and

restoring to the primary system the determined data blocks by providing to the primary system, the one or more data blocks corresponding to the one or more changes to the file system data of the last backup snapshot that have changed since the last backup snapshot and the one or more data blocks corresponding to the one or more changes to the file system data between the requested backup version and the last backup snapshot.

17. The computer program product of claim 16 , wherein the indication is received in response to an object, virtual machine, physical entity, file system, array backup, and/or volume of the primary system being corrupted.

18. The computer program product of claim 16 , further comprising determining that a conflict exists between the one or more data blocks corresponding to the one or more changes to the file system data since the last backup snapshot and the one or more data blocks corresponding to the one or more changes to the file system data between the requested backup version and the last backup snapshot.

19. The computer program product of claim 18 , further comprising resolving the conflict at least in part by providing at least one data block corresponding to the one or more changes to the file system data between the requested backup version and the last backup snapshot in place of at least one data block corresponding to the one or more changes to the file system data since the last backup snapshot.

20. A system, comprising:

a processor configured to:

receive a request to restore a backup version of data blocks associated with a primary system;

receive an indication of one or more changes to file system data of the primary system since a last backup snapshot;

determine which data blocks to restore to the primary system by determining one or more changes to the file system data between the requested backup version and the last backup snapshot based in part on determined differences between a first tree data structure corresponding to the requested backup version and a second tree data structure corresponding to the last backup snapshot and a traversal of the second tree data structure corresponding to the last backup snapshot to locate one or more data blocks corresponding to the one or more changes to the file system data of the last backup snapshot that have changed since the last backup snapshot, wherein the determined differences correspond to the one or more changes to the file system data between the requested backup version and the last backup snapshot, wherein the first tree data structure corresponding to the requested backup version includes one or more data storing nodes associated with the one or more data blocks corresponding to the one or more changes to the file system data between the requested backup version and the last backup snapshot; and

restore to the primary system the determined data blocks by providing to the primary system, one or more data blocks corresponding to the one or more changes to the file system data of the last backup snapshot that have changed since the last backup snapshot and the one or more data blocks corresponding to the one or more changes to the file system data between the requested backup version and the last backup snapshot; and

a memory coupled to the processor and configured to provide the processor with instructions.

Assignments (4)
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Dec 10, 2024
From: FIRST-CITIZENS BANK & TRUST COMPANY (AS SUCCESSOR TO SILICON VALLEY BANK)
To: COHESITY, INC.
Reel/Frame 069584/0498 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
SECURITY INTEREST Recorded Sep 23, 2022
From: COHESITY, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 061509/0818 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2020
From: BAJAJ, RUPESH
To: COHESITY, INC.
Reel/Frame 053004/0544 →
Continuity (3)
Continuation 16276346 · Feb 14, 2019
Continuation 15964678 · Apr 27, 2018
Related Publication 20200310919A1 · Oct 1, 2020
Cited By (16)
US 12,197,790 US 12,306,801 US 12,306,802 US 12,306,804 US 12,309,271 US 12,341,887 US 12,368,588 US 12,445,283 US 12,455,861 US 12,487,972 US 12,530,262 US 12,572,513 US 12,579,109 US 12,608,401 US 12,693,993 US 12,717,755