Essentially any system would need some platform to enable the hardware, some programming tool to execute your programs, database management systems to hold content and so on. Primary all these need to be present in a direct access storage device (DASD) since memory is volatile. The best DASD that we all are aware of is hard disks. Now any hardware device is vulnerable to failure at some point of time. Applications requiring fault tolerance in terms of hardware will go in for clustering mode where the hardware’s are replicated and one picks up control when another goes off. The complexity of clustering is dependant upon the criticality of the application. Since all the data including your program resides on a DASD typically hard disk, redundancy of it is very important. Not only it addresses failover but since DASD has a slower access rate compared to the RAM, higher access rate is important to reduce those delays in the production environment. How will redundant hard disks help? That is where RAID comes to help.
RAID stands for Redundant Array of Independent Disks. A RAID controller is a hardware that can divide packets of information in chunks and put them across multiple hard disks. While reading back it would pick up the pieces, assemble, decode and send it to the processor as one piece making it look like the information is coming from a single hard disk. There are various levels of RAID that can help in providing fault tolerance, higher throughput and so on. The controller design gets complex as higher throughput and fault tolerance are required. Here is a RAID tutorial that simply puts various levels of RAID, its advantages and disadvantages.