US2008022150A1PendingUtilityA1

Method and system for improved buffer utilization for disk array parity updates

52
Assignee: IBMPriority: Nov 19, 2004Filed: Oct 4, 2007Published: Jan 24, 2008
Est. expiryNov 19, 2024(expired)· nominal 20-yr term from priority
G06F 11/1076G06F 2211/1057
52
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

During a parity update of a parity stripe in a disk array, constant values used in finite field arithmetic are algebraically combined in order to reduce the number of buffers and steps needed to update multiple parity values when a change in data occurs. In one implementation, for example, the contents of a buffer that stores the product of a delta value associated with the change in data and a first constant, which is used to update a first parity value, are multiplied by a value representative of the ratio of a second constant, which is used to update a second parity value, and the first constant.

Claims

exact text as granted — not AI-modified
1 . A method for updating first and second parity values associated with a parity stripe in a disk array in association with storing new data for a parity stripe to a data disk d x  from the disk array, wherein the first and second parity values are respectively stored on first and second parity disks d P , d Q  in the disk array, the method comprising: 
 storing in a first buffer the new data for the parity stripe;    storing in a second buffer a delta value A calculated by XOR'ing the new data stored in the first buffer with old data for the parity stripe retrieved from data disk d x ;    writing the new data for the parity stripe from the first buffer to data disk d x ;    after writing the new data to data disk d x , storing in the first buffer a first value K 1 Δ calculated by multiplying the delta value Δ stored in the second buffer by a first constant K 1 , where the first constant K 1  is derived from at least one parity stripe equation associated with the parity stripe;    after storing the first value K 1 Δ in the first buffer, storing in the second buffer a new first parity value calculated by XOR'ing the first value K 1 Δ stored in the first buffer with an old first parity value for the parity stripe retrieved from parity disk d P ;    writing the new first parity value stored in the second buffer to parity disk d P ;    calculating a third constant K 3  by dividing a second constant K 2 , derived from the at least one parity stripe equation associated with the parity stripe, by the first constant K 1 ;    after writing the new first parity value to parity disk d P , storing in the second buffer a second value K 2 Δ calculated by multiplying the first value K 1 Δ stored in the first buffer by the third constant K 3 ;    after storing the second value K 2 Δ in the second buffer, storing in the first buffer a new second parity value calculated by XOR'ing the second value K 2 Δ stored in the second buffer with an old second parity value for the parity stripe retrieved from parity disk d Q ; and    writing the new second parity value stored in the first buffer to parity disk d Q .    
     
     
         2 . An apparatus, comprising: 
 first and second buffers; and    a disk array controller configured to update first and second parity values associated with a parity stripe in a disk array in association with storing new data for a parity stripe to a data disk d x  from the disk array, wherein the first and second parity values are respectively stored on first and second parity disks d P , d Q  in the disk array, the disk array controller configured to: 
 store in the first buffer the new data for the parity stripe;  
 store in the second buffer a delta value A calculated by XOR'ing the new data stored in the first buffer with old data for the parity stripe retrieved from data disk d x ;  
 write the new data for the parity stripe from the first buffer to data disk d x ;  
 after writing the new data to data disk d x , store in the first buffer a first value K 1 Δ calculated by multiplying the delta value Δ stored in the second buffer by a first constant K 1 , where the first constant K 1  is derived from at least one parity stripe equation associated with the parity stripe;  
   after storing the first value K 1 Δ in the first buffer, store in the second buffer a new first parity value calculated by XOR'ing the first value K 1 Δ stored in the first buffer with an old first parity value for the parity stripe retrieved from parity disk d P ;    write the new first parity value stored in the second buffer to parity disk d P ;    calculate a third constant K 3  by dividing a second constant K 2 , derived from the at least one parity stripe equation associated with the parity stripe, by the first constant K 1 ;    after writing the new first parity value to parity disk d P , store in the second buffer a second value K 2 Δ calculated by multiplying the first value K 1 Δ stored in the first buffer by the third constant K 3 ;    after storing the second value K 2 A in the second buffer, store in the first buffer a new second parity value calculated by XOR'ing the second value K 2 Δ stored in the second buffer with an old second parity value for the parity stripe retrieved from parity disk d Q ; and    write the new second parity value stored in the first buffer to parity disk d Q .    
     
     
         3 . A program product, comprising: 
 a computer readable medium; and    program code stored on the computer readable medium and configured to update first and second parity values associated with a parity stripe in a disk array in association with storing new data for a parity stripe to a data disk d x  from the disk array, wherein the first and second parity values are respectively stored on first and second parity disks d P , d Q  in the disk array, the program code configured to: 
 store in a first buffer the new data for the parity stripe;  
 store in a second buffer a delta value A calculated by XOR'ing the new data stored in the first buffer with old data for the parity stripe retrieved from data disk d x ;  
 write the new data for the parity stripe from the first buffer to data disk d x ;  
 after writing the new data to data disk d x , store in the first buffer a first value K 1 Δ calculated by multiplying the delta value Δ stored in the second buffer by a first constant K 1 , where the first constant K 1  is derived from at least one parity stripe equation associated with the parity stripe;  
 after storing the first value K 1 A in the first buffer, store in the second buffer a new first parity value calculated by XOR'ing the first value K 1 Δ stored in the first buffer with an old first parity value for the parity stripe retrieved from parity disk d P ;  
 write the new first parity value stored in the second buffer to parity disk d P ;  
 calculate a third constant K 3  by dividing a second constant K 2 , derived from the at least one parity stripe equation associated with the parity stripe, by the first constant K 1 ;  
 after writing the new first parity value to parity disk d P , store in the second buffer a second value K 2 Δ calculated by multiplying the first value K 1 Δ stored in the first buffer by the third constant K 3 ;  
 after storing the second value K 2 Δ in the second buffer, store in the first buffer a new second parity value calculated by XOR'ing the second value K 2 Δ stored in the second buffer with an old second parity value for the parity stripe retrieved from parity disk d Q ; and  
 write the new second parity value stored in the first buffer to parity disk d Q .

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.