RAID
RAID • • • • •
Redundant Array of Independent Disks Redundant Array of Inexpensive Disks 6 levels in common use Not a hierarchy Set of physical disks viewed as single logical drive by O/S • Data distributed across physical drives • Can use redundant capacity to store parity information
RAID 0 • • • •
No redundancy Data striped across all disks Round Robin striping Increase speed —Multiple data requests probably not on same disk —Disks seek in parallel —A set of data is likely to be striped across multiple disks
RAID 1 • • • • • •
Mirrored Disks Data is striped across disks 2 copies of each stripe on separate disks Read from either Write to both Recovery is simple —Swap faulty disk & re-mirror —No down time
• Expensive
RAID 2 • Disks are synchronized • Very small stripes —Often single byte/word
• Error correction calculated across corresponding bits on disks • Multiple parity disks store Hamming code error correction in corresponding positions • Lots of redundancy —Expensive —Not used
RAID 3 • Similar to RAID 2 • Only one redundant disk, no matter how large the array • Simple parity bit for each set of corresponding bits • Data on failed drive can be reconstructed from surviving data and parity info • Very high transfer rates
RAID 4 • • • •
Each disk operates independently Good for high I/O request rate Large stripes Bit by bit parity calculated across stripes on each disk • Parity stored on parity disk
RAID 5 • • • • •
Like RAID 4 Parity striped across all disks Round robin allocation for parity stripe Avoids RAID 4 bottleneck at parity disk Commonly used in network servers
RAID 6 • Two parity calculations • Stored in separate blocks on different disks • User requirement of N disks needs N+2 • High data availability —Three disks need to fail for data loss —Significant write penalty
RAID 0, 1, 2
RAID 3 & 4
RAID 5 & 6
RAID-0 Strip 0 Strip 4 Strip 8 Strip 12
Strip 1 Strip 5 Strip 9 Strip 13
Strip 2 Strip 6 Strip 10 Strip 14
Strip 3 Strip 7 Strip 11 Strip 15
Striped, non-redundant Parallel access to multiple disks Excellent data transfer rate (for small strips) Excellent I/O request processing rate (for large strips)
Typically used for applications requiring high performance for non-critical data
RAID-1 Strip 0 Strip 1 Strip 2 Strip 3
Strip 0 Strip 1 Strip 2 Strip 3
Mirrored/replicated (most costly form of redundancy) I/O request rate: good for reads, fair for writes Data transfer rate: good for reads; writes slightly slower Read can be serviced by the disk with the shorter seek distance Write must be handled by both disks
Typically used in system drives and critical files Banking, insurance data Web (e-commerce) servers
Combining RAID-0 and RAID-1 Strip 0 Strip 4 Strip 8 Strip 12
Strip 1 Strip 5 Strip 9 Strip 13
Strip 2 Strip 6 Strip 10 Strip 14
Strip 3 Strip 0 Strip 7 Strip 4 Strip 11 Strip 8 Strip 15 Strip 12
Strip 1 Strip 5 Strip 9 Strip 13
Strip 2 Strip 6 Strip 10 Strip 14
Can combine RAID-0 and RAID-1: Mirrored stripes (RAID 0+1, or RAID 01) Example: picture above Striped Mirrors (RAID 1+0, or RAID 10)
Data transfer rate: good for reads and writes Reliability: good Efficiency: poor (100% overhead in terms of disk utilization)
Strip 3 Strip 7 Strip 11 Strip 15
RAID-2 b0
b1
b2
b3
f0(b)
f1(b)
f2(b)
Hamming codes capable of correcting two or more erasures E.g., single error-correcting, double error-detecting (SEC-
DED)
Problem with small writes (similar to DRAM cycle time/access time) Poor I/O request rate
RAID-3 b0
b1
b2
b3
P(b)
Fine-grained (bit) interleaving with parity
E.g., parity = sum modulo 2 (XOR) of all bits
Disks are synchronized, parity computed by disk controller When one disk fails… (how do you know?)
Data is recovered by subtracting all data in good disks from parity
disk Recovering from failures takes longer than in mirroring, but failures are rare, so is okay Hot spares used to reduce vulnerability in reduced mode
Performance:
Poor I/O request rate Excellent data transfer rate Typically used in large I/O request size applications, such as
RAID-4 Blk 0 Blk 4 Blk 8 Blk 12
Blk 1 Blk 5 Blk 9 Blk 13
Blk 2 Blk 6 Blk 10 Blk 14
Blk 3 P(0-3) Blk 7 P(4-7) Blk 11 P(8-11) Blk 15 P(12-15)
Coarse-grained striping with parity Unlike RAID-3, not all disks need to be read on each write
New parity computed by computing difference between old and
new data
Drawback:
Like RAID-3, parity disk involved in every write; serializes small
reads
I/O request rate: excellent for reads, fair for writes
RAID-5 Blk 0 Blk 4 Blk 8 Blk 12
Blk 1 Blk 2 Blk 5 Blk 6 Blk 9 P(8-11) P(12-15) Blk 13
Blk 3 P(4-7) Blk 10 Blk 14
P(0-3) Blk 7 Blk 11 Blk 15
Key Idea: reduce load on parity disk
Block-interleaved distributed parity Multiple writes can occur simultaneously Block 0 can be accessed in parallel with Block 5 First needs disks 1 and 5; second needs disks 2 and 4
I/O request rate: excellent for reads, good for writes Data transfer rate: good for reads, good for writes Typically used for high request rate, read-intensive data lookup