A stripe set with parity adds parity information to a stripe set configuration. A stripe set with parity dedicates the equivalent of one disk's space in the stripe set with parity for storing the parity strips, but distributes the parity strips across all the disks in the group. The data and parity information are arranged on the volume so that they are always on different disks.
Table 4.2 shows the order in which data are written to a stripe set with parity that consists of five stripes on five disks.
Table 4.2 Stripe set with parity
Disk 1 | Disk 2 | Disk 3 | Disk 4 | Disk 5 | |
Stripe 1 | parity 1 | 1 | 2 | 3 | 4 |
Stripe 2 | 5 | parity 2 | 6 | 7 | 8 |
Stripe 3 | 9 | 10 | parity 3 | 11 | 12 |
Stripe 4 | 13 | 14 | 15 | parity 4 | 16 |
Stripe 5 | 17 | 18 | 19 | 20 | parity 5 |
In Figure 4.3, the first block on disk 1 is the parity strip for the four data strips in stripe 1. In stripe 2, the parity strip is on disk 2, and so on. Figure 4.3 is another representation of the information shown in Table 4.2.
Figure 4.3. Stripe set with parity
The parity strip is the exclusive OR (XOR) of all the data values for the data strips in the stripe. If no disks in the stripe set with parity have failed, the new parity for a write can be calculated without having to read the corresponding strips from the other data disks. Thus, only two disks are involved in a write operation: the target data disk and the disk that contains the parity strip. The next figure shows the steps that are involved in writing data to a stripe set with parity.
When implementing a stripe set with parity, there must be at least three disks and no more than 32 disks in the set. The physical disks do not need to be identical. However, there must be equal size blocks of unpartitioned space available on each physical disk in the set. The disks can be on the same or different controllers. As with stripe sets, you cannot add disks to a stripe set with parity if you need to increase the size of the volume later.
If one of the disks in a stripe set with parity fails, none of the data are lost. When a read operation requires data from the failed disk, the system reads all of the remaining good data strips in the stripe and the parity strip. Each data strip is subtracted (with XOR) from the parity strip; the order isn't important. The result is the missing data strip.
When the system needs to write a data strip to a disk that has failed, it reads the other data strips and the parity strip and backs them out of the parity strip, leaving the missing data strip. The modifications needed to the parity strip can now be calculated and made. Because the data strip is bad, it is not written; only the parity strip is written.
There is no effect on a read operation when the disk that failed contains a parity strip. (The parity strip isn't needed for a read, unless there is a failure in a data strip.) When the failed disk contains a parity strip, the system does not compute or write the parity strip when there is a change in a data strip.
A stripe set with parity works well in the following situations
A stripe set with parity is not well suited for:
Disk read operations can occur simultaneously. All disks in the array can be in use at the same time.
Cost is lower than for a mirror set. The utilization increases as the number of disks in the array increases.
Neither the system partition or boot partition can be on a stripe set with parity.
Write operations are substantially slower than for a single disk because the software has to read the old data strip, the old parity strip, and compute the new parity strip before writing it.
If a disk that is part of a stripe set with parity fails, read operations for data strips on that disk are substantially slower than for a single disk. The software has to read all of the other disks in the set to calculate the data.
A stripe set with parity requires more system memory than a mirror set.
Note
The minimum RAM on a RISC-based computer is 16 MB. On an x86-based computer, 12 MB suffices, but 16 MB is recommended. You might want to add memory when you configure disks as stripe set with parity.