RAID Scaling Charts, Part 3: 4-128 kB Stripes Compared

RAID Scaling Charts, Part 3: Stripe Sizes At RAID 0, 5, 6 Analyzed

This is the third article that deals with analyzing the various possibilities involving various RAID setups and differing numbers of hard drives. We used the same hard disks again here: eight Samsung HM321KJ SATA/300 drives powered all of the possible RAID 0, RAID 5 and RAID 6 setups, with from three to as many as eight hard drives configured to use stripe sizes of 4 to 128 kB.

Redundant Arrays of Independent Drives (RAID) isn’t a fancy technology, but it has become the backbone of all serious businesses today. According to a recent storage study by Fleishman-Hillard, 75% of the interviewed companies utilize RAID setups, followed by DAS and NAS solutions. RAID storage solutions require a controller, which is capable of utilizing several hard drives to create a single storage partition. While the main purpose is data safety together with increased capacity, RAID is also being used to accelerate storage subsystems, because storage has always been a critical bottleneck for all sorts of businesses. Hence we published our RAID Scaling Charts, which we now conclude with the third part.

The article RAID Scaling Charts Part 1 deals with the basic RAID arrays using levels 0, 1 and 0+1. RAID 0 consists of a so-called stripe set, which is created across all available hard drives to increase performance and utilize the entire storage capacity of the combined drive set. RAID 0 is popular for high-performance applications such as HD video editing, but only one drive failing will destroy the entire array. RAID 1 offers the opposite from a security standpoint, as hard drive content is automatically mirrored onto at least a second drive. RAID 0+1 combines both RAID 0 and 1, as it mirrors two RAID 0 stripe sets. We used as few as two and as many as eight hard drives to see how these basic RAID arrays would scale in performance as you increase the number of hard drives.

This is also what we did in the RAID Scaling Charts Part 2; however, there we looked at the complex RAID arrays 5 and 6, which utilize one and two hard drives, respectively, to store parity data in addition to at least two data drives. The redundancy information allows a RAID 5 array to withstand the failure of one hard drive without suffering a loss of data. RAID 6 provides double redundancy, which requires two hard drives just to store the overhead information used to restore contents in the case of a drive failure. Parity-enabled RAID arrays are a reliable way of storing large amounts of data, but they require a powerful RAID controller that is quick enough to create the parity information or to recreate data on the fly in a worst-case scenario. We looked at several of them in August; see "Unified Serial RAID Controllers for PCI Express".

RAID involves more parameters than just the RAID level and the number of hard drives. There are factors such as the interface of the RAID controller (usually PCI Express or PCI-X), a certain amount of on-board cache memory, and of course the internal setup of the RAID array. Knowing that all array types except RAID 1 are based on stripes, it is obvious that there might be different stripe sizes. This is exactly what this article focuses on: how do RAID 0, RAID 5 and RAID 6 arrays perform at different stripe sizes between 4 kB and 128 kB?

Join our discussion on this article!

  • alanmeck
    I've found conflicting opinions re stripe size, so I did my own tests (though I don't have precision measuring tools like you guys). My raid 0 is for gaming only, so all I cared about was loading time. So I used a stopwatch to measure the difference in loading times on Left 4 Dead when using 64kb and 128kb stripe size. Results, by map:
    64kb 128kb
    No Mercy No Mercy
    Level 1: 9.15 Level 1: 9.08
    Level 2: 8.31 Level 2: 8.38
    Level 3: 8.24 Level 3: 8.31
    Level 4: 8.45 Level 4: 8.45
    Level 5: 6.56 Level 5: 6.63
    Death Toll Death Toll
    Level 1: 7.75 Level 1: 7.89
    Level 2: 7.19 Level 2: 7.26
    Level 3: 9.01 Level 3: 8.94
    Level 4: 9.36 Level 4: 9.36
    Level 5: 9.5 Level 5: 9.64
    Dead Air Dead Air
    Level 1: 7.68 Level 1: 7.47
    Level 2: 7.96 Level 2: 8.03
    Level 3: 9.08 Level 3: 8.87
    Level 4: 8.17 Level 4: 8.17
    Level 5: 6.98 Level 5: 6.84
    Blood Harvest Blood Harvest
    Level 1: 8.24 Level 1: 8.17
    Level 2: 7.33 Level 2: 7.33
    Level 3: 7.68 Level 3: 7.68
    Level 4: 8.45 Level 4: 8.31
    Level 5: 7.89 Level 5: 8.1

    I'm using software raid 0 on my GA-870A-UD3 mobo. The results for me were almost identical (128kb was faster by .07 seconds total). That being the case, I erred on the side of 128kb in order to reduce the potential for write amplification (I'm using 3x ocz vertex 2's). What's remarkable is that, despite using the stopwatch to measure times manually, the results were always either identical, or separated by intervals of .07 seconds. Weird, huh? Btw thanks to Tomshardware, you guys give a lot of helpful info.
  • Does anyone want a slower system? why do we have to choose? why do we not just get the fastest option without having to do this? or is that to simple!
  • I wish we could see what 256 does. Or even 1024 but that just sounds like a waste of space unless your doing Video or Music. Maybe gameing but RAM and bandwidth will always give you an edge if no one is hacked the game.
  • Shomare
    I agree...can you please look into getting one of the new Areca 1882 controllers with 1+GB of mem on it and a dual core 800Ghz processor? We would like to see the larger stripe sizes, the larger processor, and the larger memory footprint's results! :)
  • dermoth
    There is a misconception in this article. The point about capacity used: "For example, if you selected a 64 kB stripe size and you store a 2 kB text file, this file will occupy 64 kB.". This is totally wrong.

    The only incidence on size used is the FILESYSTEM block size as all files stored will be rounded up to the upper block (the last block being only partially filled). To the OS, the RAID array still looks like any other storage device and multiple filesystems block can be stored within a single stripe element.

    Also note that on RAID 5 & 6, the stripe size is the stripe element size X number of data disks, and writes are fastest when full stripes are written at once. If you write only 4k in a 384k stripe (ex 64k stripe element on a 8-disk RAID6) then all other sectors have to be read on disk before the controller can write out the 4k block & updated parity data.

    You will get better performance if you manage to match the filesystem block size to the FULL raid stripe size, and only in that case the statement above is true. Many filesystems offers other means of tuning the filesystem IO access patterns to match the underlying RAID geography without having to use excessively large block sizes, and most filesystems default to 4k block sizes which is also what most standalone rotational medias use internally since many years (even when they show 512k sector sizes for compatibility).