TECHNICAL FIELD

The subject matter of this disclosure is generally related to electronic data storage, and more particularly to predictably distributing protection group members while increasing the number of disks in a storage array and validating disk clusters based on the predictable manner in which protection group members are distributed.

BACKGROUND

The disk drives in a typical enterprise data storage system are members of a protection group known as a redundant array of independent disks (RAID). A RAID protection group helps to avoid data loss by enabling a failed protection group member to be reconstructed. For example, a failed protection group member can be rebuilt on a spare disk using the remaining non-failed members. A RAID (D+P) protection group has D data members and P parity members. The data members store data. The parity members store parity information such as XORs of data values. The parity information enables reconstruction of data in the event that a data member fails. Parity information can be reconstructed from the data on the data members in the event that a parity member fails. A variety of different RAID levels with different numbers and types of members are known. A typical data storage system includes multiple RAID protection groups of the same level with individual disks as protection group members.

Most data storage systems enable storage capacity to be increased to accommodate a greater amount of data by adding new disks. The storage capacity of a data storage system that uses individual disks as RAID protection group members is typically increased by adding W new disks for a RAID (D+P) implementation where W=(D+P). For example, a storage system that implements RAID-5 (4+1) may be scaled-up in increments of five new disks. Similarly, a RAID-5 (3+1) may be scaled-up in increments of four new disks. However, as the storage capacity of individual disk drives increases because of technological advances an increment of W new disks may be undesirably large and inefficient.

SUMMARY

In accordance with some aspects an apparatus comprises a storage array comprising at least one compute node comprising at least one processor and non-transitory computer-readable memory; a plurality of data storage disks that are accessed by the at least one compute node and used to store data that is accessed via the at least one compute node, each disk having W indexed splits, each split having a fixed-size amount of storage capacity equal to storage capacity of other splits; and a disk manager configured to: create a growable disk cluster with spare from W+1 numbered ones of the disks by creating redundant arrays of independent disks (RAID) protection groups each having D+P=W numbered RAID protection group members comprising D data members and P parity members, and distributing the protection group members in one of the following modes: mode 1: member numbers match disk ordinals on the first W disks and member numbers match split indices on other disks and those splits that do not contain one of the protection group members are designated as spare splits and for each additional disk that is added to the mode 1 pattern in ordered succession the members of the first W disks at the lowest numbered unrotated split index are rotated onto the additional disk such that the protection group member at disk n is moved to split n of the additional disk; and mode 2: for members on the first W disks, if the split index is less than a number of additional disks greater than W then the member number matches the disk ordinal, and otherwise the member number matches the split index; and for members on other disks, the member number is the disk ordinal modulo RAID width; and designating as spare splits those splits that do not contain one of the protection group members; grow the growable disk cluster with spare by adding new ones of the disks and rotating members at lowest numbered unrotated split indices onto the new disks; and validate the growable disk cluster with spare by determining that the member numbers match one of the patterns.

In accordance with some aspects a method implemented by a storage array comprising at least one compute node comprising at least one processor and non-transitory computer-readable memory and a plurality of data storage disks that are accessed by the at least one compute node and used to store data that is accessed via the at least one compute node, each disk having W indexed splits, each split having a fixed-size amount of storage capacity equal to storage capacity of other splits, comprises: creating a growable disk cluster with spare from W+1 numbered ones of the disks by creating redundant arrays of independent disks (RAID) protection groups each having D+P=W numbered RAID protection group members comprising D data members and P parity members, and distributing the protection group members in one of the following modes: mode 1: member numbers match disk ordinals on the first W disks and member numbers match split indices on other disks and those splits that do not contain one of the protection group members are designated as spare splits and for each additional disk that is added to the mode 1 pattern in ordered succession the members of the first W disks at the lowest numbered unrotated split index are rotated onto the additional disk such that the protection group member at disk n is moved to split n of the additional disk; and mode 2: for members on the first W disks, if the split index is less than a number of additional disks greater than W then the member number matches the disk ordinal, and otherwise the member number matches the split index; and for members on other disks, the member number is the disk ordinal modulo RAID width; and designating as spare splits those splits that do not contain one of the protection group members; growing the growable disk cluster with spare by adding new ones of the disks and rotating members at lowest numbered unrotated split indices onto the new disks; and validating the growable disk cluster with spare by determining that the member numbers match one of the patterns.

In accordance with some aspects a computer-readable storage medium stores instructions that when executed by a storage array comprising at least one compute node comprising at least one processor and non-transitory computer-readable memory and a plurality of data storage disks that are accessed by the at least one compute node and used to store data that is accessed via the at least one compute node, each disk having W indexed splits, each split having a fixed-size amount of storage capacity equal to storage capacity of other splits, cause the compute node to perform a method for creating and validating disk clusters, the method comprising: creating a growable disk cluster with spare from W+1 numbered ones of the disks by creating redundant arrays of independent disks (RAID) protection groups each having D+P=W numbered RAID protection group members comprising D data members and P parity members, and distributing the protection group members in one of the following modes: mode 1: member numbers match disk ordinals on the first W disks and member numbers match split indices on other disks and those splits that do not contain one of the protection group members are designated as spare splits and for each additional disk that is added to the mode 1 pattern in ordered succession the members of the first W disks at the lowest numbered unrotated split index are rotated onto the additional disk such that the protection group member at disk n is moved to split n of the additional disk; and mode 2: for members on the first W disks, if the split index is less than a number of additional disks greater than W then the member number matches the disk ordinal, and otherwise the member number matches the split index; and for members on other disks, the member number is the disk ordinal modulo RAID width; and designating as spare splits those splits that do not contain one of the protection group members; growing the growable disk cluster with spare by adding new ones of the disks and rotating members at lowest numbered unrotated split indices onto the new disks; and validating the growable disk cluster with spare by determining that the member numbers match one of the patterns.

All examples, aspects, implementations, and features mentioned in this disclosure can be combined in any technically possible way. Other aspects, features, and implementations may become apparent in view of the detailed description and figures.

