Nested RAID levels, also known ashybrid RAID, combine two or more of thestandard RAID levels (where "RAID" stands for "redundant array of independent disks" or "redundant array of inexpensive disks") to gain performance, additional redundancy or both, as a result of combining properties of different standard RAID layouts.[1][2]
Nested RAID levels are usually numbered using a series of numbers, where the most commonly used levels use two numbers. The first number in the numeric designation denotes the lowest RAID level in the "stack", while the rightmost one denotes the highest layered RAID level; for example, RAID 50 layers the data striping ofRAID 0 on top of the distributed parity ofRAID 5. Nested RAID levels include RAID 01, RAID 10, RAID 100, RAID 50 and RAID 60, which all combine data striping with other RAID techniques; as a result of the layering scheme, RAID 01 and RAID 10 represent significantly different nested RAID levels.[3]
RAID 01, also calledRAID 0+1, is aRAID level using a mirror of stripes, achieving both replication and sharing of data between disks.[3] The usable capacity of a RAID 01 array is the same as in a RAID 1 array made of the same drives, in which one half of the drives is used to mirror the other half., where is the total number of drives and is the capacity of the smallest drive in the array.[4]
At least four disks are required in a standard RAID 01 configuration, but larger arrays are also used.
RAID 03, also calledRAID 0+3 and sometimesRAID 53, is similar to RAID 01 with the exception that byte-level striping with dedicated parity is used instead of mirroring.[5]
RAID 10, also calledRAID 1+0 and sometimesRAID 1&0, is similar to RAID 01 with an exception that the two used standard RAID levels are layered in the opposite order; thus, RAID 10 is a stripe of mirrors.[3]
RAID 10, as recognized by the storage industry association and as generally implemented by RAID controllers, is a RAID 0 array of mirrors, which may be two- or three-way mirrors,[6] and requires a minimum of four drives. However, a nonstandard definition of "RAID 10" was created for theLinux MD driver; Linux "RAID 10" can be implemented with as few as two disks. Implementations supporting two disks such as Linux RAID 10 offer a choice of layouts.[7] Arrays of more than four disks are also possible.
According to manufacturer specifications and official independent benchmarks, in most cases RAID 10[8] provides better throughput and latency than all other RAID levels[9] except RAID 0 (which wins in throughput).[10] Thus, it is the preferable RAID level for I/O-intensive applications such as database, email, and web servers, as well as for any other use requiring high disk performance.[11]
RAID 50, also calledRAID 5+0, combines the straightblock-level striping of RAID 0 with the distributed parity of RAID 5.[3] As a RAID 0 array striped across RAID 5 elements, minimal RAID 50 configuration requires six drives. On the right is an example where three collections of 120 GB RAID 5s are striped together to make 720 GB of total storage space.
One drive from each of the RAID 5 sets could fail without loss of data; for example, a RAID 50 configuration including three RAID 5 sets can tolerate three maximum potential simultaneous drive failures (but only one per RAID 5 set). Because the reliability of the system depends on quick replacement of the bad drive so the array can rebuild, it is common to includehot spares that can immediately start rebuilding the array upon failure. However, this does not address the issue that the array is put under maximum strain reading every bit to rebuild the array at the time when it is most vulnerable.[12][13]
RAID 50 improves upon the performance of RAID 5 particularly during writes, and provides better fault tolerance than a single RAID level does. This level is recommended for applications that require high fault tolerance, capacity and random access performance. As the number of drives in a RAID set increases, and the capacity of the drives increase, this impacts the fault-recovery time correspondingly as the interval for rebuilding the RAID set increases.[12][13]
RAID 60, also calledRAID 6+0, combines the straight block-level striping of RAID 0 with the distributed double parity of RAID 6, resulting in a RAID 0 array striped across RAID 6 elements. It requires at least eight disks.[14]
RAID 100, sometimes also calledRAID 10+0, is a stripe of RAID 10s. This is logically equivalent to a wider RAID 10 array, but is generally implemented using software RAID 0 over hardware RAID 10. Being "striped two ways", RAID 100 is described as a "plaid RAID".[15]
This sectionneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources in this section. Unsourced material may be challenged and removed.(February 2015) (Learn how and when to remove this message) |
The following table provides an overview of some considerations for nested RAID levels. In each case:
Level | Description | Minimum number of drives[a] | Space efficiency | Fault tolerance | |
---|---|---|---|---|---|
Min | Max | ||||
RAID 01 | Block-level striping, and mirroring without parity | 4 | 1 /strips per stripe | strips per stripe − 1 | n −n /strips per stripe |
RAID 03 | Block-level striping, and byte-level striping with dedicated parity | 6 | 1 − 1 /strips per stripe | 1 | n /strips per stripe |
RAID 10[b] | Mirroring without parity, and block-level striping | 4 | 1 /strips per stripe | strips per stripe − 1 | (strips per stripe − 1) ×strips per stripe |
RAID 1+6 | Mirroring without parity, and block-level striping with double distributed parity | 8 | (1 - 2 /strips per stripe) / 2 | 2 ×strips per stripe | 2 xstrips per stripe + (n /strips per stripe) - 2 |
RAID 50 | Block-level striping with distributed parity, and block-level striping | 6 | 1 - (1 /strips per stripe) | 1 | n /strips per stripe |
RAID 60 | Block-level striping with double distributed parity, and block-level striping | 8 | 1 - (2 /strips per stripe) | 2 | 2 × (n /strips per stripe) |
RAID 100 | Mirroring without parity, and two levels of block-level striping | 8 | 1 /strips per stripe | strips per stripe − 1 | (strips per stripe − 1) × (strips per stripe) |