IP Library › Granted Patent US 10,838,990
Granted Patent B1
US 10,838,990 · App. 14/038,637 · Granted Nov 17, 2020

System and method for improving data compression of a storage system using coarse and fine grained similarity

Inventors: Philip Shilane (Yardley, PA); Grant Wallace (Pennington, NJ); Frederick Douglis (Basking Ridge, NJ); Guanlin Lu (San Jose, CA)
Assignee: EMC IP HOLDING COMPANY LLC
G06F16/316G06F16/1752
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,838,990
App. No.
14/038,637
Filed
Sep 26, 2013
Granted
Nov 17, 2020
Kind
B1
Art Unit
2158
USPC
707/741
Abstract

Techniques for improving data compression of a storage system using coarse and fine grained similarity are described herein. According to one embodiment, region sketches for a plurality of regions of the set of data are generated, each region storing a plurality of data chunks. A region sketch index having a plurality of entries is maintained, each corresponding to one of the region sketches of the regions. The entries of the region sketch index are sorted based on the sketches of the regions, such that regions with an identical region sketch are positioned adjacent to each other within the region sketch index, representing similar regions. The data chunks of the similar regions that are identified based on the sorted entries of the region sketch index are reorganized to improve data compression of the data chunks of the similar regions.

Claims (46)

1. A computer-implemented method for indexing a plurality of data chunks of a set of data for a storage system, the method comprising:

generating, by a processor of a computer system, chunk sketches for the plurality data chunks of the set of data and region sketches for a plurality of regions of the set of data, each region being a compression region or a container and storing more than one data chunks, the plurality of regions storing the plurality of data chunks in a first ordering, wherein each chunk sketch includes a plurality of super features, each super feature being based on hashing one or more concatenated maximum hashes or minimum hashes of sub-regions of the corresponding data chunk, wherein the region sketches are generated based at least in part on the chunk sketches and include one or more features used for similarity matching for the data chunks stored in the respective regions of the storage system;

maintaining, in a memory of the computer system, a region sketch index having a plurality of entries, each corresponding to one of the region sketches of the regions;

sorting, by the processor, entries of the region sketch index stored in the memory based on the sketches of the regions, such that regions with an identical region sketch are positioned adjacent to each other within the region sketch index, the identical region sketch indicating the corresponding regions are similar regions;

maintaining, in the memory of the computer system, a chunk sketch index having a plurality of entries, each entry of the plurality of entries corresponding to one of the chunk sketches associated with the data chunks of a first set of similar regions associated with a first identical region sketch, the chunk sketch index excluding entries corresponding to chunk sketches associated with data chunks stored in regions not similar to the first set of similar regions;

sorting entries of the chunk sketch index based on the chunk sketches, such that data chunks with an identical chunk sketch are positioned adjacent to each other, wherein sorting the entries of the chunk sketch index further comprises: determining that a first chunk sketch of the chunk sketches includes a first super feature and a second super feature, sorting the entries of the chunk sketch index based on the first super feature, identifying a subset of the entries of the chunk sketch index that are associated with the first super feature and sorting the subset of the entries of the chunk sketch index based on the second super feature; and compressing and storing data chunks with the identical chunk sketch in one or more new regions when the number of chunks with the identical chunk sketch exceeds a predetermined threshold to improve a data compression of the storage system, the compressed data chunks resulting in smaller storage space required to store the compressed data chunks.

2. The method of claim 1 , wherein maintaining a region sketch index comprises:

determining a number of occurrences of a first sketch amongst all sketches of the regions; and

adding the first sketch to one of the entries of the region sketch index if the number of occurrences of the first sketch exceeds a predetermined threshold.

3. The method of claim 2 , wherein determining a number of occurrences of the first sketch comprises applying the first sketch to a predefined bloom filter to obtain the number of occurrence.

4. The method of claim 3 , further comprising, prior to applying the bloom filter, generating the bloom filter based on all sketches of the regions to obtain a counting bloom filter.

5. The method of claim 1 , further comprising generating a recipe to map locations of the data chunks before and after reorganizing the data chunks for subsequent restoration of one or more sets of data associated with the data chunks.

6. The method of claim 1 , wherein a chunk sketch of a data chunk is generated based on one or more features extracted from a portion of content of the data chunk, and wherein a region sketch of a region is generated based on one or more chunk sketches of the data chunks stored within the region.

7. The method of claim 6 , wherein generating region sketches can be done by; selecting among chunk sketches within the region that are minimal, maximal, match a predefined pattern or occur most frequently.

8. The method of claim 1 , wherein the first set of similar regions are removed to reclaim space.

9. The method of claim 1 , wherein the sets of data represent one or more files.

10. The method of claim 1 , wherein the sets of data are stored in a storage system.

11. A non-transitory machine-readable medium having Instructions stored therein, which when executed by a processor, cause the processor to perform a method for indexing a plurality of data chunks of a set of data for a storage system, the method comprising:

generating, by a processor of a computer system, chunk sketches for the plurality data chunks of the set of data and region sketches for a plurality of regions of the set of data, each region being a compression region or a container and storing more than one data chunks, the plurality of regions storing the plurality of data chunks in a first ordering, wherein each chunk sketch includes a plurality of super features, each super feature being based on hashing one or more concatenated maximum hashes or minimum hashes of sub-regions of the corresponding data chunk, wherein the region sketches are generated based at least in part on the chunk sketches and include one or more features used for similarity matching for the data chunks stored in the respective regions of the storage system;

maintaining, in a memory of the computer system, a region sketch index having a plurality of entries, each corresponding to one of the region sketches of the regions;

sorting, by the processor, entries of the region sketch index stored in the memory based on the sketches of the regions, such that regions with an identical region sketch are positioned adjacent to each other within the region sketch index, the identical region sketch indicating the corresponding regions are similar regions;

maintaining, in the memory of the computer system, a chunk sketch index having a plurality of entries, each entry of the plurality of entries corresponding to one of the chunk sketches associated with the data chunks of a first set of similar regions associated with a first identical region sketch, the chunk sketch index excluding entries corresponding to chunk sketches associated with data chunks stored in regions not similar to the first set of similar regions;

sorting entries of the chunk sketch index based on the chunk sketches, such that data chunks with an identical chunk sketch are positioned adjacent to each other, wherein sorting the entities of the chunk sketch index further comprises; determining that a first chunk sketch of the chunk sketches includes a first super feature and a second super feature, sorting the entries of the chunk sketch index based on the first super feature, identifying a subset of the entries of the chunk sketch index that are associated with the first super feature, and sorting the subset of the entries of the chunk sketch index based on the second super feature; and

compressing and storing data chunks with the identical chunk sketch in one or more new regions when the number of chunks with the identical chunk sketch exceeds a predetermined threshold to improve a data compression of the storage system, the compressed data chunks resulting in smaller storage space required to store the compressed data chunks.

12. The non-transitory machine-readable medium of claim 11 , wherein maintaining a region sketch index comprises:

determining a number of occurrences of a first sketch amongst all sketches of the regions; and

adding the first sketch to one of the entries of the region sketch index if the number of occurrences of the first sketch exceeds a predetermined threshold.

13. The non-transitory machine-readable medium of claim 12 , wherein determining a number of occurrences of the first sketch comprises applying the first sketch to a predefined bloom filter to obtain the number of occurrence.

14. The non-transitory machine-readable medium of claim 13 , wherein the method further comprises, prior to applying the bloom filter, generating the bloom filter based on all sketches of the regions to obtain a counting bloom filter.

15. The non-transitory machine-readable medium of claim 11 , wherein the method further comprises generating a recipe to map locations of the data chunks before and after reorganizing the data chunks for subsequent restoration of one or more sets of data associated with the data chunks.

16. The non-transitory machine-readable medium of claim 11 , wherein a chunk sketch of a data chunk is generated based on one or more features extracted from a portion of content of the data chunk, and wherein a region sketch of a region is generated based on one or more chunk sketches of the data chunks stored within the region.

17. The non-transitory machine-readable medium of claim 16 , wherein generating region sketches can be done by; selecting among chunk sketches within the region that are minimal, maximal, match a predefined pattern or occur most frequently.

18. A data processing system, comprising:

a processor; and

a memory coupled to the processor for storing instructions, which when executed from the memory, cause the processor to perform a method, the method including

generating, by the processor, chunk sketches for a plurality data chunks of a set of data and region sketches for a plurality of regions of the set of data, each region being a compression region or a container and storing more than one data chunks, the plurality of regions storing the plurality of data chunks in a first ordering, wherein each chunk sketch includes a plurality of super features, each super feature being based on hashing one or more concatenated maximum hashes or minimum hashes of sub-regions of the corresponding data chunk, wherein the region sketches are generated based at least in part on the chunk sketches and include one or more features used for similarity matching for the data chunks stored in the respective regions of a storage system,

maintaining, in the memory coupled to the processor, a region sketch index having a plurality of entries, each corresponding to one of the region sketches of the regions,

sorting, by the processor, entries of the region sketch index stored in the memory based on the sketches of the regions, such that regions with an identical region sketch are positioned adjacent to each other within the region sketch index, the identical region sketch indicating the corresponding regions are similar regions,

maintaining, in the memory of the computer system, a chunk sketch index having a plurality of entries, each entry of the plurality of entries corresponding to one of the chunk sketches associated with the data chunks of a first set of similar regions associated with a first identical region sketch, the chunk sketch index excluding entries corresponding to chunk sketches associated with data chunks stored in regions not similar to the first set of similar regions;

sorting entries of the chunk sketch index based on the chunk sketches, such that data chunks with an identical chunk sketch are positioned adjacent to each other, wherein sorting the entries of the chunk sketch index further comprising determining that a first chunk sketch of the chunk sketches includes first super feature and a second super feature, sorting the entries of the chunk sketch index based on the first super feature, identifying a subset of the entries the chunk sketch index that are associated with the first super feature, and sorting the subset of the entries of the chunk sketch index based on the second super feature; and

compressing and storing data chunks with the identical chunk sketch in the same region when the number of chunks with the identical chunk sketch exceeds a predetermined threshold to improve a data compression of the storage system, the compressed data chunks resulting in smaller storage space required to store the compressed data chunks.

19. The system of claim 18 , wherein maintaining a region sketch index comprises:

determining a number of occurrences of a first sketch amongst all sketches of the regions; and

adding the first sketch to one of the entries of the region sketch index if the number of occurrences of the first sketch exceeds a predetermined threshold.

20. The system of claim 19 , wherein determining a number of occurrences of the first sketch comprises applying the first sketch to a predefined bloom filter to obtain the number of occurrence.

21. The system of claim 20 , wherein the method further comprises, prior to applying the bloom filter, generating the bloom filter based on all sketches of the regions to obtain a counting bloom filter.

Assignments (10)
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 (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2013
From: SHILANE, PHILIP; WALLACE, GRANT; DOUGLIS, FREDERICK; LU, GUANLIN
To: EMC CORPORATION
Reel/Frame 031303/0063 →
Cited By (8)
US 12,386,542 US 12,413,243 US 12,430,056 US 12,436,844 US 12,474,852 US 12,498,869 US 12,687,967 US 12,737,113