RAID Array Expansion
Publication Date: 2014-Sep-23
The IP.com Prior Art Database
Described is a method for expanding the capacity of a RAID array by adding devices which are done such that the array remains protected, can be performed with concurrent I/O operations in progress, results in array identical to one which would have existed if the array was initially created with the new number of devices, and achieved with as much simplicity as possible.
Page 01 of 9
RAID Array Expansion
A RAID storage system commonly contains one or more RAID adapters connected to one or more enclosures of storage devices such as HDDs or SSDs. When the RAID storage system is initially configured, it must be decided what RAID level(s) to employ, how many HDDs/SSDs to use for each RAID array, and how many RAID arrays are to be created. Typically the RAID storage system may be initially configured with less than the maximum number of HDDs/SSDs which could be physically populated since a maximum configuration could be quite costly.
At some point in time, it may be decided that additional capacity is needed and that more HDDs/SSDs should be added to the RAID storage system. One answer could be to add enough HDDs/SSDs to create an entirely new RAID array. However, this may be less than optimum for the following reasons:
For each RAID array created, capacity will be lost to redundancy. For example, each RAID-5 array of N drives provides N-1 drives of user capacity (i.e., one drive of capacity is used for parity data). Likewise, each RAID-6 array of N drives provides N-2 drives of user capacity.
The capacity created by a new RAID array must either be used directly for new logical drives or used by being combined (e.g., striped or concatenated) with other existing arrays so that existing logical drives may be increased in size.
The most desirable way to add HDDs/SSDs may be to add them to existing RAID arrays. In this way, the capacity of the RAID array could be increased and, potentially, existing logical drives could be increased in size. If this were done, the following criteria would be desired:
The RAID array should remain protected. That is, if a drive failure occurred during the process of expanding the RAID array, the array would continue to operate.
The RAID array should be able to continue to process Reads/Writes from the host concurrent with the process of expanding the RAID array.
Once the process of expanding the array completes, the array would look and perform identical to as if the array was initially created with the new number of devices.
The method to achieve the above would be as straightforward as possible so as to minimize complexity, maintenance, and testing of the RAID storage system. Ideally, the changes for expanding an array would be limited to a subset of the RAID stack and invisible to the remainder of the RAID stack.
While other RAID storage subsystems may have array expansion capabilities, they may be lacking in one or more of the above criteria.
This invention involves the following major ideas:
Method to expand an array by one or more devices by first restriping data/parity and then
later moving parity
Method to restripe data and parity such that an expanded array looks and performs
identical to as if array was initially created with the new number of devices
Method to expand an array with concurrent I/O by temporarily mapping the old and new
array configurations as tiers of a...