RAID, or a redundant array of independent disks, is a storage solution intended to improve some combination of fault tolerance, storage management, and performance. RAID works as a form of storage virtualization that combines multiple physical disks into one logical volume.
RAID works by saving data in either a mirrored or striped manner (sometimes both), with or without parity. How the RAID is set up is noted through RAID levels.
Mirrored RAID stores the saved data across two drives, providing a perfect duplicate. This is an especially fault-tolerant solution, yet halves the capacity of the RAID because everything saves twice. This does allow for faster read times, because two concurrent read requests can process independently. In contrast, writes take longer since the data is saved twice.
Striped RAID saves data across multiple hard-drives, with strong read and write throughputs, save for instances where multitasking is needed. Striping is often used alongside a parity bit to check for errors.
A parity bit is a bit added to the end of the data string used for error checking. However, parity bits can only check for errors, not correct them. Despite this, when used alongside data striping, the parity bit can, alongside the data on other disks, reconstruct the original data. The amount of disks that can fail and be reconstructed in the array is dependent upon RAID level.
Although there are more than just the RAID levels listed here, RAID 1-6 and RAID 10 are generally the most-referenced.
RAID 0 offers no additional fault tolerance or redundancy but is intended to increase the throughput of the drives. The data is saved to the disks using striping, with no mirroring or parity, distributing all data evenly throughout the disks.
Contrary to RAID 0, RAID 1 uses mirroring with no striping or parity. This allows for increased redundancy, as explained above, with improved read times and degraded write times.
Rarely used in the modern day, RAID 2 uses bit-level striping with Hamming-code parity. All rotation of internal disks is synced, and each sequential bit of data is stored on a different drive.
RAID 3, also uncommon, uses byte-level striping with parity. As with RAID 2, all disk rotation is synced, and data is striped so each sequential byte is on a different drive. Parity bits save to a dedicated disk.
Unlike the prior two RAIDs, RAID 4 uses block-level striping with dedicated parity, which saves chunks of data of a predetermined size to each disk; one disk is dedicated only to parity bits. RAID 4 also offers users the benefit of parallelism, in which a single read/write operation does not need to spread across all drives to read data; this allows for more operations to run at once.
RAID 5 uses block-level striping, only with distributed parity — meaning that the parity bits are spread out across all drives. At least three disks are required for RAID 5, and up to one disk can fail without affecting data; however, should a second disk fail.
RAID 6, like RAID 5, used block striping with parity, but double parity is used instead, meaning that two parity bits are saved for each data string. This allows for additional fault tolerance, and up to two failed disks. However, this is at the expense of higher performance demands.
RAID 10 combines data striping with mirroring, allowing for substantial fault tolerance. Multiple drives can fail, and as long as no mirror has lost all its drives, data can be reconstructed.