IP Library Granted Patent US 11,307,935
Granted Patent B2
US 11,307,935 · App. 16/836,824 · Granted Apr 19, 2022

Management of volume snapshots in a data storage system

Inventors: Itay Keller (Tel Aviv, IL); Asaf Porath (Tel Aviv, IL); Michal Yarimi (Rehovot, IL); Zeev Shusterman (Haifa, IL); Dvir Koren (Nahalal, IL)
Assignee: EMC IP Holding Company LLC
G06F11/1451G06F11/1471G06F16/907G06F16/9027G06F2201/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,307,935
App. No.
16/836,824
Granted
Apr 19, 2022
Kind
B2
Abstract

Techniques are provided for managing snapshot volume trees in a snapshot-enabled data storage system. A snapshot management system is configured to maintain a snapshot volume tree for a storage volume of a storage system, wherein the snapshot volume tree comprises a data structure which comprises a plurality of snapshot volume nodes corresponding to respective ones of (i) a root volume and (ii) multiple snapshots related directly or indirectly to the root volume, wherein the snapshot volume nodes comprise respective generation times which denote times that the respective snapshot volume nodes were created. The generation times are used in conjunction with write times of data items that are written to the snapshot volume nodes to manage snapshot reading and deletion operations.

Claims (65)

1. A method, comprising:

maintaining, by a snapshot management system, a snapshot volume tree for a storage volume of a storage system, wherein the snapshot volume tree comprises a data structure which comprises a plurality of snapshot volume nodes corresponding to respective ones of (i) a root storage volume and (ii) multiple snapshots related directly or indirectly to the root storage volume, wherein the snapshot volume nodes comprise respective generation numbers which denote a chronological order in which the respective snapshot volume nodes were created;

receiving, by the snapshot management system, a read request comprising a read address for accessing a given data item from a target snapshot volume node;

accessing, by the snapshot management system, a sorted list of one or more metadata objects which are associated with a same logical address corresponding to the read address, wherein each of the one or more metadata objects corresponds to a different version of the given data item stored in different snapshot volume nodes of the snapshot volume tree, wherein each metadata object in the sorted list comprises a descriptor that identifies a host volume node of the given version of the data item, (ii) the associated logical address, and (iii) a descriptor which identifies a write time of the given version of the data item, wherein the write time is based on a current generation number of the snapshot volume tree at a time when the given version of the data item was written;

iteratively processing, by the snapshot management system, the one or more metadata objects in the sorted list to identify a target version of the given data item which can be read from one of (i) the target snapshot volume node and (ii) another snapshot volume node which is an ancestor of the target snapshot volume node and which has a generation number that is greater than the write time of the target version of the given data item; and

responding to the read request by returning the identified target version of the data item.

2. The method of claim 1 , wherein:

the read address comprises a logical address which is associated with the sorted list of one or more metadata objects;

the current generation number of the snapshot volume tree comprises a generation number of a last snapshot volume node of the snapshot volume tree that was either generated or deleted;

the write time of the given version of the data item comprises an increment of the current generation number of the snapshot volume tree at the time when the given version of the data item was written.

3. The method of claim 1 , wherein the one or more metadata objects of the sorted list are sorted in a chronological order based on the write time descriptors in the metadata objects.

4. The method of claim 3 , wherein iteratively processing the one or more metadata objects in the sorted list comprises sequentially processing the one or more metadata objects in the chronological order starting with the metadata object having a greatest write time descriptor.

5. A method, comprising:

maintaining, by a snapshot management system, a snapshot volume tree for a storage volume of a storage system, wherein the snapshot volume tree comprises a data structure which comprises a plurality of snapshot volume nodes corresponding to respective ones of (i) a root volume and (ii) multiple snapshots related directly or indirectly to the root volume, wherein the snapshot volume nodes comprise respective generation times which denote times that the respective snapshot volume nodes were created;

receiving, by the snapshot management system, a read request comprising a read address for accessing a given data item from a target snapshot volume node;

accessing, by the snapshot management system, a sorted list of one or more metadata objects, wherein each of the one or more metadata objects corresponds to a different version of the given data item stored in different snapshot volume nodes of the snapshot volume tree, wherein each metadata object comprises a descriptor that identifies a host volume node of the given version of the data item and a descriptor which identifies a write time of the given version of the data item;

iteratively processing, by the snapshot management system, the one or more metadata objects in the sorted list to identify a target version of the given data item which can be read from one of (i) the target snapshot volume node and (ii) another snapshot volume node which is an ancestor of the target snapshot volume node and which has a generation time that is greater than the write time of the target version of the given data item; and

responding to the read request by returning the identified target version of the data item;

wherein iteratively processing comprises:

accessing a metadata object in the sorted list;

reading the descriptor of the host volume node to determine an identify of the host volume node associated with the accessed metadata object; and

in response to determining that the target snapshot volume node is the identified host volume node, responding to the read request by returning the target version of the data item associated with the accessed metadata object.

6. The method of claim 5 , further comprising:

in response to determining that the identified host volume node is not the target snapshot volume node:

determining whether the identified host volume node is an ancestor volume node of the target snapshot volume node; and

in response to determining that the identified host volume node is not an ancestor volume node of the target snapshot volume node, performing another iteration by accessing a next metadata object in the sorted list.

7. The method of claim 6 , further comprising:

in response to determining that the identified host volume node is an ancestor volume node of the target snapshot volume node:

determining an intermediate parent volume node of the target snapshot volume node with respect to the ancestor volume node;

determining whether a generation time of the intermediate parent volume node is greater than the write time associated with the accessed metadata object; and

in response to determining that the generation time of the intermediate parent volume node is greater than the write time associated with the accessed metadata object, responding to the read request by returning the target version of the data item associated with the accessed metadata object.

8. An article of manufacture comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code is executable by one or more processors to implement the method of claim 1 .

9. An apparatus, comprising:

at least one processor; and

system memory configured to store program code, wherein the program code is executable by the at least one processor to implement a snapshot management system which is configured to perform the method of claim 1 .

10. A method, comprising:

maintaining, by a snapshot management system, a snapshot volume tree for a storage volume of a storage system, wherein the snapshot volume tree comprises a data structure which comprises a plurality of snapshot volume nodes corresponding to respective ones of (i) a root volume and (ii) multiple snapshots related directly or indirectly to the root volume, wherein the snapshot volume nodes comprise respective generation times which denote times that the respective snapshot volume nodes were created; and

performing, by the snapshot management system, a volume node deletion process to delete a target snapshot volume node from the snapshot volume tree, wherein performing the volume node deletion process comprises:

determining whether the target snapshot volume node has one or more child volume nodes;

in response to determining that the target snapshot volume node does have one or more child volume nodes, determining which child volume node is a youngest child volume node based on the respective generation times of the one or more child volume nodes; and

merging the determined youngest child volume node with the target snapshot volume node to create a new snapshot volume node which resides in a same hierarchical position as the target snapshot volume node in the snapshot volume tree and which is assigned the generation time of the target snapshot volume node.

11. The method of claim 10 , wherein performing the volume node deletion process further comprises marking the target snapshot volume node for deletion such that during the volume node deletion process, the target snapshot volume node is prevented from (i) being read from, (ii) being written to, and (iii) having new snapshot volume nodes created therefrom.

12. The method of claim 10 , wherein merging the determined youngest child volume node with the target snapshot volume node comprises:

generating a shadow copy of the target snapshot volume node; and

designating the youngest child volume node as an alias node of the target snapshot volume node; and

utilizing the shadow copy and the alias node to transfer references to metadata associated with the shadow copy to the alias node.

13. The method of claim 12 , further comprising:

setting an alias barrier value of the target snapshot volume node to be a generation time of the youngest child node such that any data which has been written to the snapshot volume tree which has a write time that is greater than alias barrier value will be deemed irrelevant.

14. The method of claim 10 , further comprising designating the new snapshot volume node to be a parent snapshot volume node of each snapshot volume node that was previously a child of the target snapshot volume node that was deleted.

15. An article of manufacture comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code is executable by one or more processors to implement the method of claim 10 .

16. An apparatus, comprising:

at least one processor; and

system memory configured to store program code, wherein the program code is executable by the at least one processor to implement a snapshot management system which is configured to:

maintain a snapshot volume tree for a storage volume of a storage system, wherein the snapshot volume tree comprises a data structure which comprises a plurality of snapshot volume nodes corresponding to respective ones of (i) a root volume and (ii) multiple snapshots related directly or indirectly to the root volume, wherein the snapshot volume nodes comprise respective generation times which denote times that the respective snapshot volume nodes were created; and

perform a volume node deletion process to delete a target snapshot volume node from the snapshot volume tree, wherein in performing the volume node deletion process, the snapshot management system is configured to:

determine whether the target snapshot volume node has one or more child volume nodes;

determine which child volume node is a youngest child volume node based on the respective generation times of the one or more child volume nodes, in response to determining that the target snapshot volume node does have one or more child volume nodes; and

merge the determined youngest child volume node with the target snapshot volume node to create a new snapshot volume node which resides in a same hierarchical position as the target snapshot volume node in the snapshot volume tree and which is assigned the generation time of the target snapshot volume node.

17. The apparatus of claim 16 , wherein in performing the volume node deletion process, the snapshot management system is further configured to mark the target snapshot volume node for deletion such that during the volume node deletion process, the target snapshot volume node is prevented from (i) being read from, (ii) being written to, and (iii) having new snapshot volume nodes created therefrom.

18. The apparatus of claim 16 , wherein in merging the determined youngest child volume node with the target snapshot volume node, the snapshot management system is configured to:

generate a shadow copy of the target snapshot volume node;

designate the youngest child volume node as an alias node of the target snapshot volume node; and

utilize the shadow copy and the alias node to transfer references to metadata associated with the shadow copy to the alias node.

19. The apparatus of claim 18 , wherein the snapshot management system is further configured to set an alias barrier value of the target snapshot volume node to be a generation time of the youngest child node such that any data which has been written to the snapshot volume tree which has a write time that is greater than alias barrier value will be deemed irrelevant.

20. The apparatus of claim 16 , wherein the snapshot management system is further configured to designate the new snapshot volume node to be a parent snapshot volume node of each snapshot volume node that was previously a child of the target snapshot volume node that was deleted.

Assignments (11)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052852/0022) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0582 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0917) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0509 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0081) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0441 →
RELEASE OF SECURITY INTEREST AT REEL 052771 FRAME 0906 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0298 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2020
From: KELLER, ITAY; PORATH, ASAF; YARIMI, MICHAL; SHUSTERMAN, ZEEV; KOREN, DVIR
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 053536/0872 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052852/0022 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0917 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0081 →
SECURITY AGREEMENT Recorded May 28, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052771/0906 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
Continuity (1)
Related Publication 20210303407A1 · Sep 30, 2021
Cited By (7)
US 12,282,676 US 12,299,303 US 12,339,805 US 12,367,216 US 12,386,678 US 12,561,436 US 12,639,126