After obtaining new equipment, and the new Adaptec 5805Z Raid Controller, I began researching the best configuration of hardware and software from the ground up. Since the machines being setup are storage units, I paid special attention to the RAID controller configuration. This article will address how to select the “best” raid stripe size for your controller. Also, this knowledge is based off of extensive research for two to three weeks, but may have flaws. If any are noticed, please feel free to notify me so that I may review and correct them. Thanks!
What stripe size should I select?
After much research, the few credible websites and online articles I found all generally pointed toward one direction. For my type of RAID controller in which I have both Read Cache and Write Cache enabled (with a battery on the write cache), the larger the stripe size the better (RAID controllers provide a reasonable max here, so generally no worries). Generally, this is a good rule. Since I am setting up a large 8TB RAID 60 array, the write back cache helps to dramatically improve performance.
What are the advantages of a larger stripe size versus a smaller stripe size?
EVERYTHING!!! Unless your using an older RAID controller, it appears that larger stripe sizes allow for faster rebuild times in a degraded array, reduced disk seek times from multiple disk access for small pieces of data (in which the bottleneck is the access time, NOT the transfer time), and good file distribution across multiple disks for large files (in which the bottleneck is the transfer time and not the access time). This honestly seems like the PERFECT option for all cases. This is especially true for RAID controllers with both the Read and Write Caches enabled.
Does array stripe size affect a degraded array rebuild rate?
YES!!! When I set the stripe size to 16kB, my array shows 0% for days on the Build/Verify process. I eventually gave up on this and decided to do some rebuild performance tests. After this, I concluded the largest stripe (1MB) on my RAID controller allowed for the fastest rebuild time and was the only option which was a bearable rebuild time of close to 12 hours. The rest I couldn’t even finish since they were going to close to a week with little or no progress. It was noticeable from the HDD activity indicators that the larger stripe size was more effective since they stayed solid (indicating longer, less intermittent/interrupted writes) as opposed to the 16kB writes in which the indicators were rapidly blinking (indicating smaller more intermittent/interrupted) writes.
Does stripe size affect storage utilization?
NO!!! Stripe size is not related to storage space utilization, simply how storage is accessed and distributed across drives (meaning every stripe is filled, and when one stripe is filled on a write, data will continue to be written on the next stripe on the next drive). This means a piece of data CAN be broken up onto multiple stripe if a write lands on the edge/end of a drive’s stripe and will continue the write on the next drive’s stripe. Stripes are simply designed to optimize the access of data by distributing larger data across drives, and the lack of collision of data across multiple drives if the write/read is small.
Conclusion and final touches
The largest stripe size is best! Be sure to enable all the read and write caches and to take caution with write caches if you do not have a battery since this may lead to data corruption. Also, battery’s run out of energy, so be sure to resolve a problem on a power failure, etc in a timely fashion to guarantee no data is lost. Finally, turn off drive write caches (write caches on the actual hard drives) since they do not coordinate with your RAID controller, and again may lead to lost data on rare power failure instances.