Patent ID: 8793328

Claim:
A method comprising: receiving, at one or more first computing devices, a write request and data associated with the write request from a second computing device; selecting from a cache, by the one or more first computing devices, a first storage volume of a plurality of storage volumes, wherein the cache comprises a plurality of unique volume identifiers, wherein the first storage volume is identified by a first unique volume identifier and comprises a plurality of storage nodes, each volume identifier being associated with a storage volume of the plurality of storage volumes, each volume identifier in the cache being associated with a plurality of storage node identifiers, and wherein the cache is maintained locally at the one or more first computing devices; sending, by the one or more first computing devices, instructions to write a copy of the data to each storage node of the first storage volume; determining, by the one or more first computing devices, that the copy of the data was not successfully written to one or more storage nodes of the first storage volume; selecting from the cache, by the one or more first computing devices, a second storage volume of the plurality of storage volumes, wherein the second storage volume is identified by a second unique volume identifier and comprises a plurality of storage nodes; sending, by the one or more first computing devices, instructions to write the copy of the data to each storage node of the second storage volume; determining, by the one or more first computing devices, that the copy of the data was successfully written to each of the storage nodes of the second storage volume; and transmitting, by the one or more first computing devices, the volume identifier of the second storage volume to which the data have been successfully written and a data identifier assigned to the data to the second computing device.