Data storage method, apparatus, and system
US-2019235956-A1 · Aug 1, 2019 · US
US12032849B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-12032849-B2 |
| Application number | US-202117352951-A |
| Country | US |
| Kind code | B2 |
| Filing date | Jun 21, 2021 |
| Priority date | Dec 22, 2018 |
| Publication date | Jul 9, 2024 |
| Grant date | Jul 9, 2024 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A distributed storage system comprises a data storage node Nx that receives a write success response returned by a hard disk that provides the storage address. The data storage node Nx returns a write success response to a client. The client receives the write success response returned by the data storage node Nx, and the client returns a write completion response to a host.
Opening claim text (preview).
What is claimed is: 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 transm
Disk arrays, e.g. RAID, JBOD · CPC title
Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS] · CPC title
Command handling arrangements, e.g. command buffers, queues, command scheduling · CPC title
Monitoring storage devices or systems · CPC title
Improving or facilitating administration, e.g. storage management · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.