As previously and repeatedly stated :)…. Disks (and their inteconnections) represent a potential bottleneck for system performance as they are constrained by mechanical latencies (read/write head seek times and disk rotational latencies measured in rotations per minute) whereas digital microprocessor performance measured in GHz (billion cycles per second) is advancing much more rapidly. A Disk Array is an arrangement of several disks that can increase performance and improve reliability. Performance increases are achieved through Data Striping whereas Reliability is improved through Redundancy (e.g. mirroring) or error correcting codes.
Data Striping improves performance by distributing data over several disks by concurrently writing data to many disks. This gives the impression of single large, very fast disk as the system can read or write many bits in parallel from every striped platter. This is very similar to our system bus/highway example as an 8 lane highway has twice the bandwidth as a 4 lane highway.
Data Redundancy or mirroring maintains several copies of data (i.e. writes the same data to several disks) and therefore prevents data loss in the event of disk failure. Of course using several disks to write the same data decreases disk capacity. Now why do we need redundancy or some mechanism to ensure the data is reliably maintained? Let’s consider an enterprise data center example.
Mean Time To Failure (MMTF) is the average time to failure. Let’s assume the MMTF single disk is 50,000 hours (~5 years) which is very reasonable.
In reality, disks fail with higher probability early in late in their lifetimes but accounting for the early failure rate brings the MMTF down to 5 years. Additionally failures do not occur independently as bad manufacturing batches and electrical problems are a fact of life but I digress.
Continuing on, if the MMTF of a single disk is 5 years/50,000 hours, the MMTF of a single disk in an array of 100 disks in a data center is 50,000/100 = 500 hours (~21 days)… yikes and therein lies the need for additional measures to protect against data loss.
Solution => Reliability can be increased by storing redundant information so that if failure occurs, redundant information used to reconstruct data on failed disk. In this case, redundancy increases the MTTF of a disk array.
Redundant Design – the first decision is where and how to store redundant information. While the information may be mirrored (exact replica) it is possible to redundant information on small number of check disks using a variety of encodings (e.g. parity) that can detect and even correct errors. Of course this adds complexity as presented in the Memory/Storage hierarchy. I’m not going to go into detail here as this information is widely available on the Web (e.g. Wikipedia, etc.) but here are the RAID Levels:
Level 0: Non-redundant striping
Uses data striping to increase maximum bandwidth. Solution has lowest cost and best performance but of course there is no improvement to reliability.
Level 1: Mirrored
Most expensive but easily implemented solution as the system maintains two identical copies of data on two different disks. Every write to disk block involves write to both disks but note writes may not be performed simultaneously. In the event of a system failure, we write one copy then the next maintaining consistency.
Level 0 + 1: Striping + Mirroring
Combines Levels 0 and 1
Level 2: Error Correcting Codes
Striping unit is single bit and the redundancy scheme uses Hamming Codes. This allows the system to identify which disk has failed. For a quick introduction on simple error detection please read about Parity.
Level 3: Bit-Interleaved Parity
Research as necessary
Level 4: Block-Interleaved Parity
Research as necessary
Level 5: Block-Interleaved Distributed Parity
LEVEL 6: P+Q Redundancy
Redundant Array Independent Disks
Introduction and need:
Disks potential bottleneck for system performance and storage system reliability
Microprocessor performance advancing much more rapidly
Arrangement of several disks
Increase performance and improve reliability
Performance increased through DATA STRIPING
Reliability improved through REDUNDANCY
Distributes data over several disks
Gives impression of single large, very fast disk
Read a bit in parallel from every striped platter
Maintains several copies of data
Redundant information carefully organize to prevent data loss in the event of disk failure
RAID REDUNDANT ARRAYS INDEPENDENT DISKS
Combination of data striping and redundancy
Several RAID levels in existence
Increasing number of disks increases system performance
Decreases storage system reliability
Assume MEAN – TIME – TO – FAILURE MMTF single disk is 50,000 hours (~5 years)
MMTF of array of 100 disks is 50,000/100 = 500 hours (~21 days)
(actually disks fail with higher probability early in late in their lifetimes)
early – on detected manufacturing defects
late – disk wears out
additionally failures do not occur independently
bad manufacturing batch
reliability increased by storing redundant information
if failure occurs redundant information used to reconstruct data on failed disk
redundancy increases the MTTF of disk array
decide where to store redundant information.
May store redundant information on small number of CHECK DISKS
distribute redundant information uniformly over all disks
how to compute redundant information
most disk arrays store parity information
LEVELS of RAID
LEVEL 0: NONREDUNDANT
Uses data striping to increase maximum bandwidth
No redundant information maintained
Solution has lowest cost
Reliability is a problem
Has best write performance due to absence of redundant information
LEVEL 1: MIRRORED
Most expensive solution
Maintain two identical copies of data on two different disks
Every write to disk block involves write to both disks
Writes may not be performed simultaneously
Do to System failures we write one copy then the next
LEVEL 0+1: STRIPING and MIRRORING
Combines striping and mirroring
Read requests according to raid level 1
Scheduling and parallel access
Writes analogous to grade level 1
LEVEL 2: ERROR-CORRECTING CODES
Striping unit is single bit
Redundancy scheme used is HAMMING CODE
Able to identify which disk has failed
LEVEL 3: BIT-INTERLEAVED PARITY
LEVEL 4: BLOCK INTERLEAVED PARITY
LEVEL 5: BLOCK-INTERLEAVED DISTRIBUTED PARITY
LEVEL 6: P+Q REDUNDANCY