IP Library Granted Patent US 11,340,795
Granted Patent B2
US 11,340,795 · App. 16/885,662 · Granted May 24, 2022

Snapshot metadata management

Inventors: Jeffrey Wilson (Franklin, MA); Michael Ferrari (Douglas, MA); Mark J. Halstead (Holliston, MA); Sandeep Chandrashekara (Shrewsbury, MA)
Assignee: EMC IP Holding Company LLC
G06F3/0619G06F3/065G06F3/0689G06F11/1448
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,340,795
App. No.
16/885,662
Granted
May 24, 2022
Kind
B2
Abstract

A snapshot lookup table (SLT) and snapshot pointer structure(s) (SPSs) may be provided for a logical data unit (LSU), each SPS entry corresponding to an LSU data portion and a physical storage location at which data is stored for the data portion for a particular snapshot. A current lookup table (CLT) for a current time may be provided for an LSU, including an entry for each LSU data that points to a respective entry of an SPS. Each time a first write following the creation of a snapshot is made to an LSU data portion, the corresponding CLT entry may be updated to point to the SPS entry that was updated to point to an LSU track table entry. To create a snapshot, a snapshot lookup table (SLT) is created for each snapshot, and the contents of the CLT are copied to the newly created SLT.

Claims (58)

1. A method of managing snapshots on a data storage system including one or more physical storage devices on which data for a plurality of logical storage units is stored, each logical storage unit including a plurality of data portions, the method comprising:

for a first of the plurality of logical storage units, providing a first snapshot pointer structure including a plurality of entries, each entry of the first snapshot pointer structure corresponding to a physical storage location at which data is stored for a data portion of the first logical storage unit at a particular point in time;

providing a current lookup table for the first logical storage unit, the current lookup table corresponding to a current time and including a plurality of entries, each entry of the current lookup table corresponding to a respective one of the plurality of data portions of the first logical storage unit and including a reference to a respective entry of the first snapshot pointer structure; and

creating a first snapshot lookup table for the first logical storage unit responsive to receiving a request to create a snapshot of the first logical storage unit, the first snapshot lookup table corresponding to a first point in time and including a plurality of entries, each entry of the first snapshot lookup table corresponding to a respective one of the plurality of data portions of the first logical storage unit and including a reference to a respective entry of the first snapshot pointer structure, wherein said creating the first snapshot lookup table includes copying contents of the current lookup table into the first snapshot lookup table.

2. The method of claim 1 , wherein a first entry of the first snapshot pointer structure corresponds to a first data portion of the first logical storage unit at the first point in time, and the first entry of the first snapshot pointer structure is referenced by a first entry of the first snapshot lookup table corresponding to the first data portion and a first entry of the current lookup table corresponding to the first data portion, and wherein the method further comprises:

receiving a write request for the first data portion; and

in response to receiving the write request:

determining if the write request is a first write request to the first data portion since the first snapshot lookup table was created; and

if the write request is the first write request for the data portion since the first snapshot lookup table was created:

designating a second entry of the first snapshot pointer structure to the first data portion; and

updating the first entry of the current lookup table to reference the second entry of the first snapshot pointer structure, wherein the first entry of the first snapshot lookup table is not updated.

3. The method of claim 1 , wherein, in response to a request to create another snapshot of the first logical storage unit, creating a second snapshot lookup table for the first logical storage unit by copying contents of the current lookup table.

4. The method of claim 1 , further comprising:

in response to a request to link a target logical storage unit to the first logical storage unit for the first point in time, creating a target current lookup table, including copying contents of the first snapshot lookup table into the target current lookup table.

5. The method of claim 4 , wherein a logical storage unit comprises a plurality of zones, each zone representing a subset of the logical storage unit, the method further comprising:

in response to a first write request to a first zone of the target logical storage unit, creating a target snapshot pointer structure for the first zone of the target logical storage unit.

6. The method of claim 4 , further comprising:

receiving a read request for a first data portion of the target logical storage unit; and

in response to the read request, determining a physical storage location of the first data portion of the target logical storage unit by accessing a first entry of the target current lookup table corresponding to the first data portion.

7. A system for managing snapshots on the data storage system including one or more physical storage devices on which data for a plurality of logical storage units is stored, each logical storage unit including a plurality of data portions, the system comprising:

a first snapshot pointer structure for a first of the plurality of logical storage units, wherein the first snapshot pointer structure is stored in a memory of the system and includes a plurality of entries, each entry of the first snapshot pointer structure corresponding to a physical storage location at which data is stored for a data portion of the first logical storage unit at a particular point in time;

a current lookup table for the first logical storage unit, wherein the current lookup table is stored in a memory of the system, the current lookup table corresponding to a current time and including a plurality of entries, each entry of the current lookup table corresponding to a respective one of the plurality of data portions of the first logical storage unit and including a reference to a respective entry of the first snapshot pointer structure;

a first snapshot lookup table for the first logical storage unit, wherein the first snapshot lookup table is stored in a memory of the system, the first snapshot lookup table corresponding to a first point in time and including a plurality of entries, each entry of the first snapshot lookup table corresponding to a respective one of the plurality of data portions of the first logical storage unit and including a reference to a respective entry of the first snapshot pointer structure; and

wherein a memory of the system further comprises code stored thereon that, when executed, performs a method including:

creating the first snapshot lookup table for the first logical storage unit responsive to receiving a request to create a snapshot of the first logical storage unit, wherein said creating the first snapshot lookup table includes copying contents of the current lookup table into the first snapshot lookup table.

8. The system of claim 7 , wherein a first entry of the first snapshot pointer structure corresponds to a first data portion of the first logical storage unit at the first point in time, and the first entry of the first snapshot pointer structure is referenced by a first entry of the first snapshot lookup table corresponding to the first data portion and a first entry of the current lookup table corresponding to the first data portion, and wherein the method further includes:

receiving a write request for the first data portion; and

in response to receiving the write request:

determining if the write request is a first write request to the first data portion since the first snapshot lookup table was created; and

if the write request is the first write request for the data portion since the first snapshot lookup table was created:

designating a second entry of the first snapshot pointer structure to the first data portion; and

updating the first entry of the current lookup table to reference the second entry of the first snapshot pointer structure, wherein the first entry of the first snapshot lookup table is not updated.

9. The system of claim 7 , and wherein the method further includes:

in response to a request to create another snapshot of the first logical storage unit, creating a second snapshot lookup table for the first logical storage unit by copying contents of the current lookup table.

10. The system of claim 7 , wherein the method further includes:

in response to a request to link a target logical storage unit to the first logical storage unit for the first point in time, creating a target current lookup table, including copying contents of the first snapshot lookup table into the target current lookup table.

11. The system of claim 10 , wherein a logical storage unit comprises a plurality of zones, each zone representing a subset of the logical storage unit, and

wherein the method further includes, in response to a first write request to a first zone of the target logical storage unit, creating a target snapshot pointer structure for the first zone of the target logical storage unit.

12. The system of claim 10 , wherein a logical storage unit comprises a plurality of zones, each zone representing a subset of the logical storage unit, and wherein the method further includes:

receiving a read request for a first data portion of the target logical storage unit; and

in response to the read request, determining a physical storage location of the first data portion of the target logical storage unit by accessing a first entry of the target current lookup table corresponding to the first data portion.

13. For a data storage system including one or more physical storage devices on which data fora plurality of logical storage units is stored, wherein each logical storage unit includes a plurality of data portions, computer-readable media having software stored thereon for managing snapshots on the data storage system, the software comprising:

executable code that provides a first snapshot pointer structure for a first of the plurality of logical storage units, the first snapshot pointer structure including a plurality of entries, each entry of the first snapshot pointer structure corresponding to a physical storage location at which data is stored for a data portion of the first logical storage unit at a particular point in time;

executable code that provides a current lookup table for the first logical storage unit, the current lookup table corresponding to a current time and including a plurality of entries, each entry of the current lookup table corresponding to a respective one of the plurality of data portions of the first logical storage unit and including a reference to a respective entry of the first snapshot pointer structure; and

executable code that creates a first snapshot lookup table for the first logical storage unit responsive to receiving a request to create a snapshot of the first logical storage unit, the first snapshot lookup table corresponding to a first point in time and including a plurality of entries, each entry of the first snapshot lookup table corresponding to a respective one of the plurality of data portions of the first logical storage unit and including a reference to a respective entry of the first snapshot pointer structure, wherein said creating the first snapshot lookup table includes copying contents of the current lookup table into the first snapshot lookup table.

14. The computer-readable media of claim 13 , wherein a first entry of the first snapshot pointer structure corresponds to a first data portion of the first logical storage unit at the first point in time, and the first entry of the first snapshot pointer structure is referenced by a first entry of the first snapshot lookup table corresponding to the first data portion and a first entry of the current lookup table corresponding to the first data portion, and wherein the software further comprises:

executable code that receives a write request for the first data portion; and

executable code that, in response to receiving the write request:

determines if the write request is a first write request to the first data portion since the first snapshot lookup table was created; and

if the write request is the first write request for the data portion since the first snapshot lookup table was created:

designates a second entry of the first snapshot pointer structure to the first data portion; and

updates the first entry of the current lookup table to reference the second entry of the first snapshot pointer structure, wherein the first entry of the first snapshot lookup table is not updated.

15. The computer-readable media of claim 13 , the software further comprising executable code that, in response to a request to create another snapshot of the first logical storage unit, creates a second snapshot lookup table for the first logical storage unit by copying contents of the current lookup table.

16. The computer-readable media of claim 13 , the software further comprising:

executable code that, in response to a request to link a target logical storage unit to the first logical storage unit for the first point in time, creates a target current lookup table, including copying contents of the first snapshot lookup table into the target current lookup table.

17. The computer-readable media of claim 16 , the software further comprising:

executable code that receives a read request for a first data portion of the target logical storage unit; and

executable code that, in response to the read request, determines a physical storage location of the first data portion of the target logical storage unit by accessing a first entry of the target current lookup table corresponding to the first data portion.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053574/0221) Recorded Jun 10, 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 060333/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053578/0183) Recorded Jun 10, 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 060332/0864 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053573/0535) Recorded Jun 10, 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 060333/0106 →
RELEASE OF SECURITY INTEREST AT REEL 053531 FRAME 0108 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0371 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053578/0183 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053573/0535 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053574/0221 →
SECURITY AGREEMENT Recorded Aug 18, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 053531/0108 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2020
From: WILSON, JEFFREY; FERRARI, MICHAEL; HALSTEAD, MARK J.; CHANDRASHEKHARA, SANDEEP
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 052774/0866 →
Continuity (1)
Related Publication 20210373781A1 · Dec 2, 2021
Cited By (1)
US 12,417,208