Interface and RAID Internals

This lesson briefly discusses the interface presented by RAID and its internal architecture.

To a file system above, a RAID looks like a big, (hopefully) fast, and (hopefully) reliable disk. Just as with a single disk, it presents itself as a linear array of blocks, each of which can be read or written by the file system (or another client).

When a file system issues a logical I/O request to the RAID, the RAID internally must calculate which disk (or disks) to access in order to complete the request, and then issue one or more physical I/Os to do so. The exact nature of these physical I/Os depends on the RAID level, as we will discuss in detail below. However, as a simple example, consider a RAID that keeps two copies of each block, each one on a separate disk. In this case, when writing to such a mirrored RAID system, the RAID will have to perform two physical I/Os for every one logical I/O it is issued.

A RAID system is often built as a separate hardware box, with a standard connection (e.g., SCSI, or SATA) to a host. Internally, however, RAIDs are fairly complex, consisting of:

  • A microcontroller that runs firmware to direct the operation of the RAID.
  • Volatile memory such as DRAM to buffer data blocks as they are read and written.
  • In some cases, non-volatile memory to buffer writes safely and perhaps even specialized logic to perform parity calculations (useful in some RAID levels, as we will also see below).

At a high level, a RAID is very much a specialized computer system: it has a processor, memory, and disks. However, instead of running applications, it runs specialized software designed to operate the RAID.

Get hands-on with 1200+ tech skills courses.