RAID stands for Redundant Array of Independent Disks originally referred as Redundant Arrays of Inexpensive disks, is a system of two or more disk drive components that are connected together into a logical unit that will be operated as a single unit. With RAID arrays, data will be distributed across these disks according to the level of RAID implemented. RAID technology will store at least two copies of data on different drives, this helps to prevent data loss in case of disk failure. The main aim of these RAID arrays is to implement fault tolerance feature and improve the overall storage performance.

Different RAID levels:

There are many different RAID levels available. Depending on the level of performance and redundancy required, an appropriate RAID level can be selected. RAID arrays are named with a digit, such as RAID 1 and RAID 2, RAID 3, and many others. Each of these with their functions are as listed below:

RAID 0 (Striped disk array): It provides data striping feature; distributes the data blocks of each file across a multiple disk drives. This improves the performance but it does not provide redundancy and fault tolerance.

RAID 1 (Mirroring and Duplexing): It requires minimum of 2 disk drives to be implemented. The exact copy of the data stored on one drive will be stored on the second drive. Thus, if one drive fails, data on the other drive can be used, and hence no data loss.

RAID 2 (Bit-level stripper with Hamming parity): This implements ‘error-correcting coding’ by using Hamming code ECC. RAID level 2 stripes your data at bit-level and then writes check bytes on the other disks in an array. these check bytes will be calculated using Hamming Code. It offers high performance but implementing it practically would be expensive and hence is rarely used.  

RAID 3 (Byte-level stripper with dedicated parity): The data byte will be stripped on an array of disks. The parity data will be written on a separate disk, which is referred as parity disk. To implement this level successfully, all the disks should have synchronized rotation.

RAID 4 (Block-level stripping with dedicated parity): It provides stripping of data in the form of blocks and stores the parity on a dedicated parity disk. Here, each drive operates independently, allowing the Input / Output operations to be performed parallel.

RAID 5 (Block-level stripping with distributed parity): The parity along with the user data will be distributed across all the disks. It requires at least 3 drives (but usually 5 drives) to be implemented. Here, all read and write operations will be overlapped. Even when a drive fails, the array will not be destroyed and with the help of this parity data, the user data can be recovered. It offers general performance and also comes with reasonable cost.

NOTE: In order to recover data from RAID 5 array that has got deleted or lost, please visit this page for info.

RAID 6 (Block-level stripping with double distributed parity): It provides high fault-tolerance up to two failed disks. It has two independent parity blocks for one stripe of data, hence can tolerate even if two disks fails.

RAID 7: RAID 7 is a registered trademark of Storage Computer Corporation. Essentially, it is the RAID 3 incorporated with an embedded OS in the controller and includes caching via a high-speed bus.

RAID 0+1 (Mirror of stripes): It combines the features of both RAID 0 and RAID 1. It is designed with two RAID 0 stripes and then a RAID 1 mirror will be created on them. Mainly used for both duplicating and sharing data.

RAID 10 (Stripe of mirrors): On contrary to RAID 0+1, in RAID 10 multiple RAID 1 mirrors will be created first and then RAID 0 stripes will be created over these. Provides good performance and high reliability, is applicable mainly for database applications.

RAID 50: This level will be implemented as RAID 5 array and then will be stripped to RAID 0. It enables faster data access without reducing the data protection.

RAID Implementations:

Software RAID:
RAID implemented on a server using software that utilizes internal drives and the external JBOD (Just a Bunch os Disks). It can be implemented to provide a single virtual device (Linux’s md) that abstracts multiple devices. The software, usually as a component of a File system and as a logical Volume manager which manages all the data and parity mirroring calculations etc.

RAID Controller:
These are card-like devices which can be easily added to a server and can offload the RAID overhead from the CPUs. When compared to Software RAIDs, RAID Controllers are better for single servers. They use either internal drives or JBOD.

Storage Arrays:
These storage arrays contain two high performance redundant RAID controllers and a tray of disks. They usually support multiple RAID levels and various types of disks and different speeds. They also have snapshots, volume copy and ability to copy from one array to another.