There are many different ways to
organize data in a RAID array. These ways are called "RAID
levels". Different RAID levels have different speed and fault
tolerance properties. RAID
level 0 is not fault tolerant. Levels 1, 5,
6, and 1+0 are fault tolerant to a different degree - should
one of the
hard drives in the array fail, the data is still reconstructed on the fly
and no access interruption occurs.RAID levels 2, 3, and 4 are
theoretically defined but not used in practice.
There are some more complex
layouts: RAID 5E/5EE (integrating some spare space), RAID 50
and 60 (a
combination of RAID 5 or 6 with RAID 0), and RAID DP. These are however
beyond
the scope of this reference.
|
|
|
RAID levels comparison chart
|
RAID
0
|
RAID
1
|
RAID
5
|
RAID
6
|
RAID
1+0
|
Minimum number of disks
|
2
|
2
|
3
|
4
|
4
|
Fault tolerance
|
None
|
1 disk
|
1 disk
|
2 disks
|
1 disk
|
Disk space used to maintain fault
tolerance
|
None
|
50%
|
1 disk
|
2 disks
|
50%
|
Access speed
|
Fast read and write
|
Fast read, slow write
|
See description below
|
See description below
|
Fast read, medium write
|
Implementation cost
|
Cheap
|
Expensive (disks)
|
Fair (software)
Expensive (controller)
|
Very expensive (controller)
|
Expensive (disks)
|
|
Striping and blocks
Striping
is a technique to store data on the disk array. The contigous stream of data
is divided into
blocks, and blocks are written to multiple disks in a
specific pattern. Striping is used with RAID
levels 0, 5, 6, and 10.Block
size is selected when the array is created. Typically, blocks are from
32KB
to 128KB in size.
|
RAID Level 0 (Stripe set)
Use RAID0 when you need
performance but the data is not important.
In a RAID0, the data is divided
into blocks, and blocks are written to disks in turn.
RAID0 provides the most speed
improvement, especially for write speed, because read and
write requests
are evenly distributed across all the disks in the array. Note that RAID1,
Mirror,
can provide the same improvement with reads but not writes. So if
the request comes for, say,
blocks 1, 2, and 3, each block is read from its
own disk. Thus, the data is read three times
faster than from a single
disk.
Disk 1
|
Disk 2
|
Disk 3
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
However, RAID0 provides no fault
tolerance at all. Should any of the disks in the array fail, the
entire array
fails and all the data is lost.RAID0 solutions are cheap, and
RAID0 uses all the disk capacity.If RAID0 controller fails, you
can do a RAID0 recovery relatively easy using RAID
recovery software. However you should keep in mind that if the disk failure
happens, data is lost irreversibly.
|
|
|
RAID Level 1 (Mirror)
Use mirroring when you need
reliable storage of relatively small capacity.Mirroring (RAID1)
stores two
identical copies of data on two hard drives. Should one of the drives fail,
all the
data can be read from the other drive. Mirroring does not use blocks
and stripes.
Read speed can be improved in
certain implementations, because read requests are sent to
two drives in
turn. Similar to RAID0, this should increase speed by the factor of two.
However, not all implementations take advantage of this technique.
Disk 1
|
Disk 2
|
1
|
1
|
2
|
2
|
3
|
3
|
Write speed on RAID1 is the same
as the write speed of a single disk, because all the
copies of the data
must be updated.RAID1 uses the capacity of one
of its drives to maintain
fault tolearnce. This amounts to 50% capacity
loss for the array. E.g. if you combine two
500GB drives in RAID1, you'd
only get 500GB of usable disk space.
If RAID1 controller fails you do
not need to recover neither array configuration nor data from it.
To get
data you should just connect any of the drives to the known-good computer.
|
|
|
RAID Level 5 (Stripe with parity)
RAID5 fits as large, reliable,
relatively cheap storage.RAID5 writes data blocks evenly
to
all the disks, in a pattern similar to RAID0. However, one additional
"parity" block is
written in each row. This additional parity,
derived from all the data blocks in the row, provides redundancy. If one of
the drives fails and thus one block in the row is unreadable, the contents
of this block can be reconstructed using parity data together with all the
remaining data blocks.
If all drives are OK, read
requests are distributed evenly across drives, providing read speed
similar
to that of RAID0. For N disks in the array, RAID0 provides N times faster
reads and
RAID5 provides (N-1) times faster reads. If one of the drives has
failed, the read speed
degrades to that of a single drive, because all
blocks in a row are required to serve the request.
Write speed of a RAID5 is
limited by the parity updates. For each written block, its corresponding
parity block has to be read, updated, and then written back. Thus, there is
no significant write speed improvement on RAID5, if any at all.
Disk 1
|
Disk 2
|
Disk 3
|
1
|
2
|
P
|
3
|
P
|
4
|
P
|
5
|
6
|
7
|
8
|
P
|
The capacity of one member drive
is used to maintain fault tolerance. E.g. if you have 10
drives 1TB each,
the resulting RAID5 capacity would be 9TB.If RAID5 controller fails,
you
can still recover data from the array with RAID 5 recovery software. Unlike RAID0,
RAID5
is redundant and it can survive one member disk failure.
While the diagram on the right
might seem simple enough, there is a variety of different
layouts in
practical use. Left/right and synchronous/asynchronous produce four
possible
combinations (see here for diagrams). Further complicating the
issue, certain controllers
implement delayed parity.
|
|
|
RAID Level 6 (Stripe with dual parity)
RAID6 is a large, highly
reliable, relatively expensive storage.RAID6 uses a block pattern
similar to RAID5, but utilizes two different parity functions to
derive two different parity
blocks per row. If one of the drives fails, its
contents are reconstructed using one set of parity
data. If another drive
fails before the array is recovered, the contents of the two missing drives
are reconstructed by combining the remaining data and two sets of parity.
Disk 1
|
Disk 2
|
Disk 3
|
Disk 4
|
1
|
2
|
P1
|
P2
|
3
|
P1
|
P2
|
4
|
P1
|
P2
|
5
|
6
|
7
|
8
|
P1
|
P2
|
Read speed of the N-disk RAID6
is (N-2) times faster than the speed of a single drive, similar
to RAID
levels 0 and 5. If one or two drives fail in RAID6, the read speed degrades
significantly because areconstruction of missing blocks requires an entire
row to be read.There is no significant
write speed improvement in RAID6 layout. RAID6 parity updates require even more
processing
than that in RAID5.
The capacity of two member
drives is used to maintain fault tolerance. For an array of 10 drives
1TB
each, the resulting RAID6 capacity would be 8TB.The recovery of the RAID6 from a
controller failure is fairly complicated.
|
|
|
RAID Level 10 (Mirror over stripes)
RAID10 is a large, fast,
reliable, but expensive storage.RAID10 uses two identical RAID0
arrays to hold two identical copies of the content.Read speed of the N-drive RAID10
array
is N times faster than that of a single drive. Each drive can read
its block of data independently,
same as in RAID0 of N disks.
Disk 1
|
Disk 2
|
Disk 3
|
Disk 4
|
1
|
2
|
1
|
2
|
3
|
4
|
3
|
4
|
5
|
6
|
5
|
6
|
7
|
8
|
7
|
8
|
Writes are two times slower than
reads, because both copies have to be updated. As far as
writes are
concerned, RAID10 of N disks is the same as RAID0 of N/2 disks.Half the array
capacity is used
to maintain fault tolerance. In RAID10, the overhead increases with the
number of disks, contrary to RAID levels 5 and 6, where the overhead is the
same for any
number of disks. This makes RAID10 the most expensive RAID
type when scaled to large
capacity.
If there is a controller failure
in a RAID10, any subset of the drives forming a complete RAID0
can be
recovered in the same way the RAID0 is recovered.Similarly to RAID 5, several
variations of the layout are possible in implementation. For more diagrams,
refer here.
|
|
|
Comments
Post a Comment