CPC G06F 3/0652 (2013.01) [G06F 3/0604 (2013.01); G06F 3/0653 (2013.01); G06F 3/0659 (2013.01); G06F 3/067 (2013.01); G06F 3/0689 (2013.01)] | 20 Claims |
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.
|