IP Library Granted Patent US 11,086,545
Granted Patent B1
US 11,086,545 · App. 16/361,014 · Granted Aug 10, 2021

Optimizing a storage system snapshot restore by efficiently finding duplicate data

Inventors: Shobhit Dayal (San Francisco, CA); Nishant Agrawal (Santa Clara, CA); Karthik Ravichandra (Newark, CA); Gauresh Datta Rane (San Jose, CA); Anish Jain (Sunnyvale, CA)
Assignee: Tintri by DDN, Inc.
G06F3/0647G06F3/065G06F3/067G06F3/0619G06F3/0641
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,086,545
App. No.
16/361,014
Granted
Aug 10, 2021
Kind
B1
Abstract

Efficient snapshot restore is disclosed. An indication to restore a snapshot from a replication destination to a storage system is received. At least a subset of data associated with the snapshot that is already present at the storage system is determined. A restore operation of the snapshot is performed by obtaining the at least subset of the data associated with the snapshot that is already present at the storage system locally from the storage system and by obtaining the remaining data associated with the snapshot from the replication destination.

Claims (100)

1. A storage system, comprising:

a memory; and

a processor coupled to the memory and configured to:

receive an indication to restore a first snapshot stored at a replication destination from the replication destination to the storage system;

identify a second snapshot that is related to the first snapshot;

determine that a storage system copy of the second snapshot is stored locally at the storage system;

determine a first subset of data that the first snapshot shares with the storage system copy of the second snapshot and is stored locally at the storage system;

determine a second subset of data that the first snapshot does not share with the storage system copy of the second snapshot and is not stored locally at the storage system;

restore the first snapshot to the storage system including by:

reading the first subset of data from the storage system copy of the second snapshot locally from the storage system;

obtaining the second subset of data from the replication destination; and

writing the first subset of data and the second subset of data into a restored copy of the first snapshot at the storage system; and

store the indication in the memory.

2. The storage system of claim 1 , wherein to identify the second snapshot that is related to the first snapshot and to determine that the storage system copy of the second snapshot is stored locally at the storage system comprises to:

obtain a set of metadata associated with the first snapshot from the replication destination;

use the set of metadata to identify a base snapshot against which the first snapshot was deduplicated at the replication destination; and

determine that the base snapshot is available at the storage system, wherein the second snapshot comprises the base snapshot.

3. The storage system of claim 2 , wherein to determine the first subset of data that the first snapshot shares with the storage system copy of the second snapshot comprises to use the set of metadata to determine a first set of shared local data chunks between the first snapshot and the base snapshot and a second set of unique data chunks associated with the first snapshot, wherein the first subset of data comprises the first set of shared local data chunks and wherein the second subset of data comprises the second set of unique data chunks; and

wherein to restore the first snapshot to the storage system comprises to:

restore the restored copy of the first snapshot including by obtaining the first set of shared local data chunks locally from the storage system and obtaining the second set of unique data chunks associated with the first snapshot from the replication destination.

4. The storage system of claim 1 , wherein to identify the second snapshot that is related to the first snapshot comprises to:

obtain a set of metadata associated with the first snapshot from the replication destination;

use the set of metadata to identify that a base snapshot against which the first snapshot was deduplicated at the replication destination is not available at the storage system; and

use local metadata to identify an ancestor snapshot and a descendent snapshot relative to the first snapshot that are available at the storage system, wherein the second snapshot comprises the ancestor snapshot and the descendent snapshot.

5. The storage system of claim 4 , wherein the first snapshot, the ancestor snapshot, and the descendent snapshot are part of a same chain of snapshots.

6. The storage system of claim 4 , wherein to determine the first subset of data that the first snapshot shares with the storage system copy of the second snapshot comprises to:

compute chunk names from the ancestor snapshot and the descendent snapshot corresponding to data chunks identified in the set of metadata;

compare the chunk names to chunk names identified in the set of metadata to determine the first subset of data comprising a first set of shared local data chunks and the second subset of data comprising a second set of unique data chunks; and

wherein to restore the first snapshot to the storage system comprises to:

restore the first snapshot including by obtaining the first set of shared local data chunks locally from the storage system and obtaining the second set of unique data chunks associated with the first snapshot from the replication destination.

7. A method, comprising:

receiving an indication to restore a first snapshot stored at a replication destination from the replication destination to a storage system;

identifying a second snapshot that is related to the first snapshot;

determining that a storage system copy of the second snapshot is stored locally at the storage system;

determining a first subset of data that the first snapshot shares with the storage system copy of the second snapshot and is stored locally at the storage system;

determining a second subset of data that the first snapshot does not share with the storage system copy of the second snapshot and is not stored locally at the storage system; and

restoring the first snapshot to the storage system including by:

reading the first subset of data from the storage system copy of the second snapshot locally from the storage system,

obtaining the second subset of data from the replication destination; and

writing the first subset of data and the second subset of data into a restored copy of the first snapshot at the storage system.

8. The method of claim 7 , wherein identifying the second snapshot that is related to the first snapshot and determining that the storage system copy of the second snapshot is stored locally at the storage system comprises:

obtaining a set of metadata associated with the first snapshot from the replication destination;

using the set of metadata to identify a base snapshot against which the first snapshot was deduplicated at the replication destination; and

determining that the base snapshot is available at the storage system, wherein the second snapshot comprises the base snapshot.

9. The method of claim 8 , wherein determining the first subset of data that the first snapshot shares with the storage system copy of the second snapshot comprises using the set of metadata to determine a first set of shared local data chunks between the first snapshot and the base snapshot and a second set of unique data chunks associated with the first snapshot, wherein the first subset of data comprises the first set of shared local data chunks and wherein the second subset of data comprises the second set of unique data chunks; and

wherein restoring the first snapshot to the storage system comprises:

restoring the restored copy of the first snapshot including by obtaining the first set of shared local data chunks locally from the storage system and obtaining the second set of unique data chunks associated with the first snapshot from the replication destination.

10. The method of claim 7 , wherein identifying the second snapshot that is related to the first snapshot comprises:

obtaining a set of metadata associated with the first snapshot from the replication destination;

using the set of metadata to identify that a base snapshot against which the first snapshot was deduplicated at the replication destination is not available at the storage system; and

using local metadata to identify an ancestor snapshot and a descendent snapshot relative to the first snapshot that are available at the storage system, wherein the second snapshot comprises the ancestor snapshot and the descendent snapshot.

11. The method of claim 10 , wherein the first snapshot, the ancestor snapshot, and the descendent snapshot are part of a same chain of snapshots.

12. The method of claim 10 , wherein determining the first subset of data that the first snapshot shares with the storage system copy of the second snapshot comprises:

computing chunk names from the ancestor snapshot and the descendent snapshot corresponding to data chunks identified in the set of metadata;

comparing the chunk names to chunk names identified in the set of metadata to determine the first subset of data comprising a first set of shared local data chunks and the second subset of data comprising a second set of unique data chunks; and

wherein restoring the first snapshot to the storage system comprises:

restoring the first snapshot including by obtaining the first set of shared local data chunks locally from the storage system and obtaining the second set of unique data chunks associated with the first snapshot from the replication destination.

13. The method of claim 7 , wherein the second subset of data is obtained from the replication destination in units of data associated with a replication destination granularity, wherein the replication destination granularity is greater than a storage system granularity.

14. A storage system, comprising;

a processor configured to:

store a deduplication table comprising a plurality of signatures corresponding to data that is stored at the storage system, wherein the data that is stored at the storage system is stored at a storage system granularity, wherein a signature in the deduplication table is associated with a unit of data at a replication destination granularity, wherein the storage system granularity is different from the replication destination granularity;

receive an indication to restore a snapshot from a replication destination to the storage system;

obtain a set of signatures associated with objects associated with the snapshot from the replication destination;

compare the set of signatures to the deduplication table to determine at least a subset of data associated with the snapshot that is available at the storage system, including to identify an identified signature in the set of signatures that does not match any signatures in the deduplication table; and

restore the snapshot to the storage system including by obtaining the at least subset of data associated with the snapshot that is available at the storage system from the storage system, including to restore the snapshot to the storage system by obtaining an object corresponding to the identified signature from the replication destination, wherein the object comprises a data chunk associated with the snapshot; and

a memory coupled to the processor and configured to store the indication.

15. The storage system of claim 14 , wherein the replication destination granularity is greater than the storage system granularity.

16. The storage system of claim 14 , wherein the deduplication table stores for the signature, corresponding location information associated with where the associated unit of data at the replication destination granularity is stored at the storage system.

17. The storage system of claim 14 , wherein the processor is further configured to:

detect a change in data;

generate a new signature corresponding to data included in a range of offsets associated with the replication destination granularity, wherein the range of offsets includes an offset associated with the change in data; and

update the deduplication table using the range of offsets and the new signature.

18. A method, comprising;

storing a deduplication table comprising a plurality of signatures corresponding to data that is stored at a storage system, wherein the data that is stored at the storage system is stored at a storage system granularity, wherein a signature in the deduplication table is associated with a unit of data at a replication destination granularity, wherein the storage system granularity is different from the replication destination granularity;

receiving an indication to restore a snapshot from a replication destination to the storage system;

obtaining a set of signatures associated with objects associated with the snapshot from the replication destination;

comparing the set of signatures to the deduplication table to determine at least a subset of data associated with the snapshot that is available at the storage system, including by identifying an identified signature in the set of signatures that does not match any signatures in the deduplication table; and

restoring the snapshot to the storage system including by obtaining the at least subset of data associated with the snapshot that is available at the storage system from the storage system, including by restoring the snapshot to the storage system by obtaining an object corresponding to the identified signature from the replication destination, wherein the object comprises a data chunk associated with the snapshot.

19. The method of claim 18 , wherein the replication destination granularity is greater than the storage system granularity.

20. The method of claim 18 , wherein the deduplication table stores for the signature, corresponding location information associated with where the associated unit of data at the replication destination granularity is stored at the storage system.

21. The method of claim 18 , further comprising:

detecting a change in data;

generating a new signature corresponding to data included in a range of offsets associated with the replication destination granularity, wherein the range of offsets includes an offset associated with the change in data; and

updating the deduplication table using the range of offsets and the new signature.

22. A computer program product, the computer program product being embodied in a computer readable storage medium and comprising computer instructions for:

receiving an indication to restore a first snapshot stored at a replication destination from the replication destination to a storage system;

identifying a second snapshot that is related to the first snapshot;

determining that a storage system copy of the second snapshot is stored locally at the storage system;

determining a first subset of data that the first snapshot shares with the storage system copy of the second snapshot and is stored locally at the storage system;

determining a second subset of data that the first snapshot does not share with the storage system copy of the second snapshot and is not stored locally at the storage system; and

restoring the first snapshot to the storage system including by:

reading the first subset of data from the storage system copy of the second snapshot locally from the storage system;

obtaining the second subset of data from the replication destination; and

writing the first subset of data and the second subset of data into a restored copy of the first snapshot at the storage system.

23. A computer program product, the computer program product being embodied in a computer readable storage medium and comprising computer instructions for:

storing a deduplication table comprising a plurality of signatures corresponding to data that is stored at a storage system, wherein the data that is stored at the storage system is stored at a storage system granularity, wherein a signature in the deduplication table is associated with a unit of data at a replication destination granularity, wherein the storage system granularity is different from the replication destination granularity;

receiving an indication to restore a snapshot from a replication destination to the storage system;

obtaining a set of signatures associated with objects associated with the snapshot from the replication destination;

comparing the set of signatures to the deduplication table to determine at least a subset of data associated with the snapshot that is available at the storage system, including by identifying an identified signature in the set of signatures that does not match any signatures in the deduplication table; and

restoring the snapshot to the storage system including by obtaining the at least subset of data associated with the snapshot that is available at the storage system from the storage system, including by restoring the snapshot to the storage system by obtaining an object corresponding to the identified signature from the replication destination, wherein the object comprises a data chunk associated with the snapshot.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 7, 2019
From: DAYAL, SHOBHIT; AGRAWAL, NISHANT; RAVICHANDRA, KARTHIK; RANE, GAURESH DATTA; JAIN, ANISH
To: TINTRI BY DDN, INC.
Reel/Frame 049406/0723 →
Continuity (1)
Provisional Application 62647073 · Mar 23, 2018
Cited By (36)
US 12,197,790 US 12,265,503 US 12,271,340 US 12,271,613 US 12,306,801 US 12,306,802 US 12,306,804 US 12,307,279 US 12,309,271 US 12,339,955 US 12,341,887 US 12,368,588 US 12,405,859 US 12,411,740 US 12,417,150 US 12,443,560 US 12,445,283 US 12,450,047 US 12,455,861 US 12,481,449 US 12,487,972 US 12,493,579 US 12,530,262 US 12,530,322 US 12,547,399 US 12,554,588 US 12,561,285 US 12,572,513 US 12,579,109 US 12,608,401 US 12,632,338 US 12,657,157 US 12,664,124 US 12,693,993 US 12,717,680 US 12,717,755