RAID 1+0 vs RAID 0+1

I went with some advice I was given from someone I know to go with a RAID setup for this server I ordered. The specs are below. I plan on using this server to host multiple sites in a PHP/MySQL environment and an SVN repository in Ubuntu Server. I'd like to have a setup where the primary drive is mirrored so that in the event of failure on a drive the server could just use the other pair of drives.

I'm reading on wikipedia about raid setups and I see RAID 0-5, but don't see a 10 listed on wikipedia. Perhaps I'm just not sure what I'm looking for, to be honest I've never used anything RAID.

On-Board Intel ESB2 RAID controller - 0,1,5,10 SATA RAID

Manufacturer: SuperMicro
Model / Part Number: 6015P-TR
Processor(s): Dual (2x) Intel Xeon 2GHz 5130 Dual Core 64-Bit Processors - 4MB Cache, 1333MHz FSB
Memory: 4GB RAM (4x 1GB PC2-5300) - 8 slots on motherboard
Hard Drive(s): Four (4) Hitachi 500GB 7200RPM SATA Hard Drives
Optical Drive: DVD-ROM
Floppy Drive: Included
Network Interface: Dual 10/100/1000 Gigabit Ethernet
RAID: On-Board Intel ESB2 RAID controller - 0,1,5,10 SATA RAID
Power Supplies: 2 (Redundant) - 700W each
Form Factor: Rack Mount - 1U

I'm not sure the best route to take with RAID for what I'm looking for as I'm totally new to it.


update

At this point, when I select RAID10 from the raid controller and go into Ubuntu server installation it shows 2 separate 500GB drives instead of a single 1 TB drive. Ubuntu is not giving me any RAID options duration installation.

I'm thinking I'm just going to install everything on one of those 500 GB drives for the server, then have all my site's data on the other drive.

I need to get moving on this server, I can't spend weeks working out RAID issues.


The idea of most RAID levels is to provide better reliability or speed for arrays of disks using a combination of the below methods:

  • striping - splits data speed-efficiently across two or more disks +speed
  • mirroring - copies the data onto two or more disks -capacity +reliability
  • parity - a separate disk(s) to verify the data on the other disks is correct +reliability

You have to decide what's most important for you, capacity, reliability, or speed.

Raid 1+0

The official name for RAID 10 is RAID 1+0. Raid 1+0 is a good compromise between speed and reliability as it combines striping and mirroring. Using Raid 1+0, you will have 1TB of space.

How a RAID 1+0 hardware controller works:

+-----------------------------------------------------+
|                                                     |    :
|  500GB          500GB        500GB          500GB   |    :
|    |              |            |              |     |    :
|    +-500GB-MIRROR-+            +-500GB-MIRROR-+     |    : RAID Controller
|           |                           |             |    :
|           +---------1TB-STRIPE--------+             |    :
|                         |                           |    :
+-------------------------|---------------------------+
                          |
+-------------------------|---------------------------+
|                         |                           |    :
|                  OPERATING SYSTEM                   |    :
|                         |                           |    : Software
|                    APPLICATION                      |    :
|                                                     |    :
+-----------------------------------------------------+

It is important to understand that, with a RAID controller, the operating system knows nothing about RAID or multiple disks, it will merely see a plain, single hard drive. All hardware-controlled RAID configuration must be done through the BIOS.

Redundancy: RAID 1+0 vs RAID 0+1

RAID 0+1 is effectively the same thing as RAID 1+0, just the other way round:

                 RAID 1+0              ¡             RAID 0+1              
                                       |                                   
        [#]      [#]   [#]      [#]    |    [#]      [#]   [#]      [#]    
         |        |     |        |     |     |        |     |        |     
         +-MIRROR-+     +-MIRROR-+     |     +-STRIPE-+     +-STRIPE-+     
             |              |          |         |              |          
             +----STRIPE----+          |         +----MIRROR----+          
                     |                 !                 |                 

RAID 1+0 is far more commonly used, however, because it has better redundancy (smaller chance of array failure because of multiple drive failures). The probability of array failure for each RAID level is:

  • RAID 1+0: 1 drive fails: 0 (0%), 2 drives fail: ⅓ (33%), 3 drives fail: 1 (100%)
  • RAID 0+1: 1 drive fails: 0 (0%), 2 drives fail: ⅔ (66%), 3 drives fail: 1 (100%)

As always, ask into a room: "Which RAID level should I use?" and you'll get (N + 1) answers where N is the number of sysadmins in the room. You might want to read the numerous past posts on this topic.

For a 4 disk server I would say:

  • RAID "10" if you want to maximize performance. This one is a no-brainer. Note that RAID "10" is not a classical RAID level, it is a nested RAID, and depending on manufacturer implementation it is either RAID 0+1 or RAID 1+0.

  • RAID 5 if you want to maximize disk space. Don't use RAID 6 on only 4 drives, RAID 6 is for protecting against simultaneous 2 disk failure, and that is highly unlikely on just 4 disks. It's much more likely on a large (~10+ disks) array where rebuild times are also larger. Keep in mind that RAID 5's small file write performance is not good.

With RAID 10 you will have 1 TB space and with RAID 5 you'll have 1.5 TB (not correcting for file system overhead and harddisk manufacturers' marketing).

Don't forget to to set up proactive monitoring so that you'll be alerted if a disk fails, so that you can replace it and rebuild the array to full strength.


RAID 10 is not an official RAID level, it is instead a Nested Raid Level. It is effectively RAID 1+0, a stripe of mirrors. It is where you effectively take 2 or more RAID 1 sets, and stripe them into a RAID 0 set.

In a normal RAID 0 set, if one disk failed you would loose the Array, in a RAID 10 set, if one whole mirrored set failed, you would loose the Array.

So, in looking at what setup you want, it depends if you are looking for redundancy, speed or both. If it is just redundancy you are looking for, then RAID 1 or 5 would be better for you, you gain no extra redundancy going from RAID 1 to 10.


In a situation like this, your choice is one between reliability and speed.

You can go with RAID 10, which as Sam Cogan pointed out, is a RAID 1 (mirror) of RAID 0 (stripes). This is the higher performance option. As Sam also pointed out, you can lose one disk and still have a good set. Losing a second disk has a 50% chance of causing you data loss, because it's possible to lose one RAID 1 set entirely.

If you would rather trade performance for reliability, you can use RAID 6, which reserves 2 drives for parity information. Since you have 4 drives, you would have 2 drives worth of usable space (the same as RAID10, in this case). This is slower than RAID10, but at no time will a loss of 2 disks cause you to lose data.