RAIDBank4 Owner’s Manual
62
Read Ahead
Motivated by the principle of “spatial locality”, many RAID controllers read
blocks of data from secondary storage ahead of time, i.e., before an application actually
requests those blocks. The number of data blocks that are read ahead of time is typically
governed by some heuristic that observes the pattern of requests. The read-ahead technique
is particularly efficient when the spatial distribution of an application’s requests follows a
sequential pattern.
Read-Modify-Write
This is a term used to characterize an efficient methodology using
which parity is calculated and written into a RAID array. However, before we describe this
methodology, let us briefly touch upon the most obvious and brute-force way of determining
and writing parity (in response to a write operation) into a RAID array. Assume that data is
being written into a strip on the RAID array that supports redundancy by the use of parity. Let
us denote this as the target strip. Also assume that there are N strips per stripe including the
parity strip and the target strip. Then to recalculate parity for that stripe, the following steps
may be taken. First the contents of the N – 2 non-parity strips (belonging to the same stripe as
the target strip) have to be read. This is followed by N – 2 XOR operations on the contents of
the N – 2 strips that were just read plus the new contents of the target strip. This is followed
by 1 operation to write the new data into the target strip and 1 operation to update the value
of the parity strip. In all the total number of read, XOR and write operations are N – 2, N – 2,
and 2 respectively adding up to a grand total of 2N – 2. Let us now discuss the “read-modify-
write” method for calculating and writing parity. It is based on simple algebra, and is more
efficient than the method described earlier when the value of N is large. Suppose d1, d2,…
dt,… dN-1 are the data contents of the N – 1 non-parity strips with dt being the contents of
the target strip. Let, p = d1 ^ d2 ^ … dt ^ …^ dN-1 Now suppose that the new data to be
written into the target strip is d’t.We wish to determine the value of p’ = d1 ^ d2 ^ … d’t ^
…^ dN-1. Now, p ^ p’ = (d1 ^ d2 ^ … dt ^ …^ dN-1) ^ (d1 ^ d2 ^ … d’t ^ …^ dN-1) p ^ p’
= dt ^ d’t, since ^ operation is commutative and associative p’ = dt ^ d’t ^ p In other words,
the new parity can be evaluated by calculating the XOR of the old data in the target strip, the
new data for the target strip and the old parity. Clearly this requires only 2 reads – one for the
old data and the old parity – followed by 2 XOR operations with 2 writes – one for writing
the new data into the target strip and the new parity, giving us a grand total of 6 operations.
Why is this better? When the value of N is large, i.e., the size of the parity group is large; the
brute-force method utilizes far more operations!
Read Through
Using this methodology, a read operation not only reads data from secondary
storage into system memory but also places the data into the cache such that future need for
the same data can be addressed expeditiously by directing a read operation for that data into
the cache only.
Rebuild
When a RAID array enters into a degraded mode, it is advisable to rebuild the array
and return it to its original configuration (in terms of the number and state of working disks)
to ensure against operation in degraded mode
SATA
Acronym for “
Serial ATA
”. A hard disk drive interface standard developed to enhance
connectivity and speed over the IDE, or Parallel ATA disk interface. Current generation SATAII
supports speeds up to 300MB/S.
D-Glossary