IP Library Granted Patent US 12,032,849
Granted Patent B2
US 12,032,849 · App. 17/352,951 · Granted Jul 9, 2024

Distributed storage system and computer program product

Inventors: Mingchang Wei (Shenzhen, CN); Rong Rao (Shenzhen, CN); Chi Song (Shenzhen, CN)
Assignee: HUAWEI CLOUD COMPUTING TECHNOLOGIES CO., LTD.
G06F3/0652G06F3/0604G06F3/0653G06F3/0659G06F3/067G06F3/0689
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 12,032,849
App. No.
17/352,951
Granted
Jul 9, 2024
Kind
B2
Abstract

A distributed storage system comprises a data storage node N x that receives a write success response returned by a hard disk that provides the storage address. The data storage node N x returns a write success response to a client. The client receives the write success response returned by the data storage node N x , and the client returns a write completion response to a host.

Claims (118)

1. A distributed storage system, comprising:

M storage nodes comprising L data storage nodes, wherein both L and M are positive integers, and wherein L is less than M; and

a client coupled to the M storage nodes and configured to:

receive, from a host, a write request comprising first data of the host and a first host access address of the first data;

generate second data of M strips for the first data in response to the write request and according to an erasure coding (EC) algorithm, wherein the M strips constitute a stripe, and wherein the M strips comprise: L data strips and (M-L) check strips, wherein the L data strips comprise third data of a first data strip of the L data strips, and wherein the third data based on dividing the first data, and wherein the (M-L) check strips store check data of the first data; and

send the second data to the M storage nodes,

wherein a first data storage node of the M storage nodes is configured to:

receive, from the client, the third data;

establish a first mapping between a second host access address of the third data and a first identifier of the first data strip;

write the third data into a hard disk of the first data storage node;

receive, from the hard disk, a first write success response; and

send, in response to receiving the first write success response, a second write success response to the client,

wherein the client is further configured to:

transmit, in response to receiving the second write success response, a write completion response to the host;

receive, from the host, a first read request comprising the second host access address; and

send, to the first data storage node, a first request for reading the third data, and

wherein the first data storage node is further configured to:

detect, in response to the first request, that a status of the first mapping is a write completion state; and

send, to a stripe server, a check request comprising a third identifier.

2. The distributed storage system of claim 1 , wherein the first data storage node is further configured to set, in response to receiving the first write success response, the status of the first mapping to the write completion state.

3. The distributed storage system of claim 2 , wherein the stripe server is coupled to the client and the M storage nodes and is configured to:

record a second mapping between the stripe and second identifiers of the M strips; and

record a third mapping between a fourth identifier of a first strip in the stripe and a first storage node,

wherein the stripe server is configured to:

receive the check request;

determine the stripe based on the fourth identifier;

read fourth data of the first strip based on the third mapping; and

send a notification to the first data storage node when the fourth data is accurate,

wherein the notification indicates that the third data is accurate;

wherein the first data storage node is further configured to transmit, in response to receiving the notification, the third data to the client, and

wherein the client is further configured to:

receive the third data; and

transmit the third data to the host.

4. The distributed storage system of claim 1 , wherein the client is further configured to send, in response to receiving the second write success response, a commit command to the first data storage node, and wherein the first data storage node is further configured to:

receive the commit command from the client; and

set the status of the first mapping to a readable state.

5. The distributed storage system of claim 1 , wherein the client is further configured to:

receive, from the host, a second read request comprising the second host access address; and

send, to the first data storage node, a second request for reading the third data,

wherein the first data storage node is further configured to:

detect, in response to receiving the second request, that the status of the first mapping is a readable state; and

transmit the third data to the client, and

wherein the client is further configured to:

receive the third data from the first data storage node; and

transmit, to the host, the third data.

6. The distributed storage system of claim 1 , wherein the client is further configured to obtain the stripe from a plurality of stripes.

7. A computer program product comprising computer-executable instructions stored on a non-transitory computer-readable storage medium that, when executed by a processor, cause a distributed storage system to:

receive a write request comprising first data of a host and a first host access address of the first data;

generate second data of M strips for the first data according to an erasure coding (EC) algorithm, wherein the M strips constitute a stripe, and wherein the M strips comprise:

L data strips, wherein the L data strips comprise third data of a first data strip of the L data strips, and wherein the third data is obtained by dividing the first data; and

(M-L) check strips storing check data of the first data; and

send the second data to M storage nodes of the distributed storage system, wherein the M storage nodes comprise L data storage nodes, wherein both L and M are positive integers, and wherein L is less than M,

wherein the computer-executable instructions further cause a first data storage node of the M storage nodes to:

receive the third data;

establish a first mapping between a second host access address of the third data and a first identifier of the first data strip;

write the third data into a hard disk of the first data storage node;

receive a first write success response; and

send, in response to receiving the first write success response, a second write success response to a client,

wherein the computer-executable instructions further cause the client to:

transmit a write completion response to the host;

receive, from the host, a first read request comprising the second host access address; and

send, to the first data storage node, a first request for reading the third data, and

wherein the computer-executable instructions further cause the first data storage node to:

detect, in response to receiving the first request, that a status of the first mapping is a write completion state; and

send, to a stripe server, a check request comprising a third identifier.

8. The computer program product of claim 7 , wherein the computer-executable instructions further cause the first data storage node to set, in response to receiving the first write success response, the status of the first mapping to the write completion state.

9. The computer program product of claim 8 , wherein the computer-executable instructions further cause the stripe server of the distributed storage system to:

record a second mapping between the stripe and second identifiers of the M strips; and

record a third mapping between a fourth identifier of a first strip in the stripe and a first storage node,

wherein the computer-executable instructions further cause the stripe server to:

receive the check request;

determine the stripe based on the fourth identifier;

read fourth data of the first strip based on the third mapping;

determine, according to the EC algorithm, whether the fourth data is accurate;

and send a notification to the first data storage node when the fourth data is accurate,

wherein the notification indicates that the third data is accurate,

wherein the computer-executable instructions further cause the first data storage node to transmit, in response to receiving the notification, the third data to the client, and

wherein the computer-executable instructions further cause the client to:

receive the third data; and

transmit the third data to the host.

10. The computer program product of claim 7 , wherein the computer-executable instructions further cause the client to send, in response to receiving the second write success response, a commit command to the first data storage node.

11. The computer program product of claim 10 , wherein the computer-executable instructions further cause the first data storage node to:

receive the commit command from the client; and

set the status of the first mapping to a readable state.

12. The computer program product of claim 7 , wherein the computer-executable instructions further cause the client to:

receive, from the host, a second read request comprising the second host access address; and

send, to the first data storage node, a second request for reading the third data.

13. The computer program product of claim 12 , wherein the computer-executable instructions further cause the first data storage node to:

detect, in response to receiving the second request, that the status of the first mapping is a readable state; and

transmit the third data to the client.

14. The computer program product of claim 13 , wherein the computer-executable instructions further cause the client to:

receive the third data from the first data storage node; and

transmit, to the host, the third data.

15. The computer program product of claim 7 , wherein the computer-executable instructions further cause the client to obtain the stripe from a plurality of stripes.

16. A client in a distributed storage system comprising:

a memory configured to store instructions; and

a processor coupled to the memory, wherein the instructions cause the processor to be configured to:

receive, from a host, a write request comprising first data of the host and a first host access address of the first data;

generate second data of M strips for the first data according to an erasure coding (EC) algorithm, wherein the M strips constitute a stripe, and wherein the M strips comprise:

L data strips, wherein the L data strips comprise third data of a first data strip of the L data strips, and wherein the third data is obtained by dividing the first data; and

(M-L) check strips storing check data of the first data;

send the second data to M storage nodes of the distributed storage system to enable a first data storage node of the M storage nodes to:

receive, from the client, the third data;

establish a first mapping between a second host access address of the third data and a first identifier of the first data strip;

write the third data into a hard disk of the first data storage node; and

receive, from the hard disk, a first write success response; and

receive, in response to the first write success response, a second write success response;

transmit, in response to receiving the second write success response, a write completion response to the host;

receive, from the host, a first read request comprising the second host access address; and

send, to the first data storage node, a first request for reading the third data, wherein the first data storage node is further enabled to:

detect, in response to receiving the first request, that a status of the first mapping is a write completion state; and

send, to a stripe server, a check request comprising a third identifier.

17. The client of claim 16 , wherein the instructions further cause the processor to be configured to obtain the stripe from a plurality of stripes.

18. The client of claim 16 , wherein the instructions further cause the processor to be configured to:

receive, from the first data storage node, the third data; and

transmit the third data to the host.

19. The client of claim 16 , wherein the instructions further cause the processor to be configured to send, in response to receiving the second write success response, a commit command to the first data storage node.

20. The client of claim 16 , wherein the client is coupled to the stripe server.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 31, 2024
From: WEI, MINGCHANG; RAO, RONG; SONG, CHI
To: HUAWEI TECHNOLOGIES CO., LTD.
Reel/Frame 067579/0428 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 1, 2022
From: HUAWEI TECHNOLOGIES CO., LTD.
To: HUAWEI CLOUD COMPUTING TECHNOLOGIES CO., LTD.
Reel/Frame 059267/0088 →
Continuity (2)
Continuation PCTCN2018122935 · Dec 22, 2018
Related Publication 20210311654A1 · Oct 7, 2021