IP Library Granted Patent US 11,416,462
Granted Patent B2
US 11,416,462 · App. 16/927,257 · Granted Aug 16, 2022

Techniques for efficient data deduplication

Inventors: Peng Wu (Westborough, MA); Bin Dai (Hopkinton, MA); Rong Yu (West Roxbury, MA)
Assignee: EMC IP Holding Company LLC
G06F16/215G06F13/20G06F16/174G06F16/2255G06F16/245
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,416,462
App. No.
16/927,257
Granted
Aug 16, 2022
Kind
B2
Abstract

Data deduplication techniques may use a fingerprint hash table and a backend location hash table in connection with performing operations including fingerprint insertion, fingerprint deletion and fingerprint lookup. Processing I/O operations may include: receiving a write operation that writes data to a target logical address; determining a fingerprint for the data; querying the fingerprint hash table using the fingerprint to determine a matching entry of the fingerprint hash table for the fingerprint; and responsive to determining that the fingerprint hash table does not have the matching entry that matches the fingerprint, performing processing including: inserting a first entry in the fingerprint hash table, wherein the first entry includes the fingerprint for the data and identifies a storage location at which the data is stored; and inserting a second entry in a backend location hash table, wherein the second entry references the first entry.

Claims (65)

1. A method of processing I/O operations comprising:

receiving a write operation that writes first data to a target logical address;

determining a first fingerprint for the first data;

querying a fingerprint hash table using the first fingerprint to determine a first matching entry of the fingerprint hash table for the first fingerprint;

responsive to determining that the fingerprint hash table does not have the first matching entry that matches the first fingerprint, performing first processing including:

inserting a first entry in the fingerprint hash table, wherein the first entry includes the first fingerprint for the first data and identifies a first storage location at which the first data is stored; and

inserting a second entry in a backend location hash table, wherein the second entry references the first entry;

performing second processing that deletes the first entry from the fingerprint hash table, wherein the second processing includes:

receiving the first storage location; determining a first hash value for the first storage location;

mapping the first hash value to a corresponding index of the backend location hash table;

querying the backend location hash table to determine a second matching entry of the backend location hash table, wherein the second matching entry is associated with the corresponding index and has an associated backend location matching the first storage location, wherein said querying the backend location hash table returns the second entry in the backend location hash table as the second matching entry; and

deleting the first entry of the fingerprint hash table using the second entry.

2. The method of claim 1 , wherein the fingerprint hash table is distributed among a plurality of components, wherein the fingerprint hash table includes a plurality of portions of hash table entries, and wherein each of the plurality of components manages a different one of the plurality of portions of the hash table entries.

3. The method of claim 2 , wherein the first entry of the fingerprint hash table is included a first of the plurality of portions of hash table entries, wherein the first portion is managed by a first of the plurality of components, and wherein deleting the first entry includes:

referencing the first entry using the second entry;

obtaining the first fingerprint from the first entry that is referenced using the second entry;

determining, in accordance with the first fingerprint, that the first component manages the first entry including the first fingerprint; and

communicating with the first component that manages the first entry to delete the first entry from the first portion of hash table entries.

4. The method of claim 1 , wherein after receiving the first write operation and performing the first processing, the method further comprises: receiving a second write operation that writes second data to the target logical address, wherein the second data of the write operation overwrites the first data currently stored at the target logical address, and wherein the second processing that deletes the first entry from the fingerprint hash table is included in overwrite processing performed responsive to receiving the second write operation that writes overwrites the first data currently stored at the target logical address.

5. The method of claim 1 , wherein the target logical address denotes a first logical address on a logical device that includes a plurality of logical addresses, wherein the plurality of logical addresses includes the first logical address, and the method further comprises: performing processing to delete the logical device, and wherein the second processing that deletes the first entry from the fingerprint hash table is included in the processing that deletes the logical device.

6. The method of claim 1 , wherein said querying the fingerprint hash table using the first fingerprint to determine the first matching entry of the fingerprint hash table for the first fingerprint further includes:

comparing the first fingerprint to an associated fingerprint of one entry of the fingerprint hash table;

determining whether the first fingerprint and the associated fingerprint match; and

responsive to determining the associated fingerprint matches the first fingerprint, determining that the corresponding entry is the first matching entry and that the first data is a duplicate of existing data used to generate the associated fingerprint.

7. The method of claim 1 , wherein the second entry includes an address of the first entry.

8. The method of claim 1 , wherein the first storage location identifies a backend location on physical storage at which the first data is stored.

9. The method of claim 1 , further comprising:

performing deduplication processing, and wherein said deduplication processing includes performing said determining, said querying, and said first processing.

10. The method of claim 9 , further comprising:

storing the first data in a cache; and

destaging the first data from the cache to physical storage, said destaging includes performing said deduplication processing.

11. The method of claim 1 , wherein the method is performed in a data storage system, wherein the write operation is received at the data storage system from a host that is external to the data storage system, and wherein the method further includes:

responsive to determining that the fingerprint hash table does have the first matching entry that matches the first fingerprint, performing other processing to store the first data of the target logical address as a duplicate of existing data currently associated with the first matching entry, the other processing including:

updating mapping information to map the target logical address to a current storage location at which the existing data is stored.

12. The method of claim 1 , wherein said determining the first fingerprint for the first data includes:

determining a corresponding hash value for the first data using a hash function.

13. The method of claim 12 , wherein the first fingerprint is a truncated form of the corresponding hash value of the first data.

14. The method of claim 12 , wherein the corresponding hash value for the first data is mapped to a first index of the fingerprint hash table, wherein the first matching entry is associated with the first index.

15. The method of claim 14 , wherein the first matching entry is included on a list of entries in which each entry of the list includes a different fingerprint that maps to the first index.

16. A system comprising:

one or more processors; and

one or more memories comprising code stored thereon that, when executed, performs a method of processing I/O operations comprising:

receiving a write operation that writes first data to a target logical address;

determining a first fingerprint for the first data;

querying a fingerprint hash table using the first fingerprint to determine a first matching entry of the fingerprint hash table for the first fingerprint;

responsive to determining that the fingerprint hash table does not have the first matching entry that matches the first fingerprint, performing first processing including:

inserting a first entry in the fingerprint hash table, wherein the first entry includes the first fingerprint for the first data and identifies a first storage location at which the first data is stored; and

inserting a second entry in a backend location hash table, wherein the second entry references the first entry;

performing second processing that deletes the first entry from the fingerprint hash table, wherein the second processing includes:

receiving the first storage location; determining a first hash value for the first storage location;

mapping the first hash value to a corresponding index of the backend location hash table;

querying the backend location hash table to determine a second matching entry of the backend location hash table, wherein the second matching entry is associated with the corresponding index and has an associated backend location matching the first storage location, wherein said querying the backend location hash table returns the second entry in the backend location hash table as the second matching entry; and

deleting the first entry of the fingerprint hash table using the second entry.

17. A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of processing I/O operations comprising:

receiving a write operation that writes first data to a target logical address;

determining a first fingerprint for the first data;

querying a fingerprint hash table using the first fingerprint to determine a first matching entry of the fingerprint hash table for the first fingerprint;

responsive to determining that the fingerprint hash table does not have the first matching entry that matches the first fingerprint, performing first processing including:

inserting a first entry in the fingerprint hash table, wherein the first entry includes the first fingerprint for the first data and identifies a first storage location at which the first data is stored; and

inserting a second entry in a backend location hash table, wherein the second entry references the first entry;

performing second processing that deletes the first entry from the fingerprint hash table, wherein the second processing includes:

receiving the first storage location; determining a first hash value for the first storage location;

mapping the first hash value to a corresponding index of the backend location hash table;

querying the backend location hash table to determine a second matching entry of the backend location hash table, wherein the second matching entry is associated with the corresponding index and has an associated backend location matching the first storage location, wherein said querying the backend location hash table returns the second entry in the backend location hash table as the second matching entry; and

deleting the first entry of the fingerprint hash table using the second entry.

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 Jul 13, 2020
From: WU, PENG; YU, RONG; DAI, BIN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 053192/0198 →
Continuity (1)
Related Publication 20220012218A1 · Jan 13, 2022