If you are new to RAID and think that RAID might be an appropriate technology for your directory services environment, the following sections describe RAID technology in further detail.
RAID is an acronym derived from "redundant array of inexpensive disks," although today it is sometimes referred to as "redundant array of independent disks" to eliminate the cost element. As either version of the name suggests, RAID's primary purpose is to provide resiliency. Typically, if one disk in the array fails, the data on that disk will not be lost, but still be available on one or more of the other disks in the array. In order to implement this resiliency, RAID has to provide an abstraction that allows multiple disk drives to be configured into a larger virtual disk, usually referred to as a volume . This is achieved by concatenating, mirroring, or striping physical disks. Concatenation is where the blocks of one disk logically follow those of another disk. For example, disk 1 has blocks 0-99, disk 2 has blocks 100-199, and so forth. Mirroring is where the blocks of one disk are copied to another and are kept in continuous synchronization. Striping takes the virtual disk layout and, using algorithms, places blocks of data on two or more physical disks. Before considering these methods further it is worth discussing how RAID can be implemented.
Software RAID versus Hardware RAID
RAID is implemented using either software or a hardware RAID manager device. There are advantages and disadvantages for each method:
The following sections discuss RAID configurations, known as levels. The most common RAID levels, 0, 1, 1+0 and 5 are covered in detail, with brief descriptions of the more esoteric levels (RAID 2, 3, and 4).
RAID 0, Striped Volume
Striping (FIGURE 8-6) spreads data across multiple physical disks. The logical disk, or volume is divided into chunks or stripes and then distributed in a round- robin fashion onto physical disks. A stripe is always one or more disk blocks in size, with all stripes of equal size.
Figure 8-6. RAID 0 Disk Striping
The purpose of striping is to gain performance. For example, random writes can be dealt with very quickly because it is likely that the data being written is destined for more than one of the disks in the striped volume; hence, the disks will be able to work in parallel. The same applies to random reads. For large sequential reads and writes, the case might not be quite so clear. However, it has been seen that sequential I/O performance can be improved. For example, when Oracle writes redo logs to disk, it generates many I/O requests which can swamp a single disk controller. If each disk in the striped volume has its own dedicated controller, swamping is far less likely to occur and performance is improved.
The name RAID 0 is a contradiction inasmuch as, on its own, there is no redundancy. If any disk fails in a RAID 0 stripe, the entire logical volume is lost. However, it is worth noting that RAID 0 is the most economical of all RAID levels because all of the disks are used to store data.
RAID 1, Mirrored Volume
The purpose of mirroring (FIGURE 8-7) is to provide redundancy. If one of the disks in the mirror fails, data is still available and processing can continue.
Figure 8-7. RAID 1 Disk Mirroring
Disk writes are made to the logical disk volumes are written to both physical disks). Reads made from the logical disk come from one or the other physical disk. Reads are often round-robined between physical disks for performance.
RAID 1+0, which is also sometimes referred to as RAID 10, provides the highest levels of performance and resiliency. As a consequence, it is the most expensive level of RAID to implement. FIGURE 8-8 illustrates the RAID 1+0 layout. The data is available with up to three disk failures, as long as each of those disks is from different mirrors.
Figure 8-8. RAID 1+0 Layout
RAID 0+1 is a slightly less resilient version of RAID 1+0. A stripe is created and mirrored. If one or more disks fails on the same side of the mirror, then the data is still available. However, if a disk fails on the other side of the mirror, then the logical volume is lost. This is subtly different than RAID 1+0 because disks on either side can fail simultaneously and data is still available.
RAID 5 is not as resilient as mirroring but still provides redundancy inasmuch as data is still available after a single disk failure. This is accomplished by using a parity stripe and by logically XORing the bytes of the corresponding stripes on the other disks. For example, the parity value for each byte on the '0' stripes in FIGURE 8-9 equals A0 XOR B0 XOR C0 XOR D0 and the parity for the '3' stripes equals A3 XOR C3 XOR D3 XOR E3. Should disk 3 fail, the data for stripes C0, C1, C3 and C4 are recalculated using the data and parity in the corresponding stripes in the remaining disks. Because this calculation is performed on the fly, performance is degraded from that normally achieved with RAID 5.
Figure 8-9. RAID 5
In normal operation, RAID 5 is less performant than RAID 0, 1+0, and 0+1. This is because a RAID 5 volume must perform four physical I/O operations for every logical write. The old data and parity must be read, two XOR operations must be performed, and the new data and parity must be written. Read operations do not suffer the same and are slightly less performant than a standard stripe using the same number of disks (the RAID 5 volume effectively has one less disk in its stripe because it is given over to parity).
Given the performance issues of RAID 5, it is generally not a good idea to implement it with software unless the data is read only (or unless there are very few writes to the volume). Disk arrays, such as the Sun StorEdge T3b array which have write caches and fast XOR logic engines mitigate these performance issues, making RAID 5 a cheaper, viable alternative to mirroring.
RAID Levels 2, 3, and 4
RAID levels 2 and 3 are good for large sequential transfers of data (for example, video streaming). Both levels only process one I/O cycle at time, making them inappropriate for applications demanding random access. RAID 2 is implemented using Hamming error correction coding (ECC). This means that three physical disk drives are required to store the ECC data, making it more expensive than RAID 5, but less expensive than RAID 1+0 (so long as more than three disks are in the stripe). RAID 3 uses a bitwise parity method to achieve redundancy. Parity is not distributed as with RAID 5 (FIGURE 8-9), but written to a single dedicated disk.
Unlike RAID levels 2 and 3, RAID 4 uses an independent access technique where multiple disk drives can be accessed simultaneously. It uses parity in a manner similar to RAID 5, except that parity is written to a single disk. As such, the parity disk often becomes a bottleneck because it is accessed for every write and effectively serializes multiple writes.