IP Library › Granted Patent US 11,194,498
Granted Patent B1
US 11,194,498 · App. 15/662,676 · Granted Dec 7, 2021

Inline compression with small-write compression avoidance

Inventors: Yining Si (Sherborn, MA); Philippe Armangau (Acton, MA); Ivan Bassov (Brookline, MA); Christopher A. Seibel (Walpole, MA)
Assignee: EMC IP Holding Company LLC
G06F3/0643G06F3/0608G06F16/1744G06F16/22H03M7/30
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 11,194,498
App. No.
15/662,676
Granted
Dec 7, 2021
Kind
B1
Abstract

A technique for performing writes in a storage system that supports data compression tests incoming writes to determine whether the amount of data to be written is less than a predetermined threshold. If so, the storage system avoids compression and stores the amount of data as received without compressing it. If not, the storage system performs compression and stores the incoming data as a compressed extent.

Claims (49)

1. A method of storing data in a file system, the method comprising:

receiving multiple write requests directed to a file of the file system, each of the write requests specifying a respective set of data to be stored in the file of the file system, each set of data having a respective size;

in response to a first set of data specified by one of the write requests to the file having an uncompressed size that equals or exceeds a predetermined threshold, (i) performing a compression operation on the first set of data and (ii) storing a compressed version of the first set of data within the file system; and

in response to a second set of data specified by another of the write requests to the file having an uncompressed size that falls below the predetermined threshold, storing the second set of data in uncompressed form within the file system without performing a compression operation on the second set of data,

wherein the file system includes (i) an address space for arranging blocks, each block providing a unit of allocatable space in the file system, and (ii) multiple segments, each segment including a distinct set of multiple contiguous blocks in the address space, and wherein the first set of data and the second set of data are stored together within a particular segment of the multiple segments,

wherein the method further comprises dynamically adjusting the predetermined threshold based on compression ratios achieved for compressed data in the file system, including decreasing the predetermined threshold in response to detecting higher compression ratios and increasing the predetermined threshold in response to detecting lower compression ratios.

2. The method of claim 1 , wherein the particular segment includes multiple blocks having a uniform block size, and wherein the predetermined threshold does not exceed the uniform block size.

3. The method of claim 2 , wherein storing the second set of data in uncompressed form is performed without zero-padding the second set of data, such that the second set of data occupies an amount of space in the particular segment that is less than the predetermined threshold.

4. The method of claim 2 , further comprising:

storing a first compression header in the particular segment, the first compression header providing first metadata pertaining to the first set of data and storing an indication that the first set of data is compressed; and

storing a second compression header in the particular segment, the second compression header providing second metadata pertaining to the second set of data and storing an indication that the second set of data is uncompressed.

5. The method of claim 4 , wherein, when receiving the write requests, the second set of data is addressed to a particular range within a logical block of a file in the file system, and wherein storing the second compression header includes identifying, within the second compression header, the particular range to which the second set of data is addressed within the logical block.

6. The method of claim 5 , wherein identifying the particular range to which the second set of data is addressed within the logical block includes providing a sector map of the logical block, the sector map indicating, for each sector location of the logical block, whether that sector location includes at least part of the second set of data.

7. The method of claim 6 , further comprising:

receiving a read request to read the logical block;

accessing the second set of data from the particular segment;

identifying, from the sector map, a set of sector locations in the logical block that include the second set of data; and

returning a reconstructed logical block in response to the read request, the reconstructed logical block including (i) the second set of data at the sector locations indicated by sector map and (ii) zeros elsewhere.

8. The method of claim 4 , wherein the second set of data occupies a particular region within the particular segment, and wherein the method further comprising:

receiving a write request specifying a third set of data to be stored in the file system, the third set of data addressed to a second range within the logical block;

producing a combined set of data that includes both the second set of data and the third set of data;

generating a compressed version of the combined set of data; and

storing the compressed version of the combined set of data within the particular region of the particular segment.

9. The method of claim 8 , further comprising updating the second compression header to indicate that the combined set of data stored in the particular region of the particular segment is compressed.

10. A data storage system, comprising control circuitry that includes a set of processing units coupled to memory, the control circuitry constructed and arranged to:

receive multiple write requests directed to a file of the file system, each of the write requests specifying a respective set of data to be stored in the file of the file system, each set of data having a respective size;

in response to a first set of data specified by one of the write requests to the file having an uncompressed size that equals or exceeds a predetermined threshold, (i) perform a compression operation on the first set of data and (ii) store a compressed version of the first set of data within the file system; and

in response to a second set of data specified by another of the write requests to the file having an uncompressed size that falls below the predetermined threshold, store the second set of data in uncompressed form within the file system without performing a compression operation on the second set of data.

11. A computer program product including a set of non-transitory, computer-readable media having instructions which, when executed by control circuitry of a data storage system, cause the control circuitry to perform a method for storing data, the method comprising:

receiving multiple write requests directed to a file of the file system, each of the write requests specifying a respective set of data to be stored in the file of the file system, each set of data having a respective size;

in response to a first set of data specified by one of the write requests to the file having an uncompressed size that equals or exceeds a predetermined threshold, (i) performing a compression operation on the first set of data and (ii) storing a compressed version of the first set of data within the file system; and

in response to a second set of data specified by another of the write requests to the file having an uncompressed size that falls below the predetermined threshold, storing the second set of data in uncompressed form within the file system without performing a compression operation on the second set of data.

12. The computer program product of claim 11 , wherein the file system includes (i) an address space for arranging blocks, each block providing a unit of allocatable space in the file system, and (ii) multiple segments, each segment including a distinct set of multiple contiguous blocks in the address space, and wherein the first set of data and the second set of data are stored together within a particular segment of the multiple segments, and wherein the particular segment includes multiple blocks having a uniform block size, and wherein the predetermined threshold does not exceed the uniform block size.

13. The computer program product of claim 12 , wherein storing the second set of data in uncompressed form is performed without zero-padding the second set of data, such that the second set of data occupies an amount of space in the particular segment that is less than the predetermined threshold.

14. The computer program product of claim 12 , wherein the method further comprises:

storing a first compression header in the particular segment, the first compression header providing first metadata pertaining to the first set of data and storing an indication that the first set of data is compressed; and

storing a second compression header in the particular segment, the second compression header providing second metadata pertaining to the second set of data and storing an indication that the second set of data is uncompressed.

15. The method of claim 14 , wherein, when receiving the write requests, the second set of data is addressed to a particular range within a logical block of a file in the file system, and wherein storing the second compression header includes identifying, within the second compression header, the particular range to which the second set of data is addressed within the logical block.

16. The computer program product of claim 14 , wherein identifying the particular range to which the second set of data is addressed within the logical block includes providing a sector map of the logical block, the sector map indicating, for each sector location of the logical block, whether that sector location includes at least part of the second set of data.

17. The computer program product of claim 16 , wherein the method further comprises:

receiving a read request to read the logical block;

accessing the second set of data from the particular segment;

identifying, from the sector map, a set of sector locations in the logical block that include the second set of data; and

returning a reconstructed logical block in response to the read request, the reconstructed logical block including (i) the second set of data at the sector locations indicated by sector map and (ii) zeros elsewhere.

18. The method of claim 1 , further comprising:

receiving additional data for writing to the file of the file system, the additional data including a first plurality of data sets each being at least as large as the predetermined threshold and a second plurality of data sets each being smaller than the predetermined threshold;

selectively compressing each of the first plurality of data sets; and

selectively avoiding compression for each of the second plurality of data sets,

wherein selectively avoiding compression for each of the second plurality of data sets avoids creation of storage regions that have a high likelihood of becoming holes upon subsequent overwrites.

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 (043775/0082) 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 060958/0468 →
RELEASE OF SECURITY INTEREST AT REEL 043772 FRAME 0750 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/0606 →
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 Jan 11, 2018
From: ARMANGAU, PHILIPPE
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 044598/0384 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Sep 6, 2017
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 043775/0082 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2017
From: SI, YINING; BASSOV, IVAN; SEIBEL, CHRISTOPHER A.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 043510/0549 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Sep 6, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 043772/0750 →
Cited By (2)
US 12,455,697 US 12,579,007