Distributed raid over shared multi-queued storage devices
First Claim
1. A method for data storage, comprising:
- in a system that comprises multiple servers and multiple storage devices, holding in a server a definition of a stripe that comprises multiple memory locations on the storage devices, to be used by the servers for storing multiple data elements and at least a redundancy element calculated over the data elements; and
modifying, by the server, one or more of the data elements in the stripe by;
executing in the storage devices an atomic command, which updates the redundancy element to reflect the modified data elements only if a current redundancy element stored in the storage devices reflects the multiple data elements prior to modification of the data elements; and
storing the modified data elements in the storage devices only in response to successful completion of the atomic command.
2 Assignments
0 Petitions
Accused Products
Abstract
A method for data storage includes, in a system that includes multiple servers and multiple storage devices, holding in a server a definition of a stripe that includes multiple memory locations on the storage devices, to be used by the servers for storing multiple data elements and at least a redundancy element calculated over the data elements. One or more of the data elements in the stripe are modified by the server, by executing in the storage devices an atomic command, which updates the redundancy element to reflect the modified data elements only if a current redundancy element stored in the storage devices reflects the multiple data elements prior to modification of the data elements, and storing the modified data elements in the storage devices only in response to successful completion of the atomic command.
-
Citations
22 Claims
-
1. A method for data storage, comprising:
-
in a system that comprises multiple servers and multiple storage devices, holding in a server a definition of a stripe that comprises multiple memory locations on the storage devices, to be used by the servers for storing multiple data elements and at least a redundancy element calculated over the data elements; and modifying, by the server, one or more of the data elements in the stripe by; executing in the storage devices an atomic command, which updates the redundancy element to reflect the modified data elements only if a current redundancy element stored in the storage devices reflects the multiple data elements prior to modification of the data elements; and storing the modified data elements in the storage devices only in response to successful completion of the atomic command. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A data storage apparatus, comprising:
-
an interface configured to communicate with multiple storage devices; and a processor, which is configured to hold a definition of a stripe that comprises multiple memory locations on the storage devices to be used for storing multiple data elements and at least a redundancy element calculated over the data elements, and to modify one or more of the data elements in the stripe by; executing in the storage devices an atomic command, which updates the redundancy element to reflect the modified data elements only if a current redundancy element stored in the storage devices reflects the multiple data elements prior to modification of the data elements; and storing the modified data elements in the storage devices only in response to successful completion of the atomic command. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A computing system, comprising:
-
multiple storage devices; and multiple servers, wherein at least one of the servers is configured to hold a definition of a stripe that comprises multiple memory locations on the storage devices to be used by the servers for storing multiple data elements and at least a redundancy element calculated over the data elements, and to modify one or more of the data elements in the stripe by; executing in the storage devices an atomic command, which updates the redundancy element to reflect the modified data elements only if a current redundancy element stored in the storage devices reflects the multiple data elements prior to modification of the data elements; and storing the modified data elements in the storage devices only in response to successful completion of the atomic command. - View Dependent Claims (18, 19, 20, 21)
-
-
22. A method for data storage, comprising:
-
in a system that comprises multiple servers and multiple storage devices, holding in a server a definition of a stripe that comprises multiple memory locations on the storage devices, to be used by the servers for storing multiple data elements and at least a redundancy element calculated over the data elements; and modifying, by the server, one or more of the data elements in the stripe by; under a lock on at least part of the stripe, updating the redundancy element in the storage devices to reflect the modified data elements only if a current redundancy element stored in the storage devices reflects the multiple data elements prior to modification of the data elements; and storing the modified data elements in the storage devices only in response to successful completion of the updating of the redundancy element.
-
Specification