RAID -- Redundent Array of Inexpensive Disks

Basic Idea:  Use lots of cheap disks to create a few expensive disks.

Raid 0:
Use no redundency.  Can loose no disks
Stripe the data across the disks.

Raid 1:  Mirroring
Total Redundency:  Can loose any one disk, maybe more
Create two raid-0 arrays.  Mirror them
Notes:  Any seek can be answered by one of two disks. Pick the disk with the closer head.

Raid 2:  Stripe the data across the disks by bytes, adding an error checking code.
Must have N extra disks.  Can lose N disks without errors.  N is normally the log of the number of disks
Notes:  Not used in real life, other levels are better

Raid 3:  Same as Raid #2 except N = 1.
Notes:  Some few times used in real life

Raid 4:  Stripe the data across the disk in large stripes, adding an error cehcking code
Can lose 1 disk without error.
To update any data, the parity must be re-read and then recomputed and then re-written.  Icky!
The Parity disk can be a bottlenect for writing.

Raid 5:  Like Raid 4, except the parity disk moves too, avoiding clogging the disk.
 

For the table below ... F = (Num of Disks -1) / Num of Disks
 
Normal Disk Raid 0 Raid 1 Raid 2 Raid 3 Raid 4 Raid 5
Storage Capacity Size of disk Sum of disks 1/2 Sum of disk Sum of Disks * (Num of Disks - N) / Num Of Disks Sum of Disks * F Sum of Disks * F Sum of Disks * F
Read Throughput 1 Num of Disks Num of Disks Num of Disks - N Num of Disks -1 Num of Disks -1 Num Of Disks -1
Write Throughput 1 Num of Disks 1 Num of Disks - N Num of Disks - 1 Num of Disks - 1 Num of Disks - 1
Small Reads 1 Num of Disks Num of Disks 1 1 Num of Disks - 1 Num of Disks - 1
Small Writes 1 Num of Disks 1/2 Num of Disks 1 1 1 Num of Disks / 2
Sledgehammer Factor 0 0 minimum of 1 max(1, floor(N/2)) 1 1 1