Patent ID: 7536426

Claim:
A computer-readable storage medium having stored computer-executable instructions, which executed to perform a method for facilitating data repair and load balancing in a distributed object store by differentiating replicas as smoothing replicas or spreading replicas, the method comprising: receiving a request to add an object to a distributed object store; in response to the request, accessing a check-in policy to determine a number and type of replicas of the object to generate, wherein types of replicas comprise spreading replicas and smoothing replicas; generating a number of smoothing replicas specified in the check-in policy; placing each smoothing replica of the smoothing replicas by performing following steps for said each smoothing replica that is generated: determining a set of lowest usage bricks of the distributed object store; selecting a brick from among the set of lowest usage bricks; and placing the smoothing replica on the selected brick; generating a number of spreading replicas specified in the check-in policy; and placing each spreading replica of spreading replicas by performing following steps for said each spreading replica that is generated: randomly selecting a brick from among all the bricks of the distributed object store; performing a check to determine that a spreading replica of the object has not previously been placed on the selected brick; and placing the spreading replica on the selected brick if no spreading replica of the object has previously been placed on the selected brick; upon a failure of a first brick which stores a first replica, selecting a second replica on a second brick, the second replica corresponding to the first replica; and copying the second replica to a third brick based on a data repair policy wherein the third brick is randomly selected from among all the bricks of the distributed object store, wherein the data repair policy specifies selecting a spreading replica as the second replica for copying if at least one spreading replica is available.