Method for Improving the Update Write Performance of Parity Disk Arrays
Original Publication Date: 1995-Feb-01
Included in the Prior Art Database: 2005-Mar-30
Islam, RR: AUTHOR [+2]
The performance for doing a write in RAID-4 or -5 is very poor. Disclosed is a method for the host system to instruct the disk array controller to pre-fetch the parity block so that when the write command comes it can be completed more quickly, hence providing a faster response time.
Method for Improving the Update Write Performance of
performance for doing a write in RAID-4 or -5 is very poor.
Disclosed is a method for the host system to instruct the disk array
controller to pre-fetch the parity block so that when the write
command comes it can be completed more quickly, hence providing a
faster response time.
Fig. 1 shows
a simple 3+P (i.e., 1 parity block for every 3
data blocks) RAID 5. The array controller contains a buffer to do
the necessary XOR functions required for parity generation.
Generally this buffer is sufficiently large to also function as a
cache. P-A is the parity block for data blocks A-1, A-2 and A3; P-B
is the parity block for data blocks B-1, B-2 and B-4; etc. To update
a record, say, C-3 to C-3', it is necessary to generate a new parity
P-C'. This can be accomplished by XORing together P-C, C-3, and
C-3'. Therefore, C-3 and P-C must first be read, then C-3' and P-C'
are written to the respective disks. A total of four disk I/O's are
required. Consider the timing diagram for this scenario of updating
C-3, as shown in Fig. 2. At time t0 the request to write C-3' comes
in. The array controller issues a request to Disk 3 to read C-3 and
a request to Disk 2 to read P-C. The read for C-3 starts at time t1
after previous I/O's for Disk 3 have already been serviced.
Similarly, the read for P-C starts at time t2 after previous I/O's
for Disk 2 have already been serviced. (Fig. 2 illustrates t1 as
occurring earlier than t2; in reality it is just as likely that t2
occurs earlier than t1.) The read for C-3 is completed at time t3,
while the read for P-C is completed at t4. (It is equally likely
that t4 occurs earlier than t3.) When both C-3 and P-C are in the
buffer, which occurs at time t5 (the larger of t3 and t4), they are
XORed with C-3' to generate the new parity P-C'. This XOR time is
very short and is completed at time t6. At time t6 the array
controller issues the request to Disk 3 to write C-3' and the request
to Disk 2 to write P-C'. The write for C-3' starts at time t7 while
the write for P-C' starts at t8. Finally, the write for C-3' is
completed at time t9, while the write for P-C' is completed at t10.
(Again, Fig. 2 illustrates t9 as occurring earlier than t10; in
reality it is just as likely that t10 occurs earlier than t9.) At
time t11 (the larger of t9 and t10), both writes are completed. The
response time for writing C3' is t11-t0, which...