RAID implementations can either be hardware based or software-based (operating system based).

click to enlarge
Hardware based RAID arrays use a RAID controller, which manage hard disks in an array and present to the operating system as logical units. The disk controllers use different disk layouts and it is not possible to use RAID controllers from different manufacturers on the same configuration. But these controllers do not require operating system resources and allow the BIOS to boot from them.
Software based RAID arrays put the disk controlling on the operating system but easier to set up compared to the hardware RAID. However there are some considerations about the software RAID:
- The processor load may be negligible in RAID 0 and RAID 1 configurations, but can be significant with arrays that use parity.
- All the buses between the CPU and the disk controller must carry RAID information, which may cause congestion.
- If the boot disk fails, it can be difficult, maybe impossible to recover the array.
- In software RAID systems, the disk format is locked to the operating system. It is difficult and in many cases impossible to use this system on shared partitions (partitions which are used by more than one operating system). However, disks in an array can be carried to another system running the same operating system, which is not achievable by hardware RAID.
- In a software RAID, partitions can be used as disk arrays.
Hardware RAID systems are proprietary and expensive and software RAID systems cannot protect the boot process. So, an intermediate solution was developed, which are called firmware-based RAID systems (or driver-based RAID systems). The RAID controllers in this type do not include a hardware RAID controller chip but a special firmware and drivers to do the work of the missing chip. During the boot time, the process is handled by the firmware and the drivers. Intel’s Matrix RAID is an example for this type of RAID controllers. In fact, these systems are called “fake RAIDs.”
With the RAID implementation, if supported either by hardware controller or the operating system, a hot spare (or hot spares) can be introduced. A hot spare is a disk, which sits inactive during the use of a RAID system; it is idle until a failure occurs. During the failure the system immediately puts the disk into use and rebuilds the data. This reduces the time to recovery but does not eliminate it completely. If during the recovery process, another failure occurs and the system is not tolerant, then a data loss may occur.