As we migrated from V1 to WHS 2011, many of us have turned to RAID in one form or another to handle our storage needs.  Specifically we have implemented various forms of RAID 0, 1, and 5 in our systems.  Depending on the controller you are using, many of these RAID configurations can be expanded and some can even be reduced.  The big question is what is involved, how does it work, and most importantly, was it successful.

As most of you already know, I have chosen to use Highpoint controller cards in my builds.  It is not so much that they are the best in the business, but rather fit the price/performance that fits the average budget.  My experience with various motherboard controllers was not great so I leave that for standard mirror configurations.  For a RAID 5 I find it safer, faster, and more portable to use a controller card.

That being said, we are back to the burning question, how do I do it?  For starters, and this is very important, make a backup of all your critical data before you attempt this.  Doing anything like this always contains a certain amount of risk and you need to protect you critical data in case something goes wrong.  The video below will walk you through the basics using a Highpoint 2680 card and will expand a 4 drive (6T) RAID 5 array to 8T by adding one 2T drive.  I learned allot from this experience so please review the video as well as the lessons learned section before trying this on your own system.  RAID 5 is very easy to create and setup, but expanding it was a bit more unnerving so please remember to backup before you attempt this.  With a bit of prep and a bit of understanding, it turns out to be a very robust process and like anything else, after you do it the first time it becomes a pretty painless process.  Hope you enjoy and as always, post your comments and questions in the forums.

HighPoint RocketRAID 2720SGL 8-Port PCI-Express 2.0 x8 SAS/SATA RAID Controller

Key Points and Lessons Learned

  • Make sure that you test the hard drivethat you want to use before you attempt to expand your array.  In my first round with this, I found that after my expansion was complete that the drive I had just added showed critical due to the number of errors.  Had I tested the drive first, I would have saved numerous hours and allot of grief.  Put the drive you want to use in a stand alone system and test the drive before committing it to the array.  Look closely at the SMART data and make sure the drive is functioning correctly.  This is also good advice if you plan on having a drive around for a spare as well.  You want to make sure that your spare is in good working condition.
  • The expansion process is a background process and can take significant time to complete depending of the size of the new array and of course  the controller you are using.  You should be able to use the system and copy files around while this is happening but performance will be degraded until the process is complete.
  • It appears (unverified) the sector size is created automatically based on the drives native format.  Unlike the choice you have when you create a new array, you can not choose the sector size when you are expanding/migrating (at least on the Highpoint controllers).  If your array get changed from a 4K to a 512 byte, the time can be 2-3 times longer than if it retains the same size.  My initial array using EADS drives was originally created with 4K sectors (the drive is 512 native).  When I expanded the array, their software automatically converted the array to a 512 byte sector size and it took nearly 90 hours to complete vs the 28 hours on an array with no sector conversion.  Although not a real issue, had I know this when I created the original array I would have save allot of time in the expansion process.  Now that it is the correct size, it should be much smoother to expand the array further.

Performance

On my first attempt to expand the array, the performance of the array had degraded significantly form the original benchmark I had taken prior to the expansion.  At first I thought it was the expansion process itself or possibly a fragmentation issue, however it turned out to be simply a bad drive.  If you review the bench mark below, you will see a huge degradation of performance especially on the write performance which was attributed to a defective drive.  The drive I added turned out to have thousands errors and according to SMART was corrected, but in the end it still showed that it exceeded the number of recommend errors.  Note that despite this degradation, the data was still intact.  Because it is a RAID 5 I could have pulled the bad drive out and replaced it with a new one, and the array would have rebuilt automatically.

ATTO  on RAID after rebuild  Bench after raid expansion

On my second attempt with the correct sector size and using a good drive, the results were much better and performance was on par with the original array which is what you should expect.  After the learning experience of the first couple of times, this last round was much easier and faster.

ATTO  on RAID after rebuild  Bench after raid expansion-Good Drive

When is comes down to it, if you do a bit of planning upfront and test your drive before you attempt this process, expanding your array seems to be somewhat straightforward.  As with anything new, there is always some hesitancy and fear but in the end, if you have good drives you will be happy the result.  Now that I have done it a few times I can say that I found the process to be pretty robust despite running into some initial problems.  The expansion process did a great job in keeping the data intact and I feel better knowing that I can expand my array if I need more space….