Learn about the technologies behind the Internet with The TCP/IP Guide!|
NOTE: Using robot software to mass-download the site degrades the server and is prohibited. See here for more.
Find The PC Guide helpful? Please consider a donation to The PC Guide Tip Jar. Visa/MC/Paypal accepted.
|View over 750 of my fine art photos any time for free at DesktopScenes.com!|
[ The PC Guide | Systems and Components Reference Guide | Hard Disk Drives | Hard Disk Performance, Quality and Reliability | Redundant Arrays of Inexpensive Disks (RAID) | RAID Configuration and Implementation | Advanced RAID Features ]
One of the most amazing phenomena in the world of storage is the way that hard disks shrink. You probably know what I mean: in 1998 you installed a massive 4 GB hard disk into your PC thinking you were set for life; 18 months later you were lamenting the fact that you had "no space on this teeny hard drive". Now you have a 40 GB drive and "can't imagine how you got by with only 4 GB". Been there, done that. :^) The same thing happens to RAID arrays--in fact, it often happens faster than it does with individual drives, since RAID arrays are usually shared by many users and it can be hard to anticipate the capacity needs of a business that is growing. This sometimes necessitates array expansion, adding capacity to an existing RAID array. This can be a process fraught with difficulties.
There are two main issues involved in expanding an array:
Physical expansion is usually the easier of the two, but not always. As discussed in some detail here, the number of bays in a case is usually limited. If you use all the available spots when you first set up the array, you won't have anywhere to add new drives. This happens more often than you might think, because the performance of the array will generally be higher if you use more smaller drives instead of fewer larger ones, so many people use as many drives as will fit in the case. If you max out your case's physical capacity, your only choices are to add an (expensive) external enclosure, or replace the existing drives with higher-capacity models (which you may want to do anyway; see below.)
Logical expansion comes down to the RAID level you choose to employ, and the features of your RAID controller. Some will allow a drive to be added to a striped set (with or without parity) while others will not. If your controller supports expansion you are in good shape--the controller will let you add the drive and then will reconfigure the array to use the added storage. If your controller doesn't support this advanced feature, you will have to destructively "disassemble" the smaller array and assemble the new, larger array. This will generally result in all the data on the array being lost, so you must be sure you have it properly backed up--and tested--before you do this.
Even if your controller supports logical expansion and you have the room for the drives, you should think twice about doing it for the following reasons:
For all of the reasons above, many RAID users never expand their arrays: they just use all the drive slots on the case, and when the drives get old, they replace them. They give up the storage of the old array, but with drive capacities doubling every year or two, this can make less difference than you might think. If you pay $X for four drives of a given capacity today, in three or four years that same $X will buy a single drive with capacity as high as the entire array! There are arrays still in use from the mid-1990s that have 4 GB drives in them; a new array with disks comparable to what these drives cost five years ago would dwarf the capacity of the old array.
If you don't want to expand an existing array, and don't want to replace it either, you can just create a new array alongside it. If there is room in the server, add the new drives and create a new, separate array from them. Then use the older array in a backup or secondary role, for older or less-important data. Another alternative is to just set up a new array on a different machine. Since servers are networked to allow many users to access them anyway, this will let the extra capacity be used by everyone on the network without necessitating changes to the existing system. In addition, it removes a single server from being a sole point of failure, to some extent: you won't have all your array eggs in the same basket. The drawbacks are obvious: the cost of another entire machine (unless you already have one), other hardware costs, and the effort to set it all up.