IP Library Granted Patent US 10,365,828
Granted Patent B1
US 10,365,828 · App. 15/966,878 · Granted Jul 30, 2019

Techniques for efficiently organizing storage of compressed extents

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,365,828
App. No.
15/966,878
Granted
Jul 30, 2019
Kind
B1
Abstract

A technique for efficiently storing compressed data of a storage object in a data storage includes (a) receiving, in a cache buffer, a number, U, of uncompressed blocks of a uniform size, the uncompressed data blocks received in write requests directed to the storage object; (b) compressing the uncompressed blocks of the cache buffer into respective compressed extents; (c) performing an optimization operation including generating a set of distributions of compressed extents among a plurality of containers and searching the set for a distribution having a minimal total amount of storage taken up by its respective plurality of containers, each container having a respective size equal to a respective integer multiple of the uniform size of the uncompressed data blocks; and (d) storing the compressed extents within a plurality of containers in persistent storage in accordance with the distribution having the minimal total amount of storage taken up by its respective plurality of containers.

Claims (34)

1. A method of efficiently storing compressed data of a storage object in a data storage system, the method comprising:

receiving, in a cache buffer, a number, U, of uncompressed data blocks of a uniform size, the uncompressed data blocks received within write requests directed to the storage object;

compressing the U uncompressed data blocks of the cache buffer into respective compressed extents;

performing an optimization operation including generating a set of distributions of compressed extents among a plurality of containers and searching the set for a distribution having a minimal total amount of storage taken up by its respective plurality of containers, each container having a respective size equal to a respective integer multiple of the uniform size of the uncompressed data blocks; and

storing the compressed extents within a plurality of containers in persistent storage in accordance with the distribution having the minimal total amount of storage taken up by its respective plurality of containers.

2. The method of claim 1 wherein each container is configured to store no more than a predefined maximum allowable number of compressed extents.

3. The method of claim 2 wherein generating the set includes excluding from consideration any compressed extent that is not at least 512 bytes smaller than the uncompressed data block from which it was compressed.

4. The method of claim 2 wherein compressing the U uncompressed data blocks of the cache buffer into respective compressed extents includes prefixing each compressed extent with a fixed-size header that describes that compressed extent.

5. The method of claim 4 wherein performing the optimization operation includes determining a compressed size of each compressed extent including the prefixed header and rounding up to the next integer multiple of 512 bytes.

6. The method of claim 5 wherein performing the optimization operation further includes:

sorting the compressed extents in order of their compressed sizes; and

assigning the compressed extents into the plurality of segments using one of a first fit decreasing heuristic, a best fit decreasing heuristic, and a modified first fit decreasing heuristic.

7. The method of claim 5 wherein performing the optimization operation further includes:

summing the compressed size of each compressed extent to yield a sum;

rounding the sum up to the next integer multiple of the uniform size of the uncompressed data blocks to yield a starting size; and

generating and searching a space of distributions among pluralities of containers having a combined size equal to the starting size and iteratively increasing the combined size of the space until a solution is found.

8. The method of claim 2 wherein performing the optimization operation includes searching the set of distributions using a greedy technique.

9. The method of claim 2 wherein receiving the U uncompressed data blocks includes receiving at least 3 times the predefined maximum and no more than 4 times the predefined maximum.

10. The method of claim 2 wherein the predefined maximum is less than 100.

11. The method of claim 2 wherein the predefined maximum is equal to 12 and U is equal to 36.

12. The method of claim 1 wherein storing the compressed extents within the plurality of containers in the persistent storage includes storing, for each of the plurality of containers, a respective mapping structure within the persistent storage, the mapping structure mapping particular blocks of the storage object to particular offsets within that container.

13. An apparatus for efficiently storing compressed data of a storage object, the apparatus comprising:

persistent storage;

network interface circuitry for connecting to a network; and

processing circuitry coupled to memory configured to:

receive, from the network interface circuitry, in a cache buffer of the memory, a number, U, of uncompressed data blocks of a uniform size, the uncompressed data blocks received within write requests directed to the storage object;

compress the U uncompressed data blocks of the cache buffer into respective compressed extents;

performing an optimization operation including generating a set of distributions of compressed extents among a plurality of containers and searching the set for a distribution having a minimal total amount of storage taken up by its respective plurality of containers, each container having a respective size equal to a respective integer multiple of the uniform size of the uncompressed data blocks; and

storing the compressed extents within a plurality of containers in the persistent storage in accordance with the distribution having the minimal total amount of storage taken up by its respective plurality of containers.

14. A computer program product comprising a non-transitory computer-readable storage medium storing a set of instructions, which, when executed by a computing device, causes the computing device to store compressed data of a storage object in persistent storage by:

receiving, in a cache buffer, a number, U, of uncompressed data blocks of a uniform size, the uncompressed data blocks received in write requests directed to the storage object;

compressing the U uncompressed data blocks of the cache buffer into respective compressed extents;

performing an optimization operation including generating a set of distributions of compressed extents among a plurality of containers and searching the set for a distribution having a minimal total amount of storage taken up by its respective plurality of containers, each container having a respective size equal to a respective integer multiple of the uniform size of the uncompressed data blocks; and

storing the compressed extents within a plurality of containers in the persistent storage in accordance with the distribution having the minimal total amount of storage taken up by its respective plurality of containers.

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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 27, 2018
From: ARMANGAU, PHILIPPE; BASSOV, IVAN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 046483/0096 →
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 →
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 →