Patent ID: 8868508

Claim:
A distributed storage system for storing blobs, comprising: a plurality of instances, wherein each respective instance includes a plurality of server computers having memory and one or more processors storing one or more programs for execution by the one or more processors, and wherein at least a subset of the instances are at physically distinct geographic locations; wherein a respective instance stores data for a plurality of blobs; and wherein each respective blob has corresponding metadata that includes information that identifies a set of one or more instances where the respective blob is stored and includes a blob placement policy that specifies the desired number of copies of the respective blob as well as the desired locations for copies of the respective blob; and a location assignment module configured to: compare the desired number of copies of each respective blob and the desired locations for copies of the respective blob, as specified in the respective blob placement policy for the respective blob, to a current number of copies of the respective blob and current locations of copies of the respective blob; and issue commands to delete a copy of the respective blob or to replicate the respective blob to another instance in response to determining that the current number of copies of the respective blob is inconsistent with the desired number of copies of the respective blob or the current locations of the respective blob are inconsistent with the desired locations for copies of the respective blob, as specified in the respective blob placement policy for the respective blob.