IP Library Granted Patent US 10,877,936
Granted Patent B2
US 10,877,936 · App. 15/968,825 · Granted Dec 29, 2020

Data deduplication using truncated fingerprints

Inventors: Jeremy J. O'Hare (Westborough, MA); Rong Yu (West Roxbury, MA); Peng Wu (Westborough, MA); Michael J. Scharland (Franklin, MA)
Assignee: EMC IP Holding Company LLC
G06F16/1748G06F16/9014
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 10,877,936
App. No.
15/968,825
Granted
Dec 29, 2020
Kind
B2
Abstract

The system, devices, and methods disclosed herein relate to data ratio reduction technology adapted to reduce storage costs by weeding out duplicative data write operations. The techniques and systems disclosed achieve deduplication benefits by reducing the size of hash values stored hash tables used to compare unwritten data blocks to data that has already been written and stored somewhere in physical storage. The data deduplication systems, methods, and products facilitate deduplication at the block level as well as for misaligned data chunks within data blocks, that is an unwritten data block that has been stored sequentially in two different physical locations. The deduplication teachings herein are amenable to varying data block sizes as well as data chunk sizes within blocks. Our embodiments enhance computer performance by substantially reducing computational speeds and storage requirements attendant to deduplication systems using larger hash table data sizes.

Claims (32)

1. A computer executable method for deduplicating data within a data storage system during a write operation comprising the steps of:

prior to writing a data block to memory, creating two or more hash strings corresponding to an unwritten data block, wherein the creating further comprises iteratively truncating two or more hash strings corresponding to the plurality of unwritten data chunks using a first truncating function and a second truncation function, the first truncating function being different than the second truncating function;

comparing a plurality of values within the iteratively truncated two or more hash strings to a hash table, wherein the hash table contains hash values corresponding to stored data blocks, the stored hash values having been created using the first truncating function and the second truncating function;

determining if a sequential match between the iteratively truncated two or more hash strings and a first stored hash table value and a last stored hash table value can be found; and

avoiding writing the unwritten data block if two sequential matches are found.

2. The computer executable method of claim 1 , wherein the first truncating function reduces the size of each of the unwritten hash values and the stored hash values to less than 20 bytes.

3. The computer executable method of claim 1 , wherein the first truncating function reduces a size of each of the unwritten hash values and the stored hash values to 10 bytes.

4. The computer executable method of claim 1 , wherein the second truncating function reduces the size of each of the unwritten hash values and the stored hash values to less than 5 bytes.

5. The computer executable method of claim 1 , wherein the second truncating function reduces a size of each of the unwritten hash values and the stored hash values to 1 byte.

6. The computer executable method of claim 1 further comprising writing the unwritten data block if no sequential match is found.

7. The computer executable method of claim 1 further comprising recording at least one pointer in a memory, wherein the at least one pointer is an indication of a location of a duplicate version of the unwritten data block with the data storage system.

8. A system for deduplicating data within a data storage system during a write operation comprising a memory and a processor, the processor configured to perform the steps of:

prior to writing a data block to memory, creating two or more hash strings corresponding to an unwritten data block, wherein the creating further comprises iteratively truncating two or more hash strings corresponding to the plurality of unwritten data chunks using a first truncating function and a second truncation function, the first truncating function being different than the second truncating function;

comparing a plurality of values within the iteratively truncated two or more hash strings to a hash table, wherein the hash table contains hash values corresponding to stored data blocks, the stored hash values having been created using the first truncating function and the second truncating function;

determining if a sequential match between the iteratively truncated two or more hash strings and a first stored hash table value and a last stored hash table value can be found; and

avoiding writing the unwritten data block if two sequential matches are found.

9. The system of claim 8 , wherein the first truncating function reduces the size of each of the unwritten hash values and the stored hash values to less than 20 bytes.

10. The system claim 8 , wherein the first truncating function reduces a size of each of the unwritten hash values and the stored hash values to 10 bytes.

11. The system of claim 8 , wherein the second truncating function reduces the size of each of the unwritten hash values and the stored hash values to less than 5 bytes.

12. The system of claim 8 , wherein the second truncating function reduces a size of each of the unwritten hash values and the stored hash values to 1 byte.

13. The system of claim 8 further comprising writing the unwritten data block if no sequential match is found.

14. The system of claim 8 further comprising recording at least one pointer in a memory, wherein the at least one pointer is an indication of a location of a duplicate version of the unwritten data block with the data storage system.

15. A compute product for deduplicating data within a data storage system during a write operation, the computer program product being embodied in a tangible, non-transitory computer readable storage medium and comprising computer instructions for

prior to writing a data block to memory, creating two or more hash strings corresponding to an unwritten data block, wherein the creating further comprises iteratively truncating two or more hash strings corresponding to the plurality of unwritten data chunks using a first truncating function and a second truncation function, the first truncating function being different than the second truncating function;

comparing a plurality of values within the iteratively truncated two or more hash strings to a hash table, wherein the hash table contains hash values corresponding to stored data blocks, the stored hash values having been created using the first truncating function and the second truncating function;

determining if a sequential match between the iteratively truncated two or more hash strings and a first stored hash table value and a last stored hash table value can be found; and

avoiding writing the unwritten data block if two sequential matches are found.

16. The computer program product of claim 15 , wherein the first truncating function reduces the size of each of the unwritten hash values and the stored hash values to less than 20 bytes.

17. The computer program product of claim 15 , wherein the first truncating function reduces a size of each of the unwritten hash values and the stored hash values to 10 bytes.

18. The computer program product of claim 15 , wherein the second truncating function reduces the size of each of the unwritten hash values and the stored hash values to less than 5 bytes.

19. The computer program product of claim 15 further comprising writing the unwritten data block if no sequential match is found.

20. The computer program product of claim 15 further comprising recording at least one pointer in a memory, wherein the at least one pointer is an indication of a location of a duplicate version of the unwritten data block with the data storage system.

Assignments (8)
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 (046366/0014) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060450/0306 →
RELEASE OF SECURITY INTEREST AT REEL 046286 FRAME 0653 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058298/0093 →
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 →
SECURITY AGREEMENT Recorded Mar 21, 2019
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 049452/0223 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jun 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 046366/0014 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Jun 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046286/0653 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 17, 2018
From: O'HARE, JEREMY J.; YU, RONG; WU, PENG; SCHARLAND, MICHAEL J.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 045830/0713 →