IP Library Granted Patent US 9,600,193
Granted Patent B2
US 9,600,193 · App. 14/816,775 · Granted Mar 21, 2017

Replicating snapshots from a source storage system to a target storage system

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 9,600,193
App. No.
14/816,775
Granted
Mar 21, 2017
Kind
B2
Abstract

A source storage system replicates snapshots stored on the source storage system to a target storage system. The source storage system stores a plurality of snapshots. The source storage system also stores parent child relationships between snapshots. The source storage system allows child snapshots of a parent snapshot to be modified independent of each other. The source storage system determines changed blocks of a snapshot compared to a previously transmitted snapshot and sends only the changed blocks to the target storage system. The source storage system determines the changed blocks of a snapshot compared to a previously replicated snapshot based on time of creation of a common ancestor of two snapshots. The source storage system transmits a data block of a snapshot if either the data block or a corresponding data block of the previously replicated snapshot was modified after the creation of the common ancestor snapshot.

Claims (49)

1. A method for transmitting a snapshot from a source system to a target system, the method comprising:

storing, in a source storage system, a plurality of snapshots, wherein a snapshot shares data blocks with one or more other snapshots stored in the source storage system;

maintaining parent-child relationships between snapshots if a child snapshot is created from a parent snapshot, wherein at least a parent snapshot has a parent child relationship with two or more child snapshots created from the parent snapshot, such that each child snapshot can be modified independent of the other child snapshots;

transmitting data of a first snapshot from the source storage system to a target storage system;

identifying a second snapshot to transmit from the source storage system to a target storage system, wherein the first snapshot and the second snapshot have a common ancestor snapshot such that both the first snapshot and the second snapshot are descendants of the common ancestor snapshot based on parent child relationships;

identifying data blocks of the second snapshot that are distinct from the first snapshot; and

transmitting the identified data blocks of the second snapshot to the target storage system.

2. The method of claim 1 , wherein identifying data blocks of the second snapshot that are distinct from the first snapshot is based on a comparison of the time of modification of one or more data blocks of the second snapshot with the time of creation of the common ancestor snapshot.

3. The method of claim 1 , wherein identifying data blocks of the second snapshot that are distinct from the first snapshot is based on a comparison of the time of modification of one or more data blocks of the first snapshot with the time of creation of the common ancestor snapshot.

4. The method of claim 1 , further comprising:

sending a data block of the second snapshot to the target storage system if the data block was modified after the time of creation of the common ancestor snapshot.

5. The method of claim 1 , further comprising:

sending a data block of the second snapshot to the target storage system if a corresponding data block of the first snapshot was modified after the time of creation of the common ancestor snapshot.

6. The method of claim 5 , wherein determining whether to transmit a data block of the second snapshot to the target storage system comprises:

comparing a checksum of the data block of the second snapshot with a checksum of the corresponding data block of the first snapshot; and

wherein the data block of the second snapshot is sent to the target storage system if the checksum of the data block of the second snapshot does not match the checksum of the corresponding data block of the first snapshot.

7. The method of claim 1 , wherein determining whether to transmit a data block of the second snapshot to the target storage system comprises determining not to send the data block to the target storage system if the time of modification of the data block is before the time of creation of the common ancestor snapshot.

8. The method of claim 1 , wherein the first snapshot includes a first set of data blocks modified after the creation of the ancestor snapshot and the second snapshot includes a second set of data blocks modified after the creation of the common ancestor snapshot, wherein the first set and the second set are non-overlapping.

9. The method of claim 1 , wherein identifying the common ancestor snapshot comprises identifying the most recent common ancestor snapshot.

10. The method of claim 1 , wherein a child snapshot corresponding to a parent snapshot is obtained by cloning the parent snapshot.

11. The method of claim 1 , wherein a child snapshot corresponding to a parent snapshot is obtained by applying a masking function to at least a portion of data of the parent snapshot.

12. The method of claim 1 , wherein a parent snapshot and a child snapshot have a parent child relationship if the parent snapshot and the child snapshot are two consecutive snapshots created in the source storage system.

13. A method for determining the differences between snapshots, the method comprising:

storing, in a source storage system, a plurality of snapshots, wherein a snapshot shares data blocks with one or more other snapshots stored in the source storage system;

maintaining parent-child relationships between snapshots if a child snapshot is created from a parent snapshot, wherein at least a parent snapshot has a parent child relationship with two or more child snapshots created from the parent snapshot, such that each child snapshot can be modified independent of the other child snapshots;

receiving a request to identify the differences between a first snapshot and a second snapshot;

identifying a common ancestor snapshot such that both the first snapshot and the second snapshot are descendants of the common ancestor snapshot based on the parent child relationships; and

determining that a data block of the second snapshot is different from a corresponding data block of the first snapshot based on a comparison of the time of modification of the data block and the time of creation of the common ancestor snapshot.

14. The method of claim 13 , further comprising:

determining that the data block of the second snapshot is different from the corresponding data block of the first snapshot if the time of modification of the data block is greater than the time of creation of the common ancestor snapshot.

15. The method of claim 13 , further comprising:

determining that the data block of the second snapshot is different from the corresponding data block of the first snapshot if the time of modification of the corresponding data block of the first snapshot is greater than the time of creation of the common ancestor snapshot.

16. The method of claim 15 , wherein determining whether a data block of the second snapshot is different from a corresponding data block of the first snapshot, comprises:

comparing a checksum of the data block of the second snapshot with a checksum of the corresponding data block of the first snapshot; and

wherein the data block of the second snapshot is determined to be different from the corresponding data block of the first snapshot if the checksum of the data block of the second snapshot does not match the checksum of the corresponding data block of the first snapshot.

17. The method of claim 13 , further comprising:

determining that the data block of the second snapshot is same as the corresponding data block of the first snapshot if the time of modification of the data block of the first snapshot is less than the time of creation of the common ancestor snapshot and the time of modification of the corresponding data block of the first snapshot is less than the time of creation of the common ancestor snapshot.

18. The method of claim 13 , wherein the first snapshot includes a first set of data blocks modified after the creation of the ancestor snapshot and the second snapshot includes a second set of data blocks modified after the creation of the common ancestor snapshot, wherein the first set and the second set are non-overlapping.

19. The method of claim 13 , wherein identifying the common ancestor snapshot comprises identifying the most recent common ancestor common snapshot.

20. The method of claim 13 , wherein a child snapshot corresponding to a parent snapshot is obtained by cloning the parent snapshot.

21. The method of claim 13 , wherein a parent snapshot and a child snapshot have a parent child relationship if the parent snapshot and the child snapshot are two consecutive snapshots created in the file system.

22. The method of claim 13 , wherein a child snapshot corresponding to a parent snapshot is obtained by applying a masking function to at least a portion of data of the parent snapshot.

23. A non-transitory computer-readable storage medium storing instructions for:

storing, in a source storage system, a plurality of snapshots, wherein a snapshot shares data blocks with one or more other snapshots stored in the source storage system;

maintaining parent-child relationships between snapshots if a child snapshot is created from a parent snapshot, wherein at least a parent snapshot has a parent child relationship with two or more child snapshots created from the parent snapshot, such that each child snapshot can be modified independent of the other child snapshots;

transmitting data of a first snapshot from the source storage system to a target storage system;

identifying a second snapshot to transmit from the source storage system to a target storage system, wherein the first snapshot and the second snapshot have a common ancestor snapshot such that both the first snapshot and the second snapshot are descendants of the common ancestor snapshot based on parent child relationships;

identifying data blocks of the second snapshot that are distinct from the first snapshot; and

transmitting the identified data blocks of the second snapshot to the target storage system.

Assignments (14)
FIRST LIEN PATENT SECURITY AGREEMENT Recorded May 24, 2024
From: DELPHIX CORP.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 067528/0384 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded May 17, 2024
From: DELPHIX CORP.
To: CORTLAND CAPITAL MARKET SERVICES LLC, AS COLLATERAL AGENT
Reel/Frame 067453/0344 →
RELEASE OF SECURITY INTEREST Recorded Mar 22, 2024
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
To: DELPHIX CORP.
Reel/Frame 066869/0540 →
SECURITY INTEREST Recorded Aug 5, 2022
From: DELPHIX CORP.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 060734/0591 →
RELEASE OF SECURITY INTEREST Recorded Aug 5, 2022
From: HERCULES CAPITAL, INC., AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
To: DELPHIX CORP.
Reel/Frame 060737/0201 →
RELEASE OF SECURITY INTEREST Recorded Aug 5, 2022
From: SILICON VALLEY BANK
To: DELPHIX CORP.
Reel/Frame 060738/0578 →
SECURITY INTEREST Recorded Jan 10, 2020
From: DELPHIX CORP.
To: HERCULES CAPITAL, INC., AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
Reel/Frame 051482/0043 →
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 9, 2020
From: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
To: DELPHIX CORP.
Reel/Frame 051532/0264 →
CORRECTIVE ASSIGNMENT TO CORRECT THE SCHEDULE TO REMOVE APPLICATION NUMBERS 10025528 AND 10083196, AND REPLACE WITH PATENT NUMBERS 10025528 AND 10083196 PREVIOUSLY RECORDED ON REEL 047169 FRAME 0863. ASSIGNOR(S) HEREBY CONFIRMS THE AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT. Recorded Jan 6, 2020
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 051485/0422 →
CORRECTIVE ASSIGNMENT TO CORRECT THE SCHEDULE TO REMOVE APPLICATION NUMBERS 10025528 AND 10083196, AND REPLACE WITH PATENT NUMBERS 10025528 AND 10083196 PREVIOUSLY RECORDED ON REEL 047016 FRAME 0544. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Jan 6, 2020
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 051485/0438 →
AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 9, 2019
From: DELPHIX CORP.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 050673/0234 →
SECURITY INTEREST Recorded Oct 1, 2018
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 047016/0544 →
AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 1, 2018
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 047169/0863 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 2, 2017
From: AHRENS, MATTHEW ALLAN; AMDUR, MATTHEW BENJAMIN; SCHROCK, ERIC NOAH; SUN, HUBERT KEN
To: DELPHIX CORPORATION
Reel/Frame 041160/0141 →