IP Library Granted Patent US 11,435,912
Granted Patent B2
US 11,435,912 · App. 17/246,267 · Granted Sep 6, 2022

Method, electronic device, and computer program product for data storage

Inventors: Weining Zou (Shanghai, CN); Gary Jialei Wu (Shanghai, CN); Zhiyao Zhang (Shanghai, CN)
Assignee: EMC IP HOLDING COMPANY LLC
G06F3/0631G06F3/064G06F3/0619G06F3/0652G06F3/0659G06F3/0673
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,435,912
App. No.
17/246,267
Granted
Sep 6, 2022
Kind
B2
Abstract

Data storage is disclosed. For instance, a request for storing target data is received including the target data and indicating the number of copies of the target data to be stored, based upon which storage chunks for storing the target data are allocated. Each storage chunk includes a data segment and a coding segment, and a group of the storage chunks are respectively configured to store a number of copies of the target data. The first number of copies are written to the data segment of each storage chunk in the group respectively. For one of the group of storage chunks, first check information is generated for checking data stored in the data segment of the storage chunk. Further, the first check information is written to the coding segment of each storage chunk in the group of storage chunks. The efficiency of multi-copy data storage is increased while reducing memory consumption.

Claims (73)

1. A method, comprising:

receiving, by a system comprising a processor, a request for storing target data, the request comprising the target data and indicating a number of copies of the target data to be stored;

allocating, based on the target data and the number of copies, a plurality of storage chunks for storing the copies of the target data,

each storage chunk of the plurality of storage chunks comprising a respective data segment configured to store respective data and a respective coding segment configured to store respective check information, and a group of storage chunks in the plurality of storage chunks being respectively configured to store a first number of copies of the target data;

writing the first number of copies to the respective data segments of each storage chunk in the group of storage chunks respectively;

generating, for one storage chunk in the group of storage chunks, first check information based on the respective data stored in the respective data segment of the one storage chunk; and

writing the first check information to the respective coding segments of each storage chunk in the group of storage chunks respectively.

2. The method according to claim 1 , wherein at least one storage chunk in the plurality of storage chunks is configured to store a second number of copies of the target data, and the method further comprises:

writing the second number of copies to at least one respective data segment of the at least one storage chunk;

generating second check information based on the respective data stored in the at least one respective data segment of the at least one storage chunk; and

writing the second check information to at least one respective coding segment of the at least one storage chunk.

3. The method according to claim 2 , wherein writing the second number of copies to the at least one respective data segments of the at least one storage chunk comprises:

generating the second number of data blocks based on the second number of copies, each data block of the second number of data blocks comprising a copy and an identifier associated with the request; and

writing the second number of data blocks to the at least one respective data segments of the at least one storage chunk.

4. The method according to claim 2 , further comprising:

in response to the second number of copies being written to the at least one respective data segments of the at least one storage chunk, determining whether there is an unoccupied space in the at least one respective data segments of the at least one storage chunk; and

in response to determining that there is the unoccupied space in the at least one respective data segments of the at least one storage chunk, filling the space with invalid data.

5. The method according to claim 2 , wherein generating the second check information comprises:

generating, based on the data stored in the at least one respective data segments of the at least one storage chunk, an erasure code as the second check information.

6. The method according to claim 1 , wherein writing the first number of copies to the respective data segments of each storage chunk in the group of storage chunks respectively comprises:

generating the first number of data blocks based on the first number of copies, each data block of the first number of data blocks comprising a copy and an identifier associated with the request; and

writing the first number of data blocks to the respective data segments of each storage chunk in the group of storage chunks respectively.

7. The method according to claim 1 , further comprising:

for each storage chunk in the group of storage chunks,

in response to the first number of copies being written to the respective data segment of the storage chunk, determining whether there is an unoccupied space in the respective data segment of the storage chunk; and

in response to determining that there is the unoccupied space in the respective data segment of the storage chunk, filling the space with invalid data.

8. The method according to claim 1 , wherein generating the first check information comprises:

generating, based on the data stored in the respective data segment of the storage chunk, an erasure code as the first check information.

9. An electronic device, comprising:

at least one processing unit; and

at least one memory coupled to the at least one processing unit and storing instructions for execution by the at least one processing unit, wherein the instructions, when executed by the at least one processing unit, cause the electronic device to perform actions comprising:

receiving a request to store target data, the request comprising the target data and indicating a number of copies to be stored for the target data;

allocating, based on the target data and the number of copies, storage chunks to store the copies of the target data,

each storage chunk of the storage chunks comprising a data segment configured to store data and a coding segment configured to store check information, and a group of the storage chunks being configured respectively to store a first number of copies of the target data;

writing the first number of copies to the data segment of each storage chunk in the group of the storage chunks respectively;

generating, for one storage chunk in the group of the storage chunks, first check information based on data stored in the data segment of the one storage chunk; and

writing the first check information to the coding segment of each storage chunk in the group of the storage chunks respectively.

10. The device according to claim 9 , wherein at least one storage chunk in the plurality of storage chunks is configured to store a second number of copies of the target data, and the method further comprises:

writing the second number of copies to at least one data segment of the at least one storage chunk;

generating second check information based on data stored in the at least one data segment of the at least one storage chunk; and

writing the second check information to the coding segment of the at least one storage chunk.

11. The device according to claim 9 , wherein writing the first number of copies to the data segment of each storage chunk in the group of the storage chunks respectively comprises:

generating the first number of data blocks based on the first number of copies, each data block comprising a copy and an identifier associated with the request; and

writing the first number of data blocks to the data segment of each storage chunk in the group of the storage chunks respectively.

12. The device according to claim 9 , wherein the actions further comprise:

for each storage chunk in the group of the storage chunks,

in response to the first number of copies being written to the data segment of the storage chunk, determining whether there is an unoccupied space in the data segment of the storage chunk; and

based on determining that there is the unoccupied space in the data segment of the storage chunk, filling the space with invalid data.

13. The device according to claim 9 , wherein generating the first check information comprises:

generating, based on the data stored in the data segment of the storage chunk, an erasure code as the first check information.

14. The device according to claim 10 , wherein writing the second number of copies to the at least one data segment of the at least one storage chunk comprises:

generating the second number of data blocks based on the second number of copies, each data block comprising a copy and an identifier associated with the request; and

writing the second number of data blocks to the at least one data segment of the at least one storage chunk.

15. The device according to claim 10 , wherein the actions further comprise:

in response to the second number of copies being written to the at least one data segment of the at least one storage chunk, determining whether there is an unoccupied space in the at least one data segment of the at least one storage chunk; and

based on determining that there is the unoccupied space in the data segment of the at least one storage chunk, filling the space with invalid data.

16. The device according to claim 10 , wherein generating the second check information comprises:

generating, based on the data stored in the at least one data segment of the at least one storage chunk, an second code as the second check information.

17. A computer program product tangibly stored in a non-transitory computer storage medium and comprising machine-executable instructions, wherein when executed by a device, the machine-executable instructions cause the device to perform operations, comprising:

receiving a request for storage of target data, the request comprising the target data and indicating a number of copies of the target data to be stored;

allocating, based on the target data and the number of copies, storage chunks for storage of the copies of the target data, wherein the storage chunks comprise respective data segments configured to store respective data and respective coding segments configured to store respective check information, and wherein a group of the storage chunks are configured to store a first number of copies of the target data;

writing the first number of copies to respective ones of data segments, from the respective data segments, corresponding to the group of the storage chunks;

generating, for a storage chunk in the group of storage chunks, check information based on data, of the respective data, stored in a data segment, of the respective data segments, of the storage chunk; and

writing the check information to respective ones of coding segments, of the respective coding segments, corresponding to the group of storage chunks.

18. The computer program product according to claim 17 , wherein the check information is first check information, wherein at least one storage chunk in the plurality of storage chunks is configured to store a second number of copies of the target data, and the method further comprises:

writing the second number of copies to at least one respective data segment of the at least one storage chunk;

generating second check information based on the respective data stored in the at least one respective data segment of the at least one storage chunk; and

writing the second check information to at least one respective coding segment of the at least one storage chunk.

19. The computer program product according to claim 17 , wherein writing the first number of copies to the respective ones of the data segments in the group of storage chunks respectively comprises:

generating the first number of data blocks based on the first number of copies, each data block of the first number of data blocks comprising a copy and an identifier associated with the request; and

writing the first number of data blocks to the respective ones of the data segments in the group of storage chunks.

20. The computer program product according to claim 17 , wherein generating the first check information comprises:

generating, based on the data stored in the data segment, an erasure code as the check information.

Assignments (10)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2022
From: ZOU, WEINING; WU, GARY JIALEI; ZHANG, ZHIYAO
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 060281/0421 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056295/0280) Recorded Jun 10, 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
Reel/Frame 062022/0255 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056295/0001) Recorded Jun 10, 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
Reel/Frame 062021/0844 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056295/0124) Recorded Jun 10, 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
Reel/Frame 062022/0012 →
RELEASE OF SECURITY INTEREST Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058297/0332 →
SECURITY INTEREST Recorded May 19, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 056295/0280 →
SECURITY INTEREST Recorded May 19, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 056295/0001 →
SECURITY INTEREST Recorded May 19, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 056295/0124 →
CORRECTIVE ASSIGNMENT TO CORRECT THE MISSING PATENTS THAT WERE ON THE ORIGINAL SCHEDULED SUBMITTED BUT NOT ENTERED PREVIOUSLY RECORDED AT REEL: 056250 FRAME: 0541. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded May 17, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 056311/0781 →
SECURITY AGREEMENT Recorded May 14, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 056250/0541 →