APPEND-BASED SHARED PERSISTENT STORAGE
First Claim
1. A computer-implemented method for synchronized, shared access to a storage device, the method comprising:
- receiving a request from a caller to store data to the storage device, wherein the request specifies an append operation and does not specify an address to which to store the data;
writing the data in the request to a next available address so that multiple callers can write data to the storage device at the same time without synchronizing with one another, wherein the next available address is a sequential storage address of the storage device that is subsequent to a previously written address;
incrementing the next available address for subsequent append operations;
returning the address to which the data was written to the caller,wherein the preceding steps are performed by at least one processor.
2 Assignments
0 Petitions
Accused Products
Abstract
A shared storage system is described herein that is based on an append-only model of updating a storage device to allow multiple computers to access storage with lighter-weight synchronization than traditional systems and to reduce wear on flash-based storage devices. Appending data allows multiple computers to write to the same storage device without interference and without synchronization between the computers. Computers can also safely read a written page without using synchronization because the system limits how data can be changed once written. The system may record a log of append operations performed and ensure idempotence by storing a key specified by the caller in the log along with each log entry. The system also provides broadcasts about appended data to computers so that coordination between computers can occur without direct communication between the computers.
-
Citations
20 Claims
-
1. A computer-implemented method for synchronized, shared access to a storage device, the method comprising:
-
receiving a request from a caller to store data to the storage device, wherein the request specifies an append operation and does not specify an address to which to store the data; writing the data in the request to a next available address so that multiple callers can write data to the storage device at the same time without synchronizing with one another, wherein the next available address is a sequential storage address of the storage device that is subsequent to a previously written address; incrementing the next available address for subsequent append operations; returning the address to which the data was written to the caller, wherein the preceding steps are performed by at least one processor. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A computer system for sharing one or more storage devices among multiple computers, the system comprising:
-
a processor and memory configured to execute software instructions; a communication component configured to send and receive communications over a network between the system and one or more computers that store data with the system; an application-programming interface (API) component configured to provide an application interface that computers can invoke over the network using a predefined protocol for appending pages to the storage devices; an append component configured to handle append operation requests received from computers through the API component, wherein handling append operation requests includes receiving an append request, retrieving a next page location, storing data from the append request to the next page location, and incrementing the next page location; a device manager component configured to manage the storage devices 180 associated with the system; and one or more storage devices that provide persistent storage. - View Dependent Claims (8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A computer-readable storage medium comprising instructions for controlling a computer system to distribute updates of a storage device to multiple computers sharing the storage device, wherein the instructions, when executed, cause a processor to perform actions comprising:
-
detecting an update event that signals that there is new data with which to update the computers; composing update data, wherein the update data includes an address at which the new data is stored in the storage device; and sending the composed update data to the multiple computers, wherein each of the computers coordinates sharing of the storage device by receiving the update data and without communicating directly with the other computers, wherein the update data includes information that a receiving computer can use to determine whether an append operation of the receiving computer modifies a data structure shared with other computers through the shared storage device. - View Dependent Claims (18, 19, 20)
-
Specification