IP Library Granted Patent US 10,409,496
Granted Patent B1
US 10,409,496 · App. 15/499,467 · Granted Sep 10, 2019

Write tagging for selective avoidance of inline compression

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,409,496
App. No.
15/499,467
Granted
Sep 10, 2019
Kind
B1
Abstract

A technique for storing data selectively tags write requests received by a data storage system based on whether each write request is directed to a file having a file type on an exclusion list, thereby producing a set of tagged write requests directed to a file type on the exclusion list and a set of untagged write requests directed to a file type not on the exclusion list. The method further includes persistently storing tagged data specified by the set of tagged write requests without first compressing the tagged data, and persistently storing untagged data specified by the set of untagged write requests after compressing the untagged data.

Claims (66)

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

selectively tagging write requests received by the data storage system based on whether each write request is directed to a file having a file type on an exclusion list, thereby producing a set of tagged write requests directed to a file type on the exclusion list and a set of untagged write requests directed to a file type not on the exclusion list;

persistently storing tagged data specified by the set of tagged write requests without first compressing the tagged data; and

persistently storing untagged data specified by the set of untagged write requests after compressing at least some of the untagged data,

wherein selectively tagging write requests is performed by a manager of an upper-deck file system, the upper-deck file system built upon a single file within a lower-deck file system,

wherein the lower-deck file system allocates storage for accommodating writes from an address space, the lower-deck file system maintaining a first cursor pointing to a first address in the address space from which the lower-deck file system allocates storage space for sequential data and maintaining a second cursor pointing to a second address in the address space from which the lower-deck file system allocates storage space for random data, and

wherein the method further comprises allocating, by the lower-deck file system, storage space for aggregated batches of tagged data from the first cursor but not from the second cursor.

2. The method of claim 1 , further comprising specifying each file type on the exclusion list based on at least one of (i) a file extension of the file type and (ii) other file metadata specific to file type.

3. The method of claim 1 , further comprising:

prior to selectively tagging the write requests, receiving the write requests by the data storage system,

wherein, when persistently storing the untagged data, the untagged data have not been previously persistently stored in the data storage system, such that persistently storing the untagged data effects a first persistent storage of the untagged data in the data storage system.

4. The method of claim 3 , wherein selectively tagging write requests is performed by a tagger that operates at a first level of an IO stack in the data storage system, and wherein the method further comprises:

passing a set of the write requests, including both tagged and untagged write requests, from the first level of the IO stack to a second level of the IO stack;

at the second level of the IO stack, separating the tagged write requests from the untagged write requests.

5. The method of claim 2 , wherein one file type listed on the exclusion list is a video file type.

6. The method of claim 2 ,

wherein the data storage system translates write requests directed to different files of the upper-deck file system to write requests to the single file within the lower-deck file system.

7. The method of claim 6 , wherein each write request propagates from the upper-deck file system to the lower-deck file system, and wherein the method further comprises:

testing, by a manager of the lower-deck file system, each write request to determine whether that write request is tagged or untagged;

aggregating, by the manager of the lower-deck file system, tagged data into aggregated batches of tagged data that exclude untagged data; and

aggregating, by the manager of the lower-deck file system, untagged data into aggregated batches of untagged data that exclude tagged data;

wherein persistently storing the tagged data includes persistently storing the tagged data as the aggregated batches of tagged data, and

wherein persistently storing the untagged data includes (i) performing a trial compression on the aggregated batches of untagged data (ii) selectively storing a first aggregated batch of untagged data in compressed form in response to that aggregated batch of untagged data meeting a compression threshold, and (ii) selectively storing a second aggregated batch of untagged data in uncompressed form in response to that aggregated batch of untagged data failing to meet the compression threshold.

8. The method of claim 2 , further comprising:

receiving a write request specifying data to be written in the data storage system;

reading metadata accompanying the write request, the metadata providing a directive not to compress the data specified in the write request; and

in response to reading the metadata, tagging the write request such that the data specified in the write request is not compressed prior to being stored in the persistent storage.

9. The method of claim 8 , wherein the write request is a single-sector write request received as a heartbeat signal for determining whether the data storage system is functioning.

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:

selectively tag write requests received by the data storage system based on whether each write request is directed to a file having a file type on an exclusion list, thereby producing a set of tagged write requests directed to a file type on the exclusion list and a set of untagged write requests directed to a file type not on the exclusion list;

persistently store tagged data specified by the set of tagged write requests without first compressing the tagged data; and

persistently store untagged data specified by the set of untagged write requests after compressing at least some of the untagged data,

wherein the control circuitry constructed and arranged to selectively tag write requests is part of a manager of an upper-deck file system, the upper-deck file system built upon a single file within a lower-deck file system,

wherein the lower-deck file system is configured to allocate storage for accommodating writes from an address space, to maintain a first cursor pointing to a first address in the address space from which the lower-deck file system allocates storage space for a sequential data, and to maintain a second cursor pointing to a second address in the address space from which the lower-deck file system allocates storage space for random data, and

wherein the control circuitry is further constructed and arranged to allocate, by the lower-deck file system, storage space for aggregated batches of tagged data from the first cursor but not from the second cursor.

11. The data storage system of claim 10 , wherein the control circuitry is further constructed and arranged to specify each file type on the exclusion list based on at least one of (i) a file extension of the file type and (ii) other file metadata specific to file type.

12. The data storage system of claim 11 ,

wherein the control circuitry is further constructed and arranged to translate write requests directed to different files of the upper-deck file system to write requests to the single file within the lower-deck file system.

13. The data storage system of claim 12 , wherein the control circuitry is constructed and arranged to propagate the write request from the upper-deck file system to the lower-deck file system, and wherein the control circuitry is further constructed and arranged to:

test, by a manager of the lower-deck file system, each write request to determine whether that write request is tagged or untagged;

aggregate, by the manager of the lower-deck file system, tagged data into aggregated batches of tagged data that exclude untagged data; and

aggregate, by the manager of the lower-deck file system, untagged data into aggregated batches of untagged data that exclude tagged data;

wherein the control circuitry, constructed and arranged to persistently store the tagged data is constructed and arranged to persistently store the tagged data as the aggregated batches of tagged data, and

wherein the control circuitry, constructed and arranged to persistently store the untagged data, is constructed and arranged to (i) perform a trial compression on the aggregated batches of untagged data (ii) selectively store a first aggregated batch of untagged data in compressed form in response to that aggregated batch of untagged data meeting a compression threshold, and (ii) selectively store a second aggregated batch of untagged data in uncompressed form in response to that aggregated batch of untagged data failing to meet the compression threshold.

14. 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 of storing data, the method comprising:

selectively tagging write requests received by the data storage system based on whether each write request is directed to a file having a file type on an exclusion list, thereby producing a set of tagged write requests directed to a file type on the exclusion list and a set of untagged write requests directed to a file type not on the exclusion list;

persistently storing tagged data specified by the set of tagged write requests without first compressing the tagged data; and

persistently storing untagged data specified by the set of untagged write requests after compressing at least some of the untagged data,

wherein selectively tagging write requests is performed by a manager of an upper-deck file system, the upper-deck file system built upon a single file within a lower-deck file system,

wherein the lower-deck file system allocates storage for accommodating writes from an address space, the lower-deck file system maintaining a first cursor pointing to a first address in the address space from which the lower-deck file system allocates storage space for sequential data and maintaining a second cursor pointing to a second address in the address space from which the lower-deck file system allocates storage space for random data, and

wherein the method further comprises allocating, by the lower-deck file system, storage space for aggregated batches of tagged data from the first cursor but not from the second cursor.

15. The computer program product of claim 14 , wherein the method further comprises specifying each file type on the exclusion list based on at least one of (i) a file extension of the file type and (ii) other file metadata specific to file type.

16. The computer program product of claim 15 , wherein one file type listed on the exclusion list is a video file type.

17. The computer program product of claim 15 ,

wherein the data storage system translates write requests directed to different files of the upper-deck file system to write requests to the single file within the lower-deck file system.

18. The computer program product of claim 17 , wherein each write request propagates from the upper-deck file system to the lower-deck file system, and wherein the method further comprises:

testing, by a manager of the lower-deck file system, each write request to determine whether that write request is tagged or untagged;

aggregating, by the manager of the lower-deck file system, tagged data into aggregated batches of tagged data that exclude untagged data; and

aggregating, by the manager of the lower-deck file system, untagged data into aggregated batches of untagged data that exclude tagged data;

wherein persistently storing the tagged data includes persistently storing the tagged data as the aggregated batches of tagged data, and

wherein persistently storing the untagged data includes (i) performing a trial compression on the aggregated batches of untagged data (ii) selectively storing a first aggregated batch of untagged data in compressed form in response to that aggregated batch of untagged data meeting a compression threshold, and (ii) selectively storing a second aggregated batch of untagged data in uncompressed form in response to that aggregated batch of untagged data failing to meet the compression threshold.

19. The method of claim 15 , wherein the method further comprises:

receiving a write request specifying data to be written in the data storage system;

reading metadata accompanying the write request, the metadata providing a directive not to compress the data specified in the write request; and

in response to reading the metadata, tagging the write request such that the data specified in the write request is not compressed prior to being stored in the persistent storage.

20. The method of claim 19 , wherein the write request is a single-sector write request received as a heartbeat signal for determining whether the data storage system is functioning.

Assignments (12)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (051302/0528) 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 IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.); SECUREWORKS CORP.
Reel/Frame 060438/0593 →
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 (042769/0001) Recorded Apr 26, 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 (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 059803/0802 →
RELEASE OF SECURITY INTEREST AT REEL 051449 FRAME 0728 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
Reel/Frame 058002/0010 →
RELEASE OF SECURITY INTEREST AT REEL 042768 FRAME 0585 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058297/0536 →
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 Dec 31, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 051449/0728 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Dec 16, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 051302/0528 →
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 INTEREST (CREDIT) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 042768/0585 →
PATENT SECURITY INTEREST (NOTES) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 042769/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2017
From: SI, YINING; ARMANGAU, PHILIPPE; WANG, YUBING; SEIBEL, CHRISTOPHER A.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 042563/0975 →