Optimizing generalized transfers between storage systems
US-11768623-B2 · Sep 26, 2023 · US
US12299330B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-12299330-B2 |
| Application number | US-202318221554-A |
| Country | US |
| Kind code | B2 |
| Filing date | Jul 13, 2023 |
| Priority date | Jan 6, 2023 |
| Publication date | May 13, 2025 |
| Grant date | May 13, 2025 |
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.
Techniques for processing write conflicts involve determining, in response to receiving a write operation for a stripe, a state of a backend operation of a stripe set, wherein the backend operation includes one of a rebuilding or re-striping operation. The techniques further involve stopping the write operation in response to the state of the backend operation indicating that the backend operation is being executed in the stripe. The techniques further involve executing the write operation in response to the state of the backend operation indicating that the backend operation is not being executed in the stripe. Accordingly, write conflicts between a write operation and a backend operation for the same stripe can be favorably avoided, and concurrent execution of the write operation and the backend operation simultaneously for the same stripe is prevented, thus preventing the deterioration of a storage system and improving storage system security and stability.
Opening claim text (preview).
The invention claimed is: 1. A method for processing write conflicts, comprising: determining, in response to receiving a write operation for a stripe, a state of a backend operation of a stripe set to which the stripe belongs, wherein the backend operation comprises one of a rebuilding operation and a re-striping operation; stopping the write operation for the stripe in response to the state of the backend operation of the stripe set indicating that the backend operation is being executed in the stripe; and executing the write operation for the stripe in response to the state of the backend operation of the stripe set indicating that the backend operation is not being executed in the stripe; determining a state of a write operation of another stripe in response to receiving a backend operation for the other stripe; stopping the backend operation for other stripe in response to the state of the write operation of the other stripe indicating that the write operation of the other stripe is being executed in the other stripe; and executing the backend operation for the other stripe in response to the state of the other write operation of the other stripe indicating that the write operation of the other stripe is not being executed in the other stripe; and wherein determining the state of the write operation of the other stripe comprises: determining, by querying a write operation count of the other stripe, whether the write operation of the other stripe is being executed in the other stripe, and the method further comprises: adding the backend operation for the other stripe to a list of backend operations on a local node of the stripe set after it is determined that the write operation of the other stripe is being executed in the other stripe; and updating a list of backend operations on a peer node, corresponding to the local node, of the stripe set in response to adding the backend operation for the other stripe to the list of backend operations on the local node of the stripe set; and wherein the peer node of the stripe set is used to replace the local node in response to a failure of the local node of the stripe set. 2. The method according to claim 1 , wherein determining the state of the backend operation of the stripe set to which the stripe belongs comprises: determining, by searching a list of backend operations of the stripe set, whether the backend operation is being executed in the stripe. 3. The method according to claim 2 , further comprising: determining, by searching for a backend operation check point of the stripe set, a stripe region in the stripe set in which the backend operation is not completed, wherein the backend operation check point of the stripe set identifies a boundary between the stripe region in the stripe set in which the backend operation is not completed and a stripe region in which the backend operation is completed. 4. The method according to claim 3 , further comprising: determining, for the stripe region in the stripe set in which the backend operation is not completed, a target address and a target length of the backend operation by searching the list of backend operations of the stripe set; and determining, based on the target address and the length of the backend operation, a stripe in which the backend operation is being executed. 5. The method according to claim 2 , further comprising: adding the write operation for the strip to a waiting list after it is determined that the backend operation is being executed in the stripe; and increasing a write operation count of the stripe after it is determined that the backend operation is not being executed in the stripe. 6. The method according to claim 1 , further comprising: waking the backend operation for the stripe in response to determining that the backend operation for the stripe is waiting after execution of the write operation for the stripe is completed. 7. The method according to claim 1 , wherein updating the list of backend operations on the peer node of the stripe set comprises: sending, after adding the backend operation for the other stripe to the list of backend operations on the local node of the stripe set, a message for indicating an update from the local node to the peer node; and adding the backend operation for the other stripe to the list of backend operations on the peer node of the stripe set in response to receiving the message for indicating an update. 8. The method according to claim 1 , further comprising: waking the write operation for the stripe in response to determining that the write operation for the stripe is waiting after execution of the backend operation for the stripe is completed. 9. The method according to claim 1 , wherein the backend operation of the stripe set to which the stripe belongs comprises the rebuilding operation, the rebuilding operation being constructed and arranged to rebuild data from the stripe and write the rebuilt data to a rebuilding location. 10. The method according to claim 1 , wherein the backend operation of the stripe set to which the stripe belongs comprises the re-striping operation, the re-striping operation being constructed and arranged to write data from the stripe to a target location of re-striping during storage expansion. 11. The method according to claim 1 , wherein a data storage system includes multiple physical drives; and wherein executing the write operation for the stripe comprises: writing data across the multiple physical drives in accordance with a RAID (Redundant Array of Independent Disks) level. 12. The method according to claim 11 , wherein the data storage system is a distributed data storage system having a set of storage nodes constructed and arranged to communicate with the multiple physical drives over a network; and wherein writing the data across the multiple physical drives in accordance with the RAID level comprises: writing the data from a storage node of the distributed data storage system to the multiple physical drives through the network. 13. A device for processing write conflicts, comprising: a processor; and a memory coupled to the processor and having instructions stored therein, wherein the instructions, when executed by the processor, cause the device to execute the following actions: determining, in response to receiving a write operation for a stripe, a state of a backend operation of a stripe set to which the stripe belongs, wherein the backend operation comprises one of a rebuilding operation and a re-striping operation; stopping the write operation for the stripe in response to the state of the backend operation of the stripe set indicating that the backend operation is being executed in the stripe; executing the write operation for the stripe in response to the state of the backend operation of the stripe set indicating that the backend operation is not being executed in the stripe; determining a state of the write operation of the stripe in response to receiving the backend operation for the stripe; stopping the backend operation for the stripe in response to the state of the write operation of the stripe indicating that the write operation is being executed in the stripe; and executing the backend operation for the stripe in response to the state of the write operation of the stripe indicating that the write operation is not being executed in the stripe; wherein determining the state of the write operation of the stripe comprises: determining, by querying a write operation count of the stripe, whether the write operation is being executed in the stripe, and the actions further comprise: a
Management of space entities, e.g. partitions, extents, pools · CPC title
Migration mechanisms · CPC title
Improving or facilitating administration, e.g. storage management · CPC title
Disk arrays, e.g. RAID, JBOD · CPC title
Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.