What is RAID?
RAID is an acronym for Redundant Array of Independent (or Inexpensive) Disks.
In fact, RAID is the way of combining several independent and relatively small disks into a single storage of a large size.
The disks included into the array are called array members.
The disks can be combined into the array in different ways which are known as RAID levels.
Each of RAID levels has its own characteristics of:
- Fault-tolerance which is the ability to survive of one or several disk failures.
- Performance which shows the change in the read and write speed of the entire array as compared to a single disk.
- The capacity of the array which is determined by the amount of user data that can be written to the array.
The array capacity depends on the RAID level and does not always match the sum of the sizes of the RAID member disks.
To calculate the capacity of the particular RAID type and a set of the member disks you can use a
free online RAID calculator.
How RAID is organized?
Two independent aspects are clearly distinguished in the RAID organization.
- The organization of data in the array (RAID storage techniques: striping, mirroring, parity, combination of them).
- Implementation of each particular RAID installation - hardware or software.
RAID storage techniques
The main methods of storing data in the array are:
- Striping - splitting the flow of data into blocks of a certain size (called "block size") then writing of these blocks across
the RAID one by one. This way of data storage affects on the performance.
- Mirroring is a storage technique in which the identical copies of data are stored on the RAID members simultaneously.
This type of data placement affects the fault tolerance as well as the performance.
- Parity is a storage technique which is utilized striping and checksum methods. In parity technique,
a certain parity function is calculated for the data blocks. If a drive fails, the missing block are recalculated from the checksum,
providing the RAID fault tolerance.
All the existing RAID types are based on striping, mirroring, parity, or combination of these storage techniques.
- RAID 0 - based on striping.
This RAID level doesn't provide fault tolerance but increases the system performance (high read and write speed).
- RAID 1 - utilizes mirroring technique, increases read speed in some cases,
and provides fault tolerance in the loss of no more than one member disk.
RAID 0+1 - based on the combination of striping and mirroring techniques.
This RAID level inherits RAID 0 performance and RAID 1 fault tolerance.
RAID1E - uses both striping and mirroring techniques,
can survive a failure of one member disk or any number of nonadjacent disks.
There are three subtypes of RAID 1E layout: near, interleaved, and far.
More information and diagrams on the RAID 1E page.
RAID 5 - utilizes both striping and parity techniques.
Provides the read speed improvement as in RAID 0 approximately, survives the loss of one RAID member disk.
RAID 5E - a variation of RAID 5 layout the only difference of which is an integrated
spare space allowing to rebuild a failed array immediately in case of a disk failure.
Read more on the RAID5E page.
RAID 5 with delayed parity - pretty similar to basic RAID 5 layout, but uses nonstandard scheme of striping.
More information about RAID5 with delayed parity.
RAID 6 - similar to RAID 5 but uses two different parity functions.
The read speed is the same as in RAID 5.
RAID can be created by two different ways:
- with the use of operating system drivers, so called software RAID;
- with the use of special hardware, so called hardware RAID.
Software RAID is one of the cheapest RAID solutions.
Nowadays, almost any of the operating systems has a built-in capability to create RAID, though not for all RAID levels.
Thus, Windows home editions allow user to create only RAID 0, while RAID 1 and RAID 5 can be created only using Windows server editions.
RAID layout created by means of Windows is inseparably linked with the host operating system and so its partitions cannot be used,
for example, in dual boot.
Software RAID is created based on the user's computer and therefore it uses the host system CPU for implementation.
It should be noted, that in case of RAID levels 0 and 1, CPU load is negligible, but for the RAID types based on parity, CPU
load can vary from 1 to 5 percent depending on CPU power and the number of the disks, which is also negligible for practical purposes.
There are certain limitations on the use of the software RAID to boot the system.
Only RAID 1 can contain boot partition, while system boot is impossible with a software RAID 5 and RAID 0.
Keep in mind that in most cases software RAID doesn't implement the hot-swapping and so it cannot be used where continuous availability is required.
Hardware RAID is created using separate hardware. Basically there are two options:
- inexpensive RAID chip possibly built into the motherboard,
- more expensive option with a complex standalone RAID controller.
Such controllers can be equipped with their own CPU, battery-backed up cache memory, and they typically support hot-swapping.
A hardware RAID has some advantages over a software RAID, such as:
- doesn't use CPU of the host computer;
- allows user to create boot partitions;
- handles errors better, since communicates with the devices directly;
- supports hot-swapping.