Storage‎ > ‎Storage-disk‎ > ‎

chose right number of disks for an array

Every system admi should have met this question when installing a new storage.  which type of array should I use and how many disks I should use for one array?
As for the first question, there are numers articles talked about it, there is no one solution for every need, same for question two.
According to my experience, regardless users particular case, there are some common questions most of people concern.
1. Performance
2. Reliability
I'd like to go through these topics in this article, before that, you may want to have a quick review on the metric below, from http://en.wikipedia.org/wiki/RAID

Level Description Minimum # of drives** Space efficiency Fault tolerance Array failure rate*** Read performance Write performance Figure
RAID 0 Block-level striping without parity or mirroring 2 1 0 (none) 1−(1−r)n nX nX RAID Level 0
RAID 1 Mirroring without parity or striping 2 1/n n−1 drives rn nX***** 1X RAID Level 1
RAID 2 Bit-level striping with dedicated Hamming-code parity 3 1 − 1/n ⋅ log2(n-1) RAID 2 can recover from one drive failure or repair corrupt data or parity when a corrupted bit's corresponding data and parity are good. Variable Variable Variable RAID Level 2
RAID 3 Byte-level striping with dedicated parity 3 1 − 1/n 1 drive 1-(1-r)^{n}-nr(1-r)^{n-1} (n−1)X (n−1)X* RAID Level 3
RAID 4 Block-level striping with dedicated parity 3 1 − 1/n 1 drive 1-(1-r)^{n}-nr(1-r)^{n-1} (n−1)X (n−1)X* RAID Level 4
RAID 5 Block-level striping with distributed parity 3 1 − 1/n 1 drive 1-(1-r)^{n}-nr(1-r)^{n-1} (n−1)X* (n−1)X* RAID Level 5
RAID 6 Block-level striping with double distributed parity 4 1 − 2/n 2 drives 1-(1-r)^{n}-nr(1-r)^{n-1}-{n\choose 2}r^{2}(1-r)^{n-2} (n−2)X* (n−2)X* RAID Level 6
RAID 10 Mirroring without parity, and block-level striping 4 2/n 1 drive / span ****
nX (n/2)X RAID Level 10
Level Description Minimum # of drives** Space efficiency Fault tolerance Array failure rate*** Read performance Write performance Figure
* Assumes hardware is fast enough to support
** Assumes a non-degenerate minimum number of drives
*** Assumes independent, identical rate of failure amongst drives
**** Raid 10 can only lose 1 drive per span up to the max of 2/n drives
***** Theoretical maximum, as low as 1X in practice

Performance

Here I only raid6 as example, which meets most users requirements. I used raid5 before, and still using raid0,raid10 for different case. Majaority storage I'm managing is raid6/raidz.

In the metric above, assume hardware is fast enough to support, raid6 can reach (n-2)X w/r performance, in real world, it really depends on hardware other than number of disks. For example, 3 LUN of my new storage which has 13 data disks can easily beat whole disk io of  an old storage( (8+2)*96 disks). Disks are different too, but they are all SATA 7200rpm drives.

Within the storage box, there also have lots of parameters/planning which impact i/o performance, keep it simple again, here is the result under same type of tunning, different number of disks performance

The chart below shows the iozone test results of different luns, 1-10 presents 10 different lun configurations which described below the chart, io size were measured during the test. Detail data sheet is attached at the bottom of this report.


max_sector=2048 readahead=65536 for all tests


  1. 16+P+Q segmentsize128k i/o size 2048(w) 512(r) 1 stream

  2. 16+P+Q segmentsize128k i/o size 2048(w) 512(r) 10 stream

  3. 16+P+Q segmentsize64k i/o size 1024(w) 512(r) 1 stream

  4. 16+P+Q segmentsize64k i/o size 1024(w) 512(r) 10 stream

  5. 13+P+Q segmentsize64k i/o size <=1024(w) 512(r) 1 stream

  6. 13+P+Q segmentsize64k i/o size <=1024(w) 512(r) 10 stream

  7. 13+P+Q segmentsize 128k i/o size <=1024(w) 512(r) 1 stream

  8. 13+P+Q segmentsize 128k i/o size <=1024(w) 512(r) 10 stream

  9. 8+P+Q segmentsize 128k i/o size <=1024(w) 512(r) 1 stream

  10. 8+P+Q segmentsize 128k i/o size <=1024(w) 512(r) 1 stream



Comments