Patent ID: 8775763

Claim:
A method of assigning data to storage device nodes in a data storage system, wherein the data storage system stores a number M of replicas of the data, wherein M is greater than or equal to 2, the method comprising: dividing the data into a plurality of groups of segments and for each group of segments, identifying storage device nodes that have sufficient resources available to accommodate a requirement of the data, the requirement including at least one of a reliability requirement, a capacity requirement and a performance requirement, and when a number of the storage device nodes identified by said identifying is greater than M, assigning the data to M randomly selected storage device nodes from among those identified, and when the number of the identified storage device nodes is equal to M, assigning the data to the M identified storage device nodes, and when the number of the identified storage device nodes is less than M, dividing the group of data segments thereby forming a group of data segments having a reduced requirement and identifying storage device nodes that have sufficient resources available to accommodate the reduced requirement, and the method further comprising adding a new storage device node to the data storage system including identifying an existing storage device node that is heavily loaded in comparison to other ones of existing storage device nodes; moving data stored at the identified existing storage device node to the new storage device node; and determining whether the new storage device node is sufficiently loaded in comparison to the existing storage device nodes and when the new storage device node is not sufficiently loaded, repeating said steps of identifying the existing storage device node and moving the data until the new storage device node is sufficiently loaded.