IP Library Granted Patent US 10,592,149
Granted Patent B1
US 10,592,149 · App. 15/727,363 · Granted Mar 17, 2020

Dynamic de-duplication methodologies for efficient resource utilization on de-duplication system

Inventors: Fani Jenkins (Boulder, CO); Srikant Viswanathan (Pune, IN); Yamini Allu (Sunnyvale, CA)
Assignee: EMC IP Holding Company LLC
G06F3/0641G06F3/0608G06F3/0611G06F11/1453G06F16/1748G06F16/1752G06F16/1756
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,592,149
App. No.
15/727,363
Granted
Mar 17, 2020
Kind
B1
Abstract

Embodiments are described for reducing memory usage and disk I/O's for reading and writing streams in a deduplication storage system. Generations of backups of a stream can be tracked for the stream. In the first generation (first backup), stream data is ingested, segmented, and written to disk without looking up a fingerprint of each segment, to save disk I/O's and memory. After the first generation, an amount of stream data processed is tracked, and at dynamically tunable increments of data processed, a fingerprint index lookup is performed to disk. The fingerprint index is read into memory and subsequent fingerprint lookups are preformed to cache, until a next dynamically tunable fingerprint lookup to disk. The dynamically tunable increment of processed data can be randomly reset.

Claims (88)

1. A computer-implemented method comprising:

determining that a previous generation of stream of data has been deduplicated and written to a storage device as a plurality of segments of data, each segment having a fingerprint;

determining a hit ratio of fingerprint lookups in a fingerprint index cache of the segment storage device, over at least a subset of the plurality of segments of data of the previous generation of the stream of data;

for a subsequent generation of the stream of data being written to the storage device, determining a first fingerprint index lookup threshold that specifies a first amount of data that will be read from the subsequent stream, after which a fingerprint index lookup to the segment storage device will be performed, the index lookup threshold based at least in part on the hit ratio of the segment fingerprint lookups in the fingerprint index cache of the previous generation of the stream.

2. The method of claim 1 , further comprising:

in response to determining that the hit ratio of fingerprint lookups in the fingerprint index cache of the segment storage device for the previous generation of the stream is greater than 8%, setting the fingerprint index lookup threshold to 1 megabyte (1 MB) for deduplicating the subsequent generation of the stream of data.

3. The method claim 1 , further comprising:

receiving data from the subsequent generation of the stream of data;

segmenting the received data into a plurality of segments, and generating a fingerprint for each segment in the plurality of segments;

looking up the fingerprint of the first segment in a fingerprint index on a segment storage device, thereby reading a plurality of fingerprints from the segment storage device into a cached copy of the fingerprint index;

wherein presence of a fingerprint in the fingerprint index indicates that the segment corresponding to the fingerprint has been previously stored on the segment storage device.

4. The method of claim 3 , further comprising:

looking up the fingerprint of the second, and subsequent, segments in the plurality of segments, in the cached copy of the fingerprint index;

wherein presence of a fingerprint in the fingerprint index indicates that the segment corresponding to the fingerprint has been previously stored on the segment storage device.

5. The method of claim 4 , further comprising:

in response to determining that the fingerprint is present in the fingerprint index or in the segment storage cache:

writing a reference to the segment having the fingerprint, to the segment storage device;

increasing a count of fingerprint lookup hits;

otherwise:

writing the segment corresponding to the fingerprint to the segment storage device;

writing the fingerprint, and a reference to the segment, to the fingerprint index; and

inserting the fingerprint, and reference to the segment, into the cached copy of the fingerprint index.

6. The method of claim 1 , further comprising, after deduplicating a threshold amount of received data for the subsequent generation of the stream:

computing a fingerprint cache hit ratio, as a ratio of cache hits to cache lookups;

determining a second fingerprint lookup index threshold that specifies a second amount of data that will be read from the subsequent stream, after which a fingerprint index lookup will be performed, the second fingerprint lookup index based at least in part on the hit ratio of the segment fingerprint lookups in the index cache of the subsequent stream, over the first amount of data.

7. The method of claim 1 , further comprising, in response to determining that a write to storage is not a sequential stream write:

writing the segment to a storage container associated with a stream identifier of the stream of data;

writing the segment fingerprint to a fingerprint index in the storage container associated with the stream identifier of the stream of data.

8. The method of claim 1 , wherein the previous generation of the stream of data was the first generation of the stream of data, and the previous generation of the stream of data was written to segment storage fingerprint without deduplication.

9. A non-transitory computer-readable medium programmed with executable instructions that, when executed by a processing system having at least one hardware processor, perform operations comprising:

determining that a previous generation of stream of data has been deduplicated and written to a storage device as a plurality of segments of data, each segment having a fingerprint;

determining a hit ratio of fingerprint lookups in a fingerprint index cache of the segment storage device, over at least a subset of the plurality of segments of data of the previous generation of the stream of data;

for a subsequent generation of the stream of data being written to the storage device, determining a first fingerprint index lookup threshold that specifies a first amount of data that will be read from the subsequent stream, after which a fingerprint index lookup to the segment storage device will be performed, the index lookup threshold based at least in part on the hit ratio of the segment fingerprint lookups in the fingerprint index cache of the previous generation of the stream.

10. The medium of claim 9 , further comprising:

in response to determining that the hit ratio of fingerprint lookups in the fingerprint index cache of the segment storage device for the previous generation of the stream is greater than 8%, setting the fingerprint index lookup threshold to 1 megabyte (1 MB) for deduplicating the subsequent generation of the stream of data.

11. The medium claim 9 , further comprising:

receiving data from the subsequent generation of the stream of data;

segmenting the received data into a plurality of segments, and generating a fingerprint for each segment in the plurality of segments;

looking up the fingerprint of the first segment in a fingerprint index on a segment storage device, thereby reading a plurality of fingerprints from the segment storage device into a cached copy of the fingerprint index;

wherein presence of a fingerprint in the fingerprint index indicates that the segment corresponding to the fingerprint has been previously stored on the segment storage device.

12. The medium of claim 11 , further comprising:

looking up the fingerprint of the second, and subsequent, segments in the plurality of segments, in the cached copy of the fingerprint index;

wherein presence of a fingerprint in the fingerprint index indicates that the segment corresponding to the fingerprint has been previously stored on the segment storage device.

13. The medium of claim 12 , further comprising:

in response to determining that the fingerprint is present in the fingerprint index or in the segment storage cache:

writing a reference to the segment having the fingerprint, to the segment storage device;

increasing a count of fingerprint lookup hits;

otherwise:

writing the segment corresponding to the fingerprint to the segment storage device;

writing the fingerprint, and a reference to the segment, to the fingerprint index; and

inserting the fingerprint, and reference to the segment, into the cached copy of the fingerprint index.

14. The medium of claim 9 , further comprising, after deduplicating a threshold amount of received data for the subsequent generation of the stream:

computing a fingerprint cache hit ratio, as a ratio of cache hits to cache lookups;

determining a second fingerprint lookup index threshold that specifies a second amount of data that will be read from the subsequent stream, after which a fingerprint index lookup will be performed, the second fingerprint lookup index based at least in part on the hit ratio of the segment fingerprint lookups in the index cache of the subsequent stream, over the first amount of data.

15. The medium of claim 9 , further comprising, in response to determining a write to storage is not a sequential stream write:

writing the segment to a storage container associated with a stream identifier of the stream of data;

writing the segment fingerprint to a fingerprint index in the storage container associated with the stream identifier of the stream of data.

16. The medium of claim 9 , wherein the previous generation of the stream of data was the first generation of the stream of data, and the previous generation of the stream of data was written to segment storage fingerprint without deduplication.

17. A system comprising:

a processing system having at least one hardware processor, the processing system coupled to a memory programmed with executable instructions that, when executed by the processing system, perform operations comprising:

determining that a previous generation of stream of data has been deduplicated and written to a storage device as a plurality of segments of data, each segment having a fingerprint;

determining a hit ratio of fingerprint lookups in a fingerprint index cache of a the segment storage device, over at least a subset of the plurality of segments of data of the previous generation of the stream of data;

for a subsequent generation of the stream of data being written to the storage device, determining a first fingerprint index lookup threshold that specifies a first amount of data that will be read from the subsequent stream, after which a fingerprint index lookup to the segment storage device will be performed, the index lookup threshold based at least in part on the hit ratio of the segment fingerprint lookups in the fingerprint index cache of the previous generation of the stream.

18. The system of claim 17 , further comprising:

in response to determining that the hit ratio of fingerprint lookups in the fingerprint index cache of the segment storage device for the previous generation of the stream is greater than 8%, setting the fingerprint index lookup threshold to 1 megabyte (1 MB) for deduplicating the subsequent generation of the stream of data.

19. The system claim 17 , further comprising:

receiving data from the subsequent generation of the stream of data;

segmenting the received data into a plurality of segments, and generating a fingerprint for each segment in the plurality of segments;

looking up the fingerprint of the first segment in a fingerprint index on a segment storage device, thereby reading a plurality of fingerprints from the segment storage device into a cached copy of the fingerprint index;

wherein presence of a fingerprint in the fingerprint index indicates that the segment corresponding to the fingerprint has been previously stored on the segment storage device.

20. The system of claim 19 , further comprising:

looking up the fingerprint of the second, and subsequent, segments in the plurality of segments, in the cached copy of the fingerprint index;

wherein presence of a fingerprint in the fingerprint index indicates that the segment corresponding to the fingerprint has been previously stored on the segment storage device.

21. The system of claim 20 , further comprising:

in response to determining that the fingerprint is present in the fingerprint index or in the segment storage cache:

writing a reference to the segment having the fingerprint, to the segment storage device;

increasing a count of fingerprint lookup hits;

otherwise:

writing the segment corresponding to the fingerprint to the segment storage device;

writing the fingerprint, and a reference to the segment, to the fingerprint index; and

inserting the fingerprint, and reference to the segment, into the cached copy of the fingerprint index.

22. The system of claim 17 , further comprising, after deduplicating a threshold amount of received data for the subsequent generation of the stream:

computing a fingerprint cache hit ratio, as a ratio of cache hits to cache lookups;

determining a second fingerprint lookup index threshold that specifies a second amount of data that will be read from the subsequent stream, after which a fingerprint index lookup will be performed, the second fingerprint lookup index based at least in part on the hit ratio of the segment fingerprint lookups in the index cache of the subsequent stream, over the first amount of data.

23. The system of claim 17 , further comprising, in response to determining a write to storage is not a sequential stream write:

writing the segment to a storage container associated with a stream identifier of the stream of data;

writing the segment fingerprint to a fingerprint index in the storage container associated with the stream identifier of the stream of data.

24. The system of claim 17 , wherein the previous generation of the stream of data was the first generation of the stream of data, and the previous generation of the stream of data was written to segment storage fingerprint without deduplication.

Assignments (7)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (044535/0109) 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; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 060753/0414 →
RELEASE OF SECURITY INTEREST AT REEL 044535 FRAME 0001 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058298/0475 →
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 Nov 29, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 044535/0109 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Nov 29, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 044535/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 6, 2017
From: JENKINS, FANI; VISWANATHAN, SRIKANT; ALLU, YAMINI
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 043808/0423 →
Cited By (5)
US 12,189,493 US 12,265,457 US 12,411,831 US 12,423,014 US 12,639,168