Patent ID: 8392368

Claim:
A system configured for distributed storage, the system comprising: a plurality of storage nodes configured to store a plurality of files, wherein each storage node is configured to store at least a portion of one of the files; and one or more client machines, wherein each client machine is configured to access the plurality of files stored across the plurality of storage nodes, wherein each storage node and each client machine executes a software application to independently compute a mapping of the plurality of files to the plurality of storage nodes, wherein, based on the mapping, any storage node and any client machine is able to access any portion of any file stored on any storage node, and wherein, in response to a change to the plurality of storage nodes, each storage node and each client machine re-executes the software application to independently compute a new mapping of the plurality of files to the plurality of storage nodes, the change comprising: a new storage node being added to the plurality of storage nodes, in which case at least a portion of one of the files is transferred to the new storage node for storage; a storage node being removed from the plurality of storage nodes, in which case all portions of all files stored on the storage node being removed are transferred to one or more remaining storage nodes for storage; and a new storage node being swapped for one storage node in the plurality of storage nodes in which case all portions of all files stored on the one storage node are transferred to the new storage node for storage.