Implementations
RAID can be implemented through either hardware or software. Usually it is performed in hardware with special disk controllers. In software it is a module interacting above the disk system driver and below the OS file system, usually part of the system kernel.
Hardware implementations are usually in the form of an adapter card connecting to a multiple disk chassis, but some are a controller box between the system disk controller and the disk drives. Others are full cabinets with their own power supplies and drive bays. The RAID controllers also have processors and memory caches to alleviate some CPU processing. Hardware controllers are also sensitive to different makes and models preventing usage of similar controllers in the case of hardware failure.
Software implementations are usually more flexible than hardware, but they also require more CPU time. Also unlike most hardware, which lump whole drives together in an array, software combines different partitions. While cheaper than hardware, software RAID tends to be more complicated in configuration.