System and method for rebalancing data after storage pool expansion
A method, computer program product, and computing system for detecting the addition of a new storage device to a storage pool. A rebalancing target is generated for the storage pool by simulating an initial layout of used data slices and reserved data slices into a plurality of data slice stripes. It is determined whether the plurality of storage devices of the storage pool meet the rebalancing target. In response to determining that the plurality of storage devices do not meet the rebalancing target, a source storage device is selected for restriping. A destination storage device is selected for restriping. One or more data slices from the source storage device are transferred to the destination storage device. The selecting of source storage devices, destination storage devices, and transferring of data slices are iteratively repeated until the plurality of storage devices meet the rebalancing target.
1 . A computer-implemented method, executed on a computing device, comprising:
detecting the addition of a new storage device to a storage pool;
generating a rebalancing target for the storage pool including the new storage device by simulating an initial layout of used data slices and reserved data slices into a plurality of data slice stripes;
determining whether the plurality of storage devices of the storage pool meet the rebalancing target;
in response to determining that the plurality of storage devices do not meet the rebalancing target, selecting a source storage device for restriping;
selecting a destination storage device for restriping;
transferring one or more data slices from the source storage device to the destination storage device; and
iteratively repeating the selecting of source storage devices, destination storage devices, and transferring of one or more data slices until the plurality of storage devices meet the rebalancing target.
2 . The computer-implemented method of claim 1 , further comprising:
determining that a storage capacity for the new storage device is greater than a storage capacity of a prime storage device.
3 . The computer-implemented method of claim 1 , further comprising:
in response to determining that the storage capacity for the new storage device is greater than the storage capacity of the prime storage device, assigning the new storage device as the prime storage device.
4 . The computer-implemented method of claim 1 , wherein selecting the source storage device includes selecting a storage device with a utilization that deviates most from the rebalancing target compared to the other storage devices from the plurality of storage devices of the storage pool.
5 . The computer implemented method of claim 4 , wherein selecting the destination storage device includes:
generating a list of storage devices that have a utilization below the rebalancing target;
sorting the list of storage devices using a neighborhood matrix indicating a connectivity strength between each pair of storage devices of the storage pool; and
selecting the storage device with a lowest connectivity strength with the source storage device.
6 . The computer implemented method of claim 1 , further comprising:
generating a restriping target of reserved data slices for the storage pool; and
in response to determining that the plurality of storage devices meet the rebalancing target, rebalancing reserved data slices until each storage device meets the restriping target of reserved data slices.
7 . The computer implemented method of claim 1 , further comprising:
restriping the plurality of used data slices and reserved data slices into the plurality of data slice stripes using the initial layout and the restriping target.
8 . A computer program product residing on a non-transitory computer readable medium having a plurality of instructions stored thereon which, when executed by a processor, cause the processor to perform operations comprising:
detecting the addition of a new storage device to a storage pool;
generating a rebalancing target for the storage pool including the new storage device by simulating an initial layout of used data slices and reserved data slices into a plurality of data slice stripes;
determining whether the plurality of storage devices of the storage pool meet the rebalancing target;
in response to determining that the plurality of storage devices do not meet the rebalancing target, selecting a source storage device for restriping;
selecting a destination storage device for restriping;
transferring one or more data slices from the source storage device to the destination storage device; and
iteratively repeating the selecting of source storage devices, destination storage devices, and transferring of one or more data slices until the plurality of storage devices meet the rebalancing target.
9 . The computer program product of claim 8 , wherein the operations further comprise:
determining that a storage capacity for the new storage device is greater than a storage capacity of a prime storage device.
10 . The computer program product of claim 8 , wherein the operations further comprise:
in response to determining that the storage capacity for the new storage device is greater than the storage capacity of the prime storage device, assigning the new storage device as the prime storage device.
11 . The computer program product of claim 8 , wherein selecting the source storage device includes selecting a storage device with a utilization that deviates most from the rebalancing target compared to the other storage devices from the plurality of storage devices of the storage pool.
12 . The computer program product of claim 11 , wherein selecting the destination storage device includes:
generating a list of storage devices that have a utilization below the rebalancing target;
sorting the list of storage devices using a neighborhood matrix indicating a connectivity strength between each pair of storage devices of the storage pool; and
selecting the storage device with a lowest connectivity strength with the source storage device.
13 . The computer program product of claim 8 , wherein the operations further comprise:
generating a restriping target of reserved data slices for the storage pool; and
in response to determining that the plurality of storage devices meet the rebalancing target, rebalancing reserved data slices until each storage device meets the restriping target of reserved data slices.
14 . The computer program product of claim 8 , wherein the operations further comprise:
restriping the plurality of used data slices and reserved data slices into the plurality of data slice stripes using the initial layout and the restriping target.
15 . A computing system comprising:
a memory; and
a processor configured to detect the addition of a new storage device to a storage pool, to generate a rebalancing target for the storage pool including the new storage device by simulating an initial layout of used data slices and reserved data slices into a plurality of data slice stripes, to determine whether the plurality of storage devices of the storage pool meet the rebalancing target, in response to determining that the plurality of storage devices do not meet the rebalancing target, to select a source storage device for restriping, to select a destination storage device for restriping, to transfer one or more data slices from the source storage device to the destination storage device, and to iteratively repeat the selecting of source storage devices, destination storage devices, and transferring of one or more data slices until the plurality of storage devices meet the rebalancing target.
16 . The computing system of claim 15 , wherein the processor is further configured to:
determine that a storage capacity for the new storage device is greater than a storage capacity of a prime storage device.
17 . The computing system of claim 15 , wherein the processor is further configured to:
in response to determining that the storage capacity for the new storage device is greater than the storage capacity of the prime storage device, assign the new storage device as the prime storage device.
18 . The computing system of claim 15 , wherein selecting the source storage device includes selecting a storage device with a utilization that deviates most from the rebalancing target compared to the other storage devices from the plurality of storage devices of the storage pool.
19 . The computing system of claim 18 , wherein selecting the destination storage device includes:
generating a list of storage devices that have a utilization below the rebalancing target;
sorting the list of storage devices using a neighborhood matrix indicating a connectivity strength between each pair of storage devices of the storage pool; and
selecting the storage device with a lowest connectivity strength with the source storage device.
20 . The computing system of claim 15 , wherein the processor is further configured to:
generate a restriping target of reserved data slices for the storage pool; and
in response to determining that the plurality of storage devices meet the rebalancing target, rebalance reserved data slices until each storage device meets the restriping target of reserved data slices.