RAID (Redundant Array of Independent/Inexpensive Disks) is a collection of disk drives that offers increased performance and fault tolerance.
There are a number of different RAID levels. The three most commonly used are 0, 1, and 5.
The various RAID configurations are all appropriate if used correctly, and no RAID configuration is 'best' for all situations. When choosing between the different RAID levels, ensure you select a solution that will be able to handle the required I/O operations needed.
RAID 0/ Striping
Striping without parity (spreading out blocks of each file across multiple disks).
- a single failure will crash the entire stripe set
- 100% storage efficiency
- READ and WRITE performance can be much higher (depending upon geom. of stripe set)
RAID 1/ Mirroring
Full disk mirroring or duplexing.
- use where availability is essential AND write performance requirements eliminates RAID 5
- doubles cost of storage (2x80Gb disk = 80Gb storage)
- costs 5-15% in performance when using software RAID (Windows)
Bit-level striping with parity
Byte-level striping with dedicated parity. Same as Level 0, but also reserves one dedicated disk for error correction data. It provides good performance and some level of fault tolerance.
Block-level striping with dedicated parity.
Block-level striping with distributed parity.
RAID 5 is normally considered best for Oracle database files if RAID 10 is not available or too expensive.
- use where availability is important, AND 'read' will be the majority of I/O's
- costs about 20% (5 member stripe) to 33% (3 member stripe)
- decreases WRITE performance by 1/4 (5 members) to 1/3 (3)
- increases READ (for larger reads) by 1.5 to 3x (usually limited by transfer capacity of SCSI channel)
Block-level striping with two sets of distributed parity for extra fault tolerance.
Asynchronous, cached striping with dedicated parity.
A combination of RAID 0 (striping) and RAID 1 (mirroring). Depending on the internal scheme, also referred to as RAID 0+1 or 1+0.
RAID 0+1: Basic elements are two (or more) stripes of several disks, which then are mirrored onto eachother (the stripes, not the disks). Fault tolerance is lower than with RAID 1+0: one failing disk invalidates a whole stripe set, two disks failing on either side of the mirror renders the volume unusable. Furthermore, the recovery takes longer as the volume's whole content needs to be re-mirrored to the repaired stripe.
RAID 1+0: Basic element are many pairs of mirrored disks, over which a stripe set is defined. Fault tolerance is higher than in RAID 0+1, since either disk of any mirrored pair can fail without harming the volume (provided no mirrored pair loses both disks, of course). In an "ideal" failure, half of all participating disks on either side of their mirrors can fail without the volume becoming unavailable. Recovery time is also lower compared to RAID 0+1, since only one disk pair needs to be re-sync'ed.
Oracle refers to RAID 10 as SAME - Stripe and Mirror Everything, in which Everything merely means datafiles, tempfiles, redo logs and controlfiles.
RAID 10 is the ideal RAID level in terms of performance and availability, but it can be expensive as it requires at least twice the amount of disk space. If money is no objective, always choose RAID 10.
|Glossary of Terms|