IP Library › Granted Patent US 11,204,716
Granted Patent B2
US 11,204,716 · App. 16/264,022 · Granted Dec 21, 2021

Compression offloading to RAID array storage enclosure

Inventors: Boris Glimcher (Bnei Brak, IL); Amitai Alkalay (Kadima, IL); Zvi Schneider (Tel Aviv, IL)
Assignee: EMC IP Holding Company LLC
G06F3/0659G06F3/061G06F3/0608G06F3/0689G06F11/1076G06F12/0246G06F12/0882H03M7/30G06F2211/1014G06F2212/401G06F2212/7208
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,204,716
App. No.
16/264,022
Granted
Dec 21, 2021
Kind
B2
Abstract

A storage system comprises a plurality of enclosures and a storage controller. Each enclosure comprises at least one processing device and a plurality of drives configured in accordance with a redundant array of independent disks (RAID) arrangement. The storage controller obtains data pages associated with an input-output request, provides the data pages to a processing device of a given enclosure, and issues a command to the processing device to perform at least one operation based at least in part on the data pages. The processing device of the given enclosure receives the data pages from the storage controller, generates compressed data pages based at least in part on the received data pages, stores one or more of the compressed data pages on the plurality of drives according to the RAID arrangement and returns information associated with the storage of the compressed data pages to the storage controller.

Claims (114)

1. An apparatus comprising:

a storage system comprising a plurality of enclosures and a storage controller, each enclosure comprising at least one processing device coupled to memory and a redundant array of independent disks (RAID) arrangement comprising a plurality of drives, the at least one processing device being separate from the RAID arrangement;

the storage controller configured:

to obtain data pages associated with at least one input-output request;

to provide the obtained data pages to the at least one processing device of a given enclosure of the plurality of enclosures; and

to issue a command to the at least one processing device of the given enclosure to perform at least one operation based at least in part on the obtained data pages;

the at least one processing device of the given enclosure configured:

to receive the obtained data pages from the storage controller;

responsive to receiving the command from the storage controller, to generate compressed data pages based at least in part on the received data pages;

to store one or more of the compressed data pages on a stripe of the plurality of drives according to the RAID arrangement;

to determine that at least one other compressed data page of the compressed data pages does not fit on the stripe of the plurality of drives and has not been stored on the plurality of drives; and

to return information associated with the storage of the one or more of the compressed data pages to the storage controller, the information comprising an indication that the at least one other compressed data page does not fit on the stripe of the plurality of drives and has not been stored on the plurality of drives and a size of the at least one other compressed data page, the storage controller being configured to utilize the information to access the one or more of the compressed data pages stored on the plurality of drives;

wherein the storage controller is further configured:

to obtain additional data pages associated with another input-output request;

to determine an estimated size of data pages that when compressed by the at least one processing device of the given enclosure would fill a stripe;

to reduce the estimated size based at least in part on the size of the at least one other compressed data page found in the information;

to select one or more data pages of the additional data pages based at least in part on the reduced estimated size; and

to provide the selected one or more data pages of the additional data pages to the at least one processing device of the given enclosure.

2. The apparatus of claim 1 wherein the information comprises an indication of a location of each of the one or more compressed data pages that was stored on the plurality of drives and a size of each of the one or more compressed data pages that was stored on the plurality of drives.

3. The apparatus of claim 1 wherein generating the compressed data pages based at least in part on the received data pages comprises at least one of:

causing a compression offload engine of the storage system to compress the received data pages; and

compressing the received data pages by the at least one processing device of the given enclosure.

4. The apparatus of claim 1 wherein responsive to receiving a read command from the storage controller that targets a compressed data page stored in the plurality of drives, the at least one processing device of the given enclosure is configured:

to retrieve the targeted compressed data page from the plurality of drives;

to decompress the targeted compressed data page to generate a decompressed data page; and

to provide the decompressed data page to the storage controller.

5. The apparatus of claim 1

wherein responsive to receiving a read command from the storage controller that targets a compressed data page stored in the plurality of drives, the at least one processing device of the given enclosure is configured:

to retrieve the targeted compressed data page from the plurality of drives; and

to provide the targeted compressed data page to the storage controller;

wherein responsive to receiving targeted compressed data page from the at least one processing device of the given enclosure, the storage controller is configured:

to receive the targeted compressed data page from the at least one processing device of the given enclosure; and

to decompress the targeted compressed data page.

6. The apparatus of claim 1

wherein responsive an indication of a disk failure, the at least one processing device of the given enclosure is configured:

to read RAID parities from the plurality of drives;

to regenerate the one or more compressed data pages based at least in part on the RAID parities;

to decompress the regenerated one or more compressed data pages; and

to provide the one or more decompressed data pages to the storage controller.

7. A method comprising:

obtaining, by a storage controller of a storage system, data pages associated with at least one input-output request, the storage system comprising a plurality of enclosures and the storage controller, each enclosure comprising at least one processing device coupled to memory and a redundant array of independent disks (RAID) arrangement comprising a plurality of drives, the at least one processing device being separate from the RAID arrangement;

providing, by the storage controller, the obtained data pages to the at least one processing device of a given enclosure of the plurality of enclosures;

issuing, by the storage controller, a command to the at least one processing device of the given enclosure to perform at least one operation based at least in part on the obtained data pages;

receiving, by the at least one processing device of the given enclosure, the obtained data pages from the storage controller;

responsive to receiving the command from the storage controller, generating, by the at least one processing device of the given enclosure, compressed data pages based at least in part on the received data pages;

storing, by the at least one processing device of the given enclosure, one or more of the compressed data pages on the plurality of drives according to the RAID arrangement;

determining, by the at least one processing device of the given enclosure, that at least one other compressed data page of the compressed data pages does not fit on the stripe of the plurality of drives and has not been stored on the plurality of drives;

returning, by the at least one processing device of the given enclosure, information associated with the storage of the one or more of the compressed data pages to the storage controller, the information comprising an indication that the at least one other compressed data page does not fit on the stripe of the plurality of drives and has not been stored on the plurality of drives and a size of the at least one other compressed data page, the storage controller being configured to utilize the information to access the one or more of the compressed data pages stored on the plurality of drives;

obtaining, by the storage controller, additional data pages associated with another input-output request;

determining, by the storage controller, an estimated size of data pages that when compressed by the at least one processing device of the given enclosure would fill a stripe;

reducing, by the storage controller, the estimated size based at least in part on the size of the at least one other compressed data page found in the information;

selecting, by the storage controller, one or more data pages of the additional data pages based at least in part on the reduced estimated size; and

providing, by the storage controller, the selected one or more data pages of the additional data pages to the at least one processing device of the given enclosure.

8. The method of claim 7 wherein the information comprises an indication of a location of each of the one or more compressed data pages that was stored on the plurality of drives and a size of each of the one or more compressed data pages that was stored on the plurality of drives.

9. The method of claim 7 wherein generating the compressed data pages based at least in part on the received data pages comprises at least one of:

causing a compression offload engine of the storage system to compress the received data pages; and

compressing the received data pages by the at least one processing device of the given enclosure.

10. The method of claim 7 wherein the method further comprises:

receiving, by the at least one processing device of the given enclosure, the selected one or more data pages of the additional data pages from the storage controller;

generating, by the at least one processing device of the given enclosure, additional compressed data pages based at least in part on the selected one or more data pages; and

storing, by the at least one processing device of the given enclosure, the at least one other compressed data page and one or more of the additional compressed data pages together in another stripe on the plurality of drives.

11. The method of claim 7 wherein responsive to receiving, by the at least one processing device of the given enclosure, a read command from the storage controller that targets a compressed data page stored in the plurality of drives, the method further comprises:

retrieving, by the at least one processing device of the given enclosure, the targeted compressed data page from the plurality of drives;

decompressing, by the at least one processing device of the given enclosure, the targeted compressed data page to generate a decompressed data page;

providing, by the at least one processing device of the given enclosure, the decompressed data page to the storage controller.

12. The method of claim 7

wherein responsive to receiving, by the at least one processing device of the given enclosure, a read command from the storage controller that targets a compressed data page stored in the plurality of drives, the method further comprises:

retrieving, by the at least one processing device of the given enclosure, the targeted compressed data page from the plurality of drives; and

providing, by the at least one processing device of the given enclosure, the targeted compressed data page to the storage controller;

wherein the method further comprises:

receiving, by the storage controller, the targeted compressed data page from the at least one processing device of the given enclosure; and

decompressing, by the storage controller, the targeted compressed data page.

13. The method of claim 7 wherein responsive an indication of a disk failure, the method further comprises:

reading, by the at least one processing device of the given enclosure, RAID parities from the plurality of drives;

regenerating, by the at least one processing device of the given enclosure, the one or more compressed data pages based at least in part on the RAID parities;

decompressing, by the at least one processing device of the given enclosure, the regenerated one or more compressed data pages; and

providing, by the at least one processing device of the given enclosure, the one or more decompressed data pages to the storage controller.

14. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, the program code being executable by a storage system, the storage system comprising a plurality of enclosures and a storage controller, each enclosure comprising at least one processing device coupled to memory and a redundant array of independent disks (RAID) arrangement comprising a plurality of drives, the at least one processing device being separate from the RAID arrangement;

the program code, when executed by the storage controller of the storage system, causes the storage controller of the storage system:

to obtain data pages associated with at least one input-output request; and

to provide the obtained data pages to the at least one processing device of a given enclosure of the plurality of enclosures;

to issue a command to the at least one processing device of the given enclosure to perform at least one operation based at least in part on the obtained data pages;

the program code, when executed by the at least one processing device of the given enclosure, causes the at least one processing device of the given enclosure:

to receive the obtained data pages from the storage controller;

responsive to receiving the command from the storage controller, to generate compressed data pages based at least in part on the received data pages;

to store one or more of the compressed data pages on a stripe of the plurality of drives according to the RAID arrangement;

to determine that at least one other compressed data page of the compressed data pages does not fit on the stripe of the plurality of drives and has not been stored on the plurality of drives; and

to return information associated with the storage of the one or more of the compressed data pages to the storage controller, the information comprising an indication that the at least one other compressed data page does not fit on the stripe of the plurality of drives and has not been stored on the plurality of drives and a size of the at least one other compressed data page, the storage controller being configured to utilize the information to access the one or more of the compressed data pages stored on the plurality of drives;

wherein the program code, when executed by the storage controller of the storage system, further causes the storage controller of the storage system:

to obtain additional data pages associated with another input-output request;

to determine an estimated size of data pages that when compressed by the at least one processing device of the given enclosure would fill a stripe;

to reduce the estimated size based at least in part on the size of the at least one other compressed data page found in the information;

to select one or more data pages of the additional data pages based at least in part on the reduced estimated size; and

to provide the selected one or more data pages of the additional data pages to the at least one processing device of the given enclosure.

15. The computer program product of claim 14 wherein the information comprises an indication of a location of each of the one or more compressed data pages that was stored on the plurality of drives and a size of each of the one or more compressed data pages that was stored on the plurality of drives.

16. The computer program product of claim 14 wherein generating the compressed data pages based at least in part on the received data pages comprises at least one of:

causing a compression offload engine of the storage system to compress the received data pages; and

compressing the received data pages by the at least one processing device of the given enclosure.

17. The computer program product of claim 14

wherein the program code, when executed by the at least one processing device of the given enclosure, further causes the at least one processing device of the given enclosure:

to receive the selected one or more data pages of the additional data pages from the storage controller;

to generate additional compressed data pages based at least in part on the selected one or more data pages; and

to store the at least one other compressed data page and one or more of the additional compressed data pages together in another stripe on the plurality of drives.

18. The computer program product of claim 14 wherein responsive to receiving a read command from the storage controller that targets a compressed data page stored in the plurality of drives, the program code, when executed by the at least one processing device of the given enclosure, further causes the at least one processing device of the given enclosure:

to retrieve the targeted compressed data page from the plurality of drives, and at least one of:

decompress the targeted compressed data page to generate a decompressed data page and provide the decompressed data page to the storage controller; and

provide the targeted compressed data page to the storage controller.

19. The apparatus of claim 1 wherein the at least one processing device of the given enclosure is further configured:

to receive the selected one or more data pages of the additional data pages from the storage controller;

to generate additional compressed data pages based at least in part on the selected one or more data pages; and

to store the at least one other compressed data page and one or more of the additional compressed data pages together in another stripe on the plurality of drives.

20. The apparatus of claim 1 wherein determining the estimated size of data pages that when compressed by the at least one processing device of the given enclosure would fill a stripe comprises determining the estimated size that corresponds to one of:

a size that would fill a stripe after compression has been performed using a first compression ratio that is an average of a set of available compression ratios; and

a size that would fill a stripe after compression has been performed using a second compression ratio that is the highest compression ratio of the set of available compression ratios.

Assignments (4)
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 →
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 31, 2019
From: GLIMCHER, BORIS; ALKALAY, AMITAI; SCHNEIDER, ZVI
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 048212/0254 →
Continuity (1)
Related Publication 20200249869A1 · Aug 6, 2020
Cited By (1)
US 12,379,842