block
RAID 6 extends RAID 5 by adding a second
parity block; thus, it uses
block-level striping with two parity blocks distributed across all member disks. RAID 6 requires at least four disks. As in RAID 5, there are many layouts of RAID 6 disk arrays depending upon the direction the data blocks are written, the location of the parity blocks with respect to the data blocks and whether or not the first data block of a subsequent stripe is written to the same drive as the last parity block of the prior stripe. The figure to the right is just one of many such layouts. According to the Storage Networking Industry Association (SNIA), 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." The second block is usually labeled Q, with the first block labeled P. Typically the P block is calculated as the parity (XORing) of the data, the same as RAID 5. Different implementations of RAID 6 use different
erasure codes to calculate the Q block. The classical choice is
Reed-Solomon, but it requires CPU-intensive Galois field calculations, though this can be mitigated with a hardware implementation (ASIC or
FPGA). There is a special choice of polynomial from
H. Peter Anvin used by
Linux, which allows for efficient implementation using only addition and multiplication by two in GF(28) and opens the possibility of using
SSSE3,
AVX2, or other SIMD methods to implement efficiently. Newer erasure codes specialized to the
k = 2 case go further than Anvin's optimization. These include EVENODD (1996), Row Diagonal Parity (RDP, 2004), Liberation codes (2008), and Mojette (2015).
Performance RAID 6 uses a second parity code in addition to the simple XOR. As a result it requires more processing power to both read and write. Performance varies greatly depending on how RAID 6 is implemented in the manufacturer's storage architecture—in software,
firmware, or by using firmware and specialized
hardware accelerators (
ASICs or
FPGAs) for intensive parity calculations. RAID 6 generally do not show an obvious penalty for read operations: for undamaged data, only the simpler parity needs to be calculated and checked like in RAID 5. Only when there is a disagreement will the more complex parity be needed. Additional robustness can be obtained via background
scrubbing instead of foreground reads. As a result, RAID 6 usually reads up to the same speed as RAID 5 with the same number of physical drives. The delayed-check strategy does not work when writing data. As a result, the full performance penalty of RAID 6 is seen during writes. == Comparison ==