Home > Data Storage Media > RAID > RAID

What is RAID by Michael Neuffer
Duplexing by Charles M. Koziero
Striping by Charles M. Koziero
Guide to RAID by David Risley
Mirroring by Charles M. Koziero
Drive Swapping by Charles M. Koziero



What is RAID?

To understand RAID, imagine multiple disk drives that are put together and interlinked in an array to obtain greater performance, capacity and reliability. RAID is an acronym for Redundant Array of Independent Disks - the technique that was developed by researchers at the University of California at Berkeley during 1987 to overcome the limitation and deficiency imposed by a single hard disk.

Using RAID

RAID became popular when the needs of new applications and devices are beyond the capability of a typical single hard disk. Special hard disks are expensive and RAID thus became an affordable alternative to large storage system that requires speedy data transfer rates and security.

RAID is now commonly used on computer server to reliably store large chunks of data. With the availability of RAID options now integrated into motherboard chipsets and operating systems, desktop and high-end users are starting to employ this technology to operate the storage-intensive tasks, such as non-linear video/audio editing and critical real-time operations.

Advantages of RAID Disk

The key design of RAID is to provide data integrity, fault tolerance, throughput and expandability. RAID can be set to various configurations to increase I/O disk performances by merging the efficiency of two or more hard drives into one logical volume or exploiting the redundancy of a second drive for data replication and integrity.

* Data Integrity and Fault Tolerance

Data on the RAID array can withstand the failure of one or more hard disk without any data loss. Restoration is done automatically and replacing data from backups are unnecessary. Data is also examined and corrected to prevent corrupted duplications or modifications.

* Throughput

Data can be read and written at a greater speed.

* Expandability

The size of a RAID array is dynamic and easily configurable. Suppose 200GB of hard disk space is needed to store a video file. Instead of splitting the file into several parts, multiple disks can be merged to provide a single disk volume.

RAID Disk Setup

To set up a RAID array, a RAID controller is used. The basic idea of having a controller is to manage read/write requests, mirroring, parity and data stripping operations from the computer to the RAID drives. The controller can either be an external dedicated hardware component, internal hardware RAID controller or a software-based solution. Some operating systems such as Linux, Windows 2000 and Windows Advanced Server provide their set of in-built software raid functions.

* Software RAID

Software RAID perform all I/O commands and RAID algorithms using the host's microprocessor. The main advantage of this solution is low cost. There is however limited expandability and a general dip in system performance caused by PCI bus traffic, CPU utilization and interrupts.

* Internal Hardware RAID Controller

An internal hardware controller exists in the form of an integrated RAID onboard capability or a high-speed host bus slot. The hardware controller handles the RAID operations and I/O commands, draws less processing power and delivers more robust fault-tolerant features than a software RAID option.

* External Hardware RAID Controller

An external controller is usually fitted in a separate case, housing the disks altogether in a multi-bay holder. External hardware controllers are powerful machines as it has an inbuilt microprocessor that executes full RAID operations and algorithm, supports data caching and therefore offers complete operating system independence and salability. Larger RAID systems are commonly connected to the computer using high-speed interfaces such as iSCSI, EIDE or Fibre Channel.


Stripping is a feature of a RAID configuration that offers huge performance gain. Data in a striped array is written or read across all the array drives simultaneously. When the computer writes data into the disk, the data is divided across several pieces and inserted into each individual disk at the same time. Similarly, when the computer request to read a file, the multiple pieces of data from each disk drive are extracted together to be processed by the CPU, which effectively increases read/write time. Striping involves partitioning each drive's storage space into units which are known as the stripe block size.

There're two important variables in a striped array, namely the stripe width and stripe size. Both factors greatly determine the performance of a striped array.

* Stripe Width:

The stripe width refers to the number of drives in the array.

* Stripe Size:

The stripe size represents the size of a single chunk of unit data to be written into each disk. The stripe size is configurable and can range from 512 bytes to several megabytes. The default IDE configuration is 64K. It is commonly a multiple of 8k.

To demonstrate this, assume we need to write a 5MB file into a disk array. If we have an array of 5 drives and writing the data at 100K per unit, we'll need 10 write cycles to complete writing the entire file. Note that each cycle only writes 500K of the file. Now if we have an array of 10 drives, we can effectively reduce the write time into half since each write cycle writes 1MB of the file. This will also mean that only 5 write cycles are needed to complete writing the file. So generally, we can see that the more drives that are implemented, the faster its performance. It is also apparent that for larger data size, increasing the strip size will help.

However, there're certain factors that must be considered when selecting the stripe width and stripe size.

Firstly, if the stripe size is too small, writing a big file would cause the file to be broken down into many segments across the drives hence utilizing more disk resources. A stripe size too big may exceed the size of the data to be stored and result in space wastage. That is to say if you configure 100K as your stripe size, you'll waste 30K of space if you are to write a 70K sized data.

Generally, the more drives that are implemented, the better its the performance. However if any one disk breaks down, all data will be lost. This reliability is often measured by mean time between failure (MTBF), which is a inverse proportion to the stripe width. That is to imply that a set of 3 disks is 1/3 as reliable as a single disk. Hence, increasing the number of disk drives in the array for data stripping will also increase the risk of a disk failure.

The drawback of using striping is that similar hard disks must be used together in the array to prevent latency. As the data parts are read from the various drives to be pieced together to form the original data, the slowest drive will determine when the concatenation completes.


Mirroring is a simple concept of simultaneously duplicating data or having more than 2 or more copies of data written on separate disks so as to provide redundancy. If one drive would to fail, the system can still operate because it has another copy of the data. The drawback is we need to incur more disk space as there is a 100% "disk wastage". In addition, mirroring requires two identical sized disk to function for optimised performance.


Parity is a fault tolerance feature that deals with error detection. Parity information is generated or 'hashed' using the (XOR) logical operation and stored separately. If the data is corrupted, by analysing the parity bit, the corrupted data could hence be restored. In RAID 3 & RAID 4, parity information is stored on a single dedicated hard disk. This might cause a bottleneck as parity data has to be read, computed and written into this disk each time a read/write operation takes place. To curb this problem, distributed parity stores the parity bit across the entire array (such as RAID 5).

Common types of supported RAID configurations

* RAID 0

RAID 0 uses data striping. Data is broken into blocks are each chunk is written into a separate disk drive. Multiple hard drives are combined to form one large logical volume. RAID 0 has increased throughput but does not provide any data redundancy.The failure of any disk in the array will result in data loss and thus not recommended for critical data operation.

* RAID 1

RAID 1 supports mirroring. The secondary disk is usually equally sized to the primary drive. Mirroring provides data redundancy and quick access to your data if one drive fails. Some controller can sense failure in primary disk and automatically switch to backup disk. It is useful for applications that operate with critical data.

* RAID 3

RAID 3 supports byte-level striping of data, parity checking and offers fault tolerance. Parity is stored on one drive, which might cause a bottleneck as an additional write to the parity disk must be done each time new data is created or modified. Therefore, this implementation generally requires a hardware controller as a software controller could degrade system performance. RAID 3 offers high speed, write data transfer rate and requires at least 3 hard disks to function.

* RAID 4

Similar to RAID3 except RAID Level 4 uses data striping at block level. Parity is stored on one drive. The parity information facilitates recovery from any failed drive. RAID 4 has high read data rate but slower write data rate as parity data has to be updated when new data is created or modified. A hardware controller is also recommended for this implementation.

* RAID 5

RAID 5 supports data stripping with distributed parity. Parity data is stored and distributed among the drives, normally in an interleave fashion. RAID 5 offers high read data rate and medium write data transfer rate. Fault tolerance is maintained by storing the parity bit in separate drives so that when one drive fails, all data can be rebuilt from the parity bit from the other disks. RAID 5 supports up to a minimum of 3 drives.

* RAID 0 + 1

RAID 0 + 1 is a mirrored array of two segments implemented with RAID 0 arrays. Provides high write transfer rate, supports fault tolerance and data redundancy. RAID 0 + 1 supports a minimum of 4 drives.


A non-RAID configuration, known as JBOD (Just a Bunch Of Disks) is a popular method for combining multiple disk drives into a single logical drive. JBOD features several hard disk concatenated together to create one logical drive. For example, we can combine a 5GB, 15GB, 20GB and 5.5GB drive into a 45.5GB logical drive. JBOD does not provide any data redundancy.

RAID Limitations

It is important to understand both the benefits of RAID and its limitations. Most RAID users tend to be complacent with maintenance and backups due to the common misconception that their data is foolproof and invulnerable.

RAID does not protect data against a virus attack, human error, logical corruption, data deletion or a fire breakout. There are cases of more than 1 disk failure. A typical situation is the users fail to respond in time when the first disk fails, follow by a second disk failure and hence loss of data. It is also too optimistic to assume that the RAID Controller will always function normally. Backup still remain one of the most critical practices in data operations.

Further Notes

For more technical information guide to RAID disk configuration, please read What is RAID by Michael Neuffer and Guide to RAID by David Risley.