IP Library Granted Patent US 12,032,534
Granted Patent B2
US 12,032,534 · App. 16/530,139 · Granted Jul 9, 2024

Inline deduplication using stream detection

Inventors: Nickolay Dalmatov (St. Petersburg, RU); Richard Ruef (Santa Cruz, CA); Kurt Everson (Richmond, TX)
Assignee: EMC IP Holding Company LLC
G06F16/215G06F16/24568
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 12,032,534
App. No.
16/530,139
Granted
Jul 9, 2024
Kind
B2
Abstract

A method and system is used in managing deduplication of data in storage systems. A first digest for a deduplication candidate is received. At least one stream associated with the deduplication candidate is detected. At least one neighboring digest segment of a first loaded digest segment associated with the at least one stream is loaded. Whether the digest is located in the at least one neighboring digest segment is determined. If the digest is not located in the at least one neighboring digest segment, the digest is processed.

Claims (46)

1. A method, comprising:

receiving a digest for a deduplication candidate;

detecting at least one stream associated with the deduplication candidate, wherein the at least one stream is detected based on analyzing a target volume of the deduplication candidate, a target logical unit of the deduplication candidate, a target logical unit identifier of the deduplication candidate, sequential writing of the deduplication candidate, writing targeted to a limited region of logical space associated with the deduplication candidate, or a client host and port identifiers of the deduplication candidate;

loading at least one neighboring digest segment of a first loaded digest segment associated with the at least one stream, wherein the at least one neighboring digest segment and the first digest segment are loaded in an index table associated with the at least one stream, and wherein the neighboring digest segment comprises a digest segment that is located sequentially preceding or sequentially following the first digest segment in the index table;

determining whether the digest is located in the at least one neighboring digest segment; and

based on a negative result of the determining, processing the digest, the processing including:

generating a mask;

determining if the digest qualifies as a sample digest based on the mask; and

based on a positive determination that the digest qualifies as a sample digest, searching for the digest in the index table associated with the at least one stream.

2. The method of claim 1 , wherein the processing further comprises, based on a positive determination that the digest qualifies as a sample digest, adding the digest to the index table associated with the at least one stream.

3. The method of claim 1 , wherein the loading at least one neighboring digest segment is in response to identifying the first loaded digest segment as a duplicate.

4. The method of claim 1 , wherein the first loaded digest segment is in a cache.

5. The method of claim 1 , wherein the loading the at least one neighboring digest segment of the first loaded digest segment comprises evicting at least one previously loaded digest segment.

6. The method of claim 5 , wherein the evicted at least one previously loaded digest segment is a digest segment other than the first loaded digest segment.

7. The method of claim 1 , wherein the loading the at least one neighboring digest segment of the first loaded digest segment is performed in response to loading the first loaded digest segment.

8. The method of claim 1 , wherein the processing further comprises, based on a determination that the digest does not qualify as a sample digest, loading the digest into a cache.

9. A system, comprising:

one or more processors; and

computer-executable program logic operating in memory, wherein the computer executable program logic enables execution across the one or more processors of:

receiving a digest for a deduplication candidate;

detecting at least one stream associated with the deduplication candidate, wherein the at least one stream is detected based on analyzing a target volume of the deduplication candidate, a target logical unit of the deduplication candidate, a target logical unit identifier of the deduplication candidate, sequential writing of the deduplication candidate, writing targeted to a limited region of logical space associated with the deduplication candidate, or a client host and port identifiers of the deduplication candidate;

loading at least one neighboring digest segment of a first loaded digest segment associated with the at least one stream, wherein the at least one neighboring digest segment and the first digest segment are loaded in an index table associated with the at least one stream, and wherein the neighboring digest segment comprises a digest segment that is located sequentially preceding or sequentially following the first digest segment in the index table;

determining whether the digest is located in the at least one neighboring digest segment; and

based on a negative result of the determining, processing the digest, the processing including:

generating a mask;

determining if the digest qualifies as a sample digest based on the mask; and

based on a positive determination that the digest qualifies as a sample digest, searching for the digest in the index table associated with the at least one stream.

10. The system of claim 9 , wherein the processing further comprises, based on a positive determination that the digest qualifies as a sample digest, adding the digest to the index table associated with the at least one stream.

11. The system of claim 9 , wherein the loading at least one neighboring digest segment is in response to identifying the first loaded digest segment as a duplicate.

12. The system of claim 9 , wherein the first loaded digest segment is in a cache.

13. The system of claim 9 , wherein the loading the at least one neighboring digest segment of the first loaded digest segment comprises evicting at least one previously loaded digest segment.

14. The system of claim 13 , wherein the evicted at least one previously loaded digest segment is a digest segment other than the first loaded digest segment.

15. The system of claim 9 , wherein the loading the at least one neighboring digest segment of the first loaded digest segment is performed in response to loading the first loaded digest segment.

16. The system of claim 9 , wherein the processing further comprises, based on a determination that the digest does not qualify as a sample digest, loading the digest into a cache.

17. A non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device causes the at least one processing device to perform the following steps:

receiving a digest for a deduplication candidate;

detecting at least one stream associated with the deduplication candidate, wherein the at least one stream is detected based on analyzing a target volume of the deduplication candidate, a target logical unit of the deduplication candidate, a target logical unit identifier of the deduplication candidate, sequential writing of the deduplication candidate, writing targeted to a limited region of logical space associated with the deduplication candidate, or a client host and port identifiers of the deduplication candidate;

loading at least one neighboring digest segment of a first loaded digest segment associated with the at least one stream, wherein the at least one neighboring digest segment and the first digest segment are loaded in an index table associated with the at least one stream, and wherein the neighboring digest segment comprises a digest segment that is located sequentially preceding or sequentially following the first digest segment in the index table;

determining whether the digest is located in the at least one neighboring digest segment; and

based on a negative result of the determining, processing the digest, the processing including:

generating a mask;

determining if the digest qualifies as a sample digest based on the mask; and

based on a positive determination that the digest qualifies as a sample digest, searching for the digest in the index table associated with the at least one stream.

18. The processor-readable storage medium of claim 17 , wherein the processing further comprises, based on a determination that the digest does not qualify as a sample digest, loading the digest into a cache.

19. The processor-readable storage medium of claim 17 , wherein the processing further comprises, based on a positive determination that the digest qualifies as a sample digest, adding the digest to the index table associated with the at least one stream.

20. The processor-readable storage medium of claim 17 , wherein the loading at least one neighboring digest segment is in response to identifying the first loaded digest segment as a duplicate.

Assignments (9)
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 (053311/0169) Recorded Jun 23, 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 060438/0742 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0571) Recorded Jun 23, 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 060436/0088 →
RELEASE OF SECURITY INTEREST AT REEL 050406 FRAME 421 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 058213/0825 →
SECURITY INTEREST Recorded Jun 5, 2020
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 053311/0169 →
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 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
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 050724/0571 →
SECURITY AGREEMENT Recorded Sep 17, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 050406/0421 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 11, 2019
From: DALMATOV, NICKOLAY; RUEF, RICHARD; EVERSON, KURT
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 050336/0731 →