RAID 6 extends RAID 5 by adding an additional parity block, thus it uses block-level striping with two parity blocks distributed across all member disks. It was not one of the original RAID levels.
RAID 5 can be seen as special case of a Reed-Solomon code. RAID 5, being a degenerate case, requires only addition in the Galois field. Since wee are operating on bits, the field used is a binary galois field GF(2). In cyclic representations of binary galois fields, addition is computed by a simple XOR.
After understanding RAID 5 as a special case of a Reed-Solomon code, it is easy to see that it is possible to extend the approach to produce redundancy simply by producing another syndrome; typically a polynomial in GF(28) (8 means wee are operating on bytes). By adding additional syndromes it is possible to achieve any number of redundant disks, and recover from the failure of that many drives anywhere in the array, but RAID 6 refers to the specific case of two syndromes.
Like RAID 5, the parity is distributed in stripes, with the parity blocks in a different place in each stripe.
RAID 6 performance
RAID 6 is relatively space inefficient when used with a small number of drives, but as arrays become bigger and have more drives the loss in storage capacity becomes less important and the probability of two disks failing at once is bigger. RAID 6 provides protection against double disk failures and failures while a single disk is rebuilding. In the case where there is only one array it may make more sense than having a hot spare disk.
The usable capacity of a RAID 6 array is
, where N is the total number of drives in the array and Smin is the capacity of the smallest drive in the array.
RAID 6 does not have a performance penalty for read operations, but it does have a performance penalty on write operations due to the overhead associated with the additional parity calculations. This penalty can be minimized by coalescing writes in fewer stripes, which can be achieved by a Write Anywhere File Layout.
RAID 6 implementation
According to SNIA (Storage Networking Industry Association), the definition of RAID 6 is: "Any form of RAID that can continue to execute read and write requests to all of a RAID array's virtual disks in the presence of any two concurrent disk failures. Several methods, including dual check data computations (parity and Reed Solomon), orthogonal dual parity check data and diagonal parity have been used to implement RAID Level 6."