Dynamic capacity allocation of stripes in cluster based storage systems
For dynamic capacity allocation of stripes in cluster-based storage system, a storage controller identifies a storage stripe in a cluster-based storage system that has a smallest stripe score of a plurality of storage stripes. The storage controller also identifies a storage stripe in the cluster-based storage system that has a largest stripe score of the plurality of storage stripes, and reallocates, in response to a difference between the largest stripe score and the smallest stripe score being less than a threshold value, free-space capacity from a donator stripe to a receiver stripe.
1. An apparatus comprising:
one or more processors;
one or more non-transitory computer-readable storage media, the one or more non-transitory computer readable storage media comprising executable code, that when executed by the one or more processors, causes the one or more processors to:
identify a storage stripe in a cluster-based storage system having a smallest stripe score of a plurality of storage stripes;
identify a storage stripe in the cluster-based storage system having a largest stripe score of the plurality of storage stripes; and
reallocate, in response to a difference between the largest stripe score and the smallest stripe score being greater than or equal to a threshold value, free-space capacity from a donator stripe to a receiver stripe.
2. The apparatus of claim 1 , where the executable code further causes the one or more processors to generate a stripe score for each of the plurality of storage stripes.
3. The apparatus of claim 2 , where the stripe score of each of the plurality of storage stripes is based on a quantity of movable free-space capacity and non-movable free-space capacity.
4. The apparatus of claim 3 , where the stripe score is a quantity of storage units.
5. The apparatus of claim 4 , where the threshold value is two.
6. The apparatus of claim 1 , where the executable code further causes the one or more processors to generate and sort a stripe map comprising a plurality of stripe scores, where each of the plurality of stripe scores corresponds to one of the plurality of storage stripes.
7. The apparatus of claim 6 , where the executable code further causes the one or more processors to maintain a worst-stripe indicator that identifies a first stripe in the stripe map having the smallest stripe score.
8. The apparatus of claim 6 , where the executable code further causes the one or more processors to maintain a minimal-free-stripe-capacity indicator that identifies a first stripe that is suitable to be selected as a donator stripe in response to the first stripe having movable free-space capacity.
9. The apparatus of claim 6 , where the executable code further causes the one or more processors to maintain a capacity-limit indicator that identifies a first stripe in the stripe map that is suitable to be selected as a receiver stripe.
10. A method comprising:
identifying a storage stripe in a cluster-based storage system having a smallest stripe score of a plurality of storage stripes;
identifying a storage stripe in the cluster-based storage system having a largest stripe score of the plurality of storage stripes; and
reallocating, in response to a difference between the largest stripe score and the smallest stripe score being greater than or equal to a threshold value, free-space capacity from a donator stripe to a receiver stripe.
11. The method of claim 10 , where the method further comprises generating a stripe score for each of the plurality of storage stripes.
12. The method of claim 11 , where the stripe score of each of the plurality of storage stripes is based on a quantity of movable free-space capacity and non-movable free-space capacity.
13. The method of claim 12 , where the stripe score is a quantity of storage units.
14. The method of claim 13 , where the threshold value is two.
15. The method of claim 10 , further comprising generating and sorting a stripe map comprising a plurality of stripe scores, where each of the plurality of stripe scores corresponds to one of the plurality of storage stripes.
16. The method of claim 15 , further comprising maintaining a worst-stripe indicator that identifies a first stripe in the stripe map having the smallest stripe score.
17. The method of claim 15 , further comprising maintaining a minimal-free-stripe-capacity indicator that identifies a first stripe that is suitable to be selected as a donator stripe in response to the first stripe having movable free-space capacity.
18. The method of claim 15 , maintaining a capacity-limit indicator that identifies a first stripe in the stripe map that is suitable to be selected as a receiver stripe.
19. A computer program product, the computer program product comprising a non-transitory computer readable storage medium having program instructions embodied therewith, the program instructions readable/executable by a processor to cause the processor to:
identify a storage stripe in a cluster-based storage system having a smallest stripe score of a plurality of storage stripes;
identify a storage stripe in the cluster-based storage system having a largest stripe score of the plurality of storage stripes; and
reallocate, in response to a difference between the largest stripe score and the smallest stripe score being greater less than or equal to a threshold value, free-space capacity from a donator stripe to a receiver stripe.
20. The computer program product of claim 19 , where the program instructions cause the processor to generate and sort a stripe map comprising a plurality of stripe scores, where each of the plurality of stripe scores corresponds to one of the plurality of storage stripes.