IP Library Granted Patent US 11,188,425
Granted Patent B1
US 11,188,425 · App. 16/885,702 · Granted Nov 30, 2021

Snapshot metadata deduplication

Inventors: Kevin M. Tobin (Hopedale, MA); Andrew L. Chanler (Berlin, MA); Michael Ferrari (Douglas, MA); Jeffrey Wilson (Franklin, MA)
Assignee: EMC IP Holding Company LLC
G06F11/1464G06F3/067G06F3/0619G06F3/0665G06F3/0683G06F11/1451G06F11/1461G06F2201/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,188,425
App. No.
16/885,702
Granted
Nov 30, 2021
Kind
B1
Abstract

Snapshots may be managed on a data storage system including logical storage unit including data portions. For a first logical storage unit, a first snapshot pointer structure may be provided including entries, each entry 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 first virtual snapshot lookup table may be provided for a first portion of the first logical storage unit, the first virtual snapshot lookup table including a plurality of entries, each entry corresponding to a respective data portion of the first logical storage unit and including a reference to a respective entry of the first snapshot pointer structure. The virtual lookup table may correspond to multiple snapshots of the first logical storage unit that have a same value for each data portion of the at least first portion.

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 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; and

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

wherein the virtual lookup table corresponds to two or more snapshots of the first logical storage unit that have a same value for each data portion of the at least first portion.

2. The method of claim 1 , further comprising:

for a first snapshot of the first logical storage unit corresponding to a first point in time, creating a first snapshot pointer object including at least a first entry including a pointer to the first virtual lookup table.

3. The method of claim 2 , further comprising:

providing a current pointer object for the first logical storage unit, the current lookup object corresponding to a current time and including at least a first entry including a pointer to the first virtual lookup table.

4. The method of claim 3 , wherein, in response to a request to create another snapshot of the first logical storage unit, creating a second snapshot pointer object including at least a first entry including a pointer to the first virtual lookup table, the creating including copying contents of the current pointer object into the second snapshot pointer object.

5. The method of claim 3 , further comprising:

receiving a write request for a first data portion of the logical storage unit;

determining if the write request is a first write for the first data portion of the logical storage unit since the first snapshot pointer object was created; and

if the write request is the first write request for the first data portion since the first snapshot pointer object was created:

creating a second virtual snapshot lookup table for at least the first portion of the first logical storage unit; and

updating the first entry of the current pointer object to reference the virtual snapshot lookup table.

6. The method of claim 5 , wherein the first entry of the first snapshot pointer object is not updated in response to the write request.

7. The method of claim 3 , further comprising:

in response to a request to link a target logical storage unit to the first snapshot the first logical storage unit, creating a target current pointer object, including copying contents of the first snapshot pointer object into the target current pointer object.

8. The method of claim 7 , further comprising:

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

in response to the read request; determining a physical storage location of the first data portion of the target data structure, including:

accessing a first entry of the target current pointer object to determine a pointer to the first virtual snapshot lookup table;

accessing an entry in the first virtual snapshot lookup table corresponding to the data portion to determine the reference to the respective entry of the first snapshot pointer structure; and

accessing the respective entry of the first snapshot pointer structure.

9. 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, the first snapshot pointer structure including a plurality of entries, each entry 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; and

a first virtual snapshot lookup table for at least a first portion of the first logical storage unit, the first virtual snapshot lookup table including a plurality of entries, each entry of the virtual lookup table corresponding to a respective one of the plurality of data portions of the at least first portion of the first logical storage unit and including a reference to a respective entry of the first snapshot pointer structure,

wherein the virtual lookup table corresponds to two or more snapshots of the first logical storage unit that have a same value for each data portion of the at least first portion.

10. The system of claim 9 , further comprising:

for a first snapshot of the first logical storage unit corresponding to a first point in time, a first snapshot pointer object including at least a first entry including a pointer to the first virtual lookup table.

11. The system of claim 10 , further comprising:

a current pointer object for the first logical storage unit, the current lookup object corresponding to a current time and including at least a first entry including a pointer to the first virtual lookup table.

12. The system of claim 11 , wherein the system further comprises memory having code stored thereon that, when executed, performs a method including:

in response to a request to create another snapshot of the first logical storage unit, creating a second snapshot pointer object including at least a first entry including a pointer to the first virtual lookup table, the creating including copying contents of the current pointer object into the second snapshot pointer object.

13. The system of claim 11 , wherein the system further comprises memory having code stored thereon that, when executed, performs a method including:

receiving a write request for a first data portion of the logical storage unit;

determining if the write request is a first write for the first data portion of the logical storage unit since the first snapshot pointer object was created; and

if the write request is the first write request for the first data portion since the first snapshot pointer object was created:

creating a second virtual snapshot lookup table for at least the first portion of the first logical storage unit; and

updating the first entry of the current pointer object to reference the virtual snapshot lookup table.

14. The system of claim 13 , wherein the first entry of the first snapshot pointer object is not updated in response to the write request.

15. The system of claim 11 , wherein the system further comprises memory having code stored thereon that, when executed, performs a method including:

in response to a request to link a target logical storage unit to the first snapshot the first logical storage unit, creating a target current pointer object, including copying contents of the first snapshot pointer object into the target current pointer object.

16. The system of claim 15 , wherein the method further comprises:

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

in response to the read request; determining a physical storage location of the first data portion of the target data structure, including:

accessing a first entry of the target current pointer object to determine a pointer to the first virtual snapshot lookup table;

accessing an entry in the first virtual snapshot lookup table corresponding to the data portion to determine the reference to the respective entry of the first snapshot pointer structure; and

accessing the respective entry of the first snapshot pointer structure.

17. For 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, computer-readable media having software stored thereon for managing snapshots on the data storage system, the software comprising:

executable code that provides, for a first of the plurality of logical storage units, a first snapshot pointer structure including a plurality of entries, each entry 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; and

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

wherein the virtual lookup table corresponds to two or more snapshots of the first logical storage unit that have a same value for each data portion of the at least first portion.

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

executable code that, for a first snapshot of the first logical storage unit corresponding to a first point in time, creates a first snapshot pointer object including at least a first entry including a pointer to the first virtual lookup table.

19. The computer-readable media of claim 18 , the software further comprising:

executable code that provides a current pointer object for the first logical storage unit, the current lookup object corresponding to a current time and including at least a first entry including a pointer to the first virtual lookup table.

20. The computer-readable media of claim 19 , 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 pointer object including at least a first entry including a pointer to the first virtual lookup table, the creating including copying contents of the current pointer object into the second snapshot pointer object.

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: TOBIN, KEVIN M.; CHANLER, ANDREW L.; FERRARI, MICHAEL; WILSON, JEFFREY
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 052775/0046 →