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 |