RAID

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:

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

see here: http://www.pcworld.com/article/2026358/multiple-hard-drives-working-together-all-about-raids.html#tk.nl_pcwbest

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

 

DISK ARRAY

 

Arrangement of several disks

Increase performance and improve reliability

Performance increased through DATA STRIPING

Reliability improved through REDUNDANCY

 

DATA STRIPING

 

Distributes data over several disks

Gives impression of single large, very fast disk

Read a bit in parallel from every striped platter

 

REDUNDANCY

 

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

 

REDUNDANCY

 

Increasing number of disks increases system performance

Decreases storage system reliability

 

EXAMPLE

 

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

electrical problems

 

 

SOLUTION

 

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

 

REDUNDANT DESIGN

 

decide where to store redundant information.

May store redundant information on small number of CHECK DISKS

Use parity

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

Called MIRRORING

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

Maintains consistency

 

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