Redundant Array of Inexpensive Disks. Multiple physical hard disks that cooperate together for purposes of speed and/or fault tolerance. Fault tolerance means that if one of the disks fails, the system can continue with no data is lost.
The RAID is treated as a single logical hard drive, so the RAID, as a whole, sometimes has its own disk controller. If, on the other hand, each disk has its own controller, then the disks are said to be duplexed. Duplexing can be faster and safer.
RAID comes in different kinds:
- RAID-0 uses data striping (requires at least 2 disks). In data striping, data is broken into units and the units are spread across multiple disks, i.e. the stripe set. EG: If I have data "ABC", then disk 1 will have a stripe consisting of "A", disk 2 will have "B", and disk 3 will have "C". This increases reading and writing performance tremendously (since all disks can be read or written simultaneously), but it has it has no fault tolerance (since if one disk is lost, then that data is lost).
- RAID-1 has one disk mirrored/duplexed on the other (requires at least 2 disks). EG: If I have data "ABC", then disk 1 will have "ABC" and disk 2 will have "ABC". This should have no gain in reading or writing performance but the practical tendency seems to be somewhat faster reading and somewhat slower writing. Disk mirroring has 2 disks and one shared disk controller. Disk duplexing has 2 disks each with its own disk controller. This has the best fault tolerance.
- RAID-2 is RAID-0 (data striping) but it has one drive dedicated for storing ECC (Error Checking and Correcting or Error Correcting Code) information (requires at least 3 disks). When a chunk of data is received or written, ECC generates a code. Before the chunk of data is sent or read, the ECC regenerates the code using the same algorithm. If the two codes match, all is well. If the two codes don't match, the first code can recreate the data. The performance is fast and more likely to be correct. RAID-2 can recover automatically from the loss of any one disk except for the ECC disk.
- RAID-3 is RAID-0 (data striping) but it has one drive dedicated for storing parity information. Parity is set to 0 or 1 (requires at least 3 disks). Before a chunk of data is sent or written, an extra bit (the parity bit) is changed so that the the sum of the chunk of data and the parity bit match the parity. After the data is received or written, the sum is checked to see if it matches the parity. Clearly parity is not fool proof since. EG: It would not notice if two bits erred. RAID-3 can recover automatically from the loss of any one disk except for the parity disk.
- RAID-4 is RAID-3 (data striping with parity) but with larger stripes (requires at least 3 disks). To compare this with the RAID-0 example, disk one would have a stripe of "AB", disk 2 would have "C", and disk 3 would not be reached. This is powerful and good for large chunks of data. RAID-4 can recover automatically from the loss of any one disk except for the parity disk.
- RAID-5 is RAID-4 (large data striping with parity) but rotates the the parity information (requires at least 3 disks of the same size but prefers 5). EG: disk 1: A-B-Parity1, disk 2: C-Parity2-D, disk 3: Parity3-E-F, disk1: G-H-Parity 4, etc. The rotating parity allows for read and write operations to be overlapped. The usable drive space (U) is T-(T/n), T is the total size, and n is the number of disks. EG: If the system has four 5 GB disks, then U = 20-(20/4) = 20-5 = 15 GB. Clearly, the more disks are used, the less this system wastes space on parity. RAID-5 can recover automatically from the loss of one disk but not two.
- RAID-6 is like RAID-5 but includes an additional funky parity scheme (requires at least 3 disks but prefers 5). This is rare.
- RAID-7 has a real-time embedded operating system as a controller, caching with a hi-speed bus, and other features much like a stand alone computer. This is rare.
- RAID-10 is RAID-5 but with each disk mirrored (requires 6 disks but prefers 12), i.e. it is RAID-5 times 2, hence RAID-10. This has the great performance of striping and the great fault tolerance of mirroring, in addition it has rotating parity and large stripes. The penultimate RAID! Very expensive.
- RAID-53 is RAID-5 but where each stripe is itself actually a RAID-3. This is rare.
The most important kinds of RAID have built in support in Windows NT:
- RAID-0 Data striping without parity, 2 disks & 1 controller.
- RAID-1 Disk mirroring/duplexing, 2 disks & 1-2 controllers.
- RAID-5 Large data striping with rotating parity, 3-32 disks & 1+ controllers.
- RAID-10 Mirrored/duplexed large data striping with rotating parity, 6-32 disks & 1+ controllers.
The RAID software can run in one of three places: on the host server, on a HBA (Host Bus Adapter) on the host server, or on an external bridge controller outside of the host server, often in the storage array cabinet. The latter are more expensive but the former are more flexible.