US2008022150A1PendingUtilityA1
Method and system for improved buffer utilization for disk array parity updates
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-modified1 . 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.