IP Library Granted Patent US 11,853,568
Granted Patent B2
US 11,853,568 · App. 17/076,208 · Granted Dec 26, 2023

Front-end offload of storage system hash and compression processing

Inventors: Lior Kamran (Rishon LeZion, IL); Amitai Alkalay (Kadima, IL)
Assignee: EMC IP Holding Company LLC
G06F3/064G06F3/067G06F3/0608G06F3/0629G06F3/0653G06F3/0659G06F3/0683G06F21/602
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,853,568
App. No.
17/076,208
Granted
Dec 26, 2023
Kind
B2
Abstract

A storage system in one embodiment comprises a front-end device and a first storage node corresponding to the front-end device. The first storage node comprises a processor that is separate from the front-end device. The front-end device is configured to obtain a write operation that comprises at least a first block of data and to calculate a hash digest based at least in part on the first block of data. The front-end device is configured to provide the hash digest to the processor. The processor is configured to identify a first data page that comprises a second block of data that is a target for replacement by the first block of data and to identify a second storage node based at least in part on the first data page. The processor is configured to transmit the hash digest to the second storage node.

Claims (103)

1. An apparatus comprising:

a storage system comprising:

a plurality of storage nodes each comprising a plurality of storage devices;

a first storage node of the plurality of storage nodes comprising a front-end device, the front-end device comprising processing circuitry, the first storage node further comprising at least one first processor and memory that are separate from at least one second processor and memory of the processing circuitry of the front-end device;

the front-end device being configured:

to obtain a write operation, the write operation comprising at least a first block of data;

to calculate a hash digest based at least in part on the first block of data; and

to provide the hash digest to the at least one first processor;

the at least one first processor being configured:

to identify a first data page that comprises a second block of data that is a target for replacement by the first block of data;

to identify a second storage node of the plurality of storage nodes based at least in part on the first data page having a corresponding hash signature that indicates that the first data page is stored in one or more of the storage devices of the second storage node; and

to transmit the hash digest to the second storage node;

the front-end device of the first storage node being further configured:

to compress the first block of data; and

to provide the compressed first block of data to the at least one first processor of the first storage node;

the at least one first processor of the first storage node being further configured to store the compressed first block of data in a write cache of the storage system;

wherein the at least one first processor of the first storage node is further configured:

to obtain a hash signature for a second data page from the second storage node;

to identify a third storage node based at least in part on the hash signature of the second data page; and

to transmit the hash signature of the second data page to the third storage node;

wherein the third storage node is configured:

to obtain each block of the first data page that is not being changed as a result of being overwritten by the write operation from the second storage node;

to separately compress each obtained block of data that is not being changed as a result of being overwritten by the write operation;

to obtain the compressed first block of data from the write cache;

to generate the second data page by combining the compressed blocks of data that are not being changed as a result of being overwritten by the write operation with the compressed first block of data; and

to store the second data page in one or more of the storage devices of the third storage node.

2. The apparatus of claim 1 wherein the second storage node is configured:

to obtain a compressed version of the first data page from the one or more storage devices of the second storage node, wherein the compressed version was previously generated by one of (i) the first storage node and provided by the first storage node to the second storage node, and (ii) the second storage node;

to decompress the compressed version of the first data page;

to calculate a hash digest for each block of the first data page that is not being changed in the second storage node as a result of being overwritten by the write operation;

to calculate the hash signature for the second data page based at least in part on the hash digests calculated for each block; and

to transmit the hash signature for the second data page to the first storage node.

3. The apparatus of claim 1 wherein:

the front-end device of the first storage node is further configured:

to generate compression information that corresponds to the compression of the first block of data, the compression information comprising at least one of an indication that the first block of data is compressed, a type of compression used on the first block of data and a size of the compressed first block of data; and

to provide the compression information to the at least one first processor of the first storage node; and

the at least one first processor of the first storage node being further configured to store the compression information in metadata associated with the storage of the first block of data in the write cache.

4. The apparatus of claim 1 wherein the third storage node is further configured to store compression information corresponding to the second data page in metadata of one or more storage devices of the third storage node, the compression information indicating that the blocks of the second data page are compressed individually and an indication of a compression type and compression size for each of the blocks of the second data page.

5. A method comprising:

obtaining, by a front-end device of a first storage node of a storage system, a write operation, the write operation comprising at least a first block of data, the front-end device comprising processing circuitry;

calculating, by the front-end device of the first storage node, a hash digest based at least in part on the first block of data;

providing, by the front-end device of the first storage node, the hash digest to at least one first processor of the first storage node, the first storage node comprising the at least one first processor and further comprising memory coupled to the at least one first processor, the at least one first processor and the memory being separate from at least one second processor and memory of the processing circuitry of the front-end device;

identifying, by the at least one first processor of the first storage node, a first data page that comprises a second block of data that is a target for replacement by the first block of data; and

identifying, by the at least one first processor of the first storage node, a second storage node based at least in part on the first data page having a corresponding hash signature that indicates that the first data page is stored in one or more storage devices of the second storage node; and

transmitting, by the at least one first processor of the first storage node, the hash digest to the second storage node;

wherein the method further comprises:

compressing, by the front-end device, the first block of data;

providing, by the front-end device, the compressed first block of data to the at least one first processor of the first storage node;

storing, by the at least one first processor of the first storage node, the compressed first block of data in a write cache of the storage system;

obtaining, by the at least one first processor of the first storage node, a hash signature for a second data page from the second storage node;

identifying, by the at least one first processor of the first storage node, a third storage node based at least in part on the hash signature of the second data page;

transmitting, by the at least one first processor of the first storage node, the hash signature of the second data page to the third storage node;

obtaining, by the third storage node, each block of the first data page that is not being changed as a result of being overwritten by the write operation from the second storage node;

separately compressing, by the third storage node, each obtained block of data that is not being changed as a result of being overwritten by the write operation;

obtaining, by the third storage node, the compressed first block of data from the write cache;

generating, by the third storage node, the second data page by combining the compressed blocks of data that are not being changed as a result of being overwritten by the write operation with the compressed first block of data; and

storing, by the third storage node, the second data page in one or more storage devices of the third storage node.

6. The method of claim 5 wherein the second storage node is configured:

to obtain a compressed version of the first data page from the one or more storage devices of the second storage node, wherein the compressed version was previously generated by one of (i) the first storage node and provided by the first storage node to the second storage node, and (ii) the second storage node;

to decompress the compressed version of the first data page;

to calculate a hash digest for each block of the first data page that is not being changed in the second storage node as a result of being overwritten by the write operation;

to calculate the hash signature for the second data page based at least in part on the hash digests calculated for each block; and

to transmit the hash signature for the second data page to the first storage node.

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

generating, by the front-end device, compression information that corresponds to the compression of the first block of data, the compression information comprising at least one of an indication that the first block of data is compressed, a type of compression used on the first block of data and a size of the compressed first block of data;

providing, by the front-end device, the compression information to the at least one first processor of the first storage node; and

storing, by the at least one first processor of the first storage node, the compression information in metadata associated with the storage of the first block of data in the write cache.

8. The method of claim 5 wherein the third storage node is further configured to store compression information corresponding to the second data page in metadata of one or more storage devices of the third storage node, the compression information indicating that the blocks of the second data page are compressed individually and an indication of a compression type and compression size for each of the blocks of the second data page.

9. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein:

at least a portion of the program code when executed by a front-end device of a storage system, the front-end device comprising processing circuitry, causes the front-end device:

to obtain a write operation, the write operation comprising at least a first block of data;

to calculate a hash digest based at least in part on the first block of data; and

to provide the hash digest to at least one first processor of a first storage node of the storage system, the first storage node comprising the front-end device, the first storage node comprising the at least one first processor, and further comprising memory coupled to the at least one first processor, the at least one first processor and the memory being separate from at least one second processor and memory of the processing circuitry of the front-end device; and

at least a portion of the program code when executed by the at least one first processor of the first storage node causes the at least one first processor:

to identify a first data page that comprises a second block of data that is a target for replacement by the first block of data;

to identify a second storage node based at least in part on the first data page having a corresponding hash signature that indicates that the first data page is stored in one or more storage devices of the second storage node; and

to transmit the hash digest to the second storage node;

at least a portion of the program code when executed by the front-end device further causes the front-end device:

to compress the first block of data; and

to provide the compressed first block of data to the at least one first processor of the first storage node;

at least a portion of the program code when executed by the at least one first processor of the first storage node further causes the at least one first processor to store the compressed first block of data in a write cache of the storage system; and

at least a portion of the program code when executed by the at least one first processor of the first storage node further causes the at least one first processor:

to obtain a hash signature for a second data page from the second storage node;

to identify a third storage node based at least in part on the hash signature of the second data page; and

to transmit the hash signature of the second data page to the third storage node;

wherein the third storage node is configured:

to obtain each block of the first data page that is not being changed as a result of being overwritten by the write operation from the second storage node;

to separately compress each obtained block of data that is not being changed as a result of being overwritten by the write operation;

to obtain the compressed first block of data from the write cache;

to generate the second data page by combining the compressed blocks of data that are not being changed as a result of being overwritten by the write operation with the compressed first block of data; and

to store the second data page in one or more storage devices of the third storage node.

10. The computer program product of claim 9 wherein the second storage node is configured:

to obtain a compressed version of the first data page from the one or more storage devices of the second storage node, wherein the compressed version was previously generated by one of (i) the first storage node and provided by the first storage node to the second storage node, and (ii) the second storage node;

to decompress the compressed version of the first data page;

to calculate a hash digest for each block of the first data page that is not being changed in the second storage node as a result of being overwritten by the write operation;

to calculate the hash signature for the second data page based at least in part on the hash digests calculated for each block; and

to transmit the hash signature for the second data page to the first storage node.

11. The computer program product of claim 9 wherein:

at least a portion of the program code when executed by the front-end device further causes the front-end device:

to generate compression information that corresponds to the compression of the first block of data, the compression information comprising at least one of an indication that the first block of data is compressed, a type of compression used on the first block of data and a size of the compressed first block of data; and

to provide the compression information to the at least one first processor of the first storage node; and

at least a portion of the program code when executed by the at least one first processor of the first storage node further causes the at least one first processor to store the compression information in metadata associated with the storage of the first block of data in the write cache.

12. The computer program product of claim 9 wherein the third storage node is further configured to store compression information corresponding to the second data page in metadata of one or more storage devices of the third storage node, the compression information indicating that the blocks of the second data page are compressed individually and an indication of a compression type and compression size for each of the blocks of the second data page.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (054475/0523) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 060332/0664 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (054475/0434) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 060332/0740 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (054475/0609) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0570 →
RELEASE OF SECURITY INTEREST AT REEL 054591 FRAME 0471 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0463 →
SECURITY INTEREST Recorded Nov 18, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 054475/0609 →
SECURITY INTEREST Recorded Nov 18, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 054475/0434 →
SECURITY INTEREST Recorded Nov 18, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 054475/0523 →
SECURITY AGREEMENT Recorded Nov 13, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 054591/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 21, 2020
From: KAMRAN, LIOR; ALKALAY, AMITAI
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 054128/0591 →
Continuity (1)
Related Publication 20220121361A1 · Apr 21, 2022
Cited By (1)
US 12,530,304