On-line restoration of redundancy information in a redundant array system
First Claim
1. A storage device readable by a programmable control device when coupled to the storage device, the storage device containing a control program tangibly stored thereon, such that the control device is operated by the control program when the storage device is read by the control device, the control device being operated to control a coupled redundant array of data storage units, the data storage units having at least one stripe containing a plurality of data blocks and at least one associated redundancy block, the control program being configured to operate the control device to perform restoration of a valid data block and at least one associated redundancy block to at least each affected data storage unit stripe after a potential corruption in either type of block during a data modification operation, such restoration being performed by the combination of the control program and the control device to perform the function of:
- (a) accessing all of the data blocks, including the potentially corrupted data block, in each stripe containing the potentially corrupted blocks;
(b) computing at least one redundancy block from the accessed blocks;
(c) saving the at least one computed redundancy block;
(d) resubmitting the valid data block from the data modification operation to the redundant array of storage units for storage;
(e) updating the at least one saved computed redundancy block;
(f) storing the updated at least one redundancy block and the valid data block in the stripe.
0 Assignments
0 Petitions
Accused Products
Abstract
A method for on-line restoration of redundancy information in a redundant array storage system. The invention provides alternative methods of restoring valid data to a storage unit after a Write failure caused by a temporary storage unit fault. In the first preferred method, a valid redundancy block is generated for the corresponding data blocks on all storage units. Resubmitting the interrupted Write operation causes the old (and potentially corrupted) data block to be "subtracted" out of the re-computed redundancy block. The uncorrupted new data block is written over the old data block, and is "added" into the re-computed redundancy block to create a new, corrected redundancy block. The new, corrected redundancy block is written to the appropriate storage unit. In the second preferred method, a new redundancy block is generated from all valid data blocks and the new data block. The new redundancy block and the new data block are then written to the appropriate storage units. In both cases, the entire method is done on-line, with insignificant interruption of normal operation of the redundant array system, and without requiring added processing during normal operation.
-
Citations
62 Claims
-
1. A storage device readable by a programmable control device when coupled to the storage device, the storage device containing a control program tangibly stored thereon, such that the control device is operated by the control program when the storage device is read by the control device, the control device being operated to control a coupled redundant array of data storage units, the data storage units having at least one stripe containing a plurality of data blocks and at least one associated redundancy block, the control program being configured to operate the control device to perform restoration of a valid data block and at least one associated redundancy block to at least each affected data storage unit stripe after a potential corruption in either type of block during a data modification operation, such restoration being performed by the combination of the control program and the control device to perform the function of:
-
(a) accessing all of the data blocks, including the potentially corrupted data block, in each stripe containing the potentially corrupted blocks; (b) computing at least one redundancy block from the accessed blocks; (c) saving the at least one computed redundancy block; (d) resubmitting the valid data block from the data modification operation to the redundant array of storage units for storage; (e) updating the at least one saved computed redundancy block; (f) storing the updated at least one redundancy block and the valid data block in the stripe. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A storage device readable by a programmable control device when coupled to the storage device, the storage device containing a control program tangibly stored thereon, such that the control device is operated by the control program when the storage device is read by the control device, the control device being operated to control a coupled redundant array of data storage units, the data storage units having at least one stripe containing a plurality of data blocks and at least one associated redundancy block, the control program being configured to operate the control device to perform restoration of a valid data block and at least one associated redundancy block to at least each affected data storage unit stripe after a potential corruption in either type of block during a data modification operation, such restoration being performed by the combination of the control program and the control device to perform the function of:
-
(a) resubmitting the valid data block from the data modification operation to the redundant array of storage units for storage; (b) accessing all of the uncorrupted data blocks in the stripe containing the potentially corrupted blocks; (c) computing at least one redundancy block from the accessed blocks and the resubmitted valid data block; (d) storing the computed at least one redundancy block and the valid data block in the stripe; (e) performing restoration as a task concurrently with other input/output tasks. - View Dependent Claims (9, 10, 11)
-
-
12. A storage device readable by a programmable control device when coupled to the storage device, the storage device containing a control program tangibly stored thereon, such that the control device is operated by the control program when the storage device is read by the control device, the control device being operated to control a coupled redundant array of data storage units, the data storage units having at least one stripe containing a plurality of data blocks and at least one associated redundancy block, the control program being configured to operate the control device to perform restoration of at least one valid redundancy block to at least each affected data storage unit stripe after a potential corruption in a data block and/or in such redundancy blocks in such stripes during a data modification operation, such restoration being performed by the combination of the control program and the control device to perform the function of:
-
(a) accessing all of the data blocks, including the potentially corrupted data block, in each stripe containing the potentially corrupted blocks; (b) computing at least one redundancy block from the accessed blocks; (c) saving the at least one computed redundancy block in the stripe. - View Dependent Claims (13, 14, 15, 16, 17)
-
-
18. A control program tangibly stored on a storage device readable by a programmable control device, such that the control device is operated by the control program when the storage device is read by the control device, the control device being operated to control a coupled redundant array of data storage units, the data storage units having at least one stripe containing a plurality of data blocks and at least one associated redundancy block, the control program being configured to operate the control device to perform restoration of a valid data block and at least one associated redundancy block to at least each affected data storage unit stripe after a potential corruption in either type of block during a data modification operation, such restoration being performed by the combination of the control program and the control device to perform the function of:
-
(a) accessing all of the data blocks, including the potentially corrupted data block, in each stripe containing the potentially corrupted blocks; (b) computing at least one redundancy block from the accessed blocks; (c) saving the at least one computed redundancy block; (d) resubmitting the valid data block from the data modification operation to the redundant array of storage units for storage; (e) updating the at least one saved computed redundancy block; (f) storing the updated at least one redundancy block and the valid data block in the stripe. - View Dependent Claims (19, 20, 21, 22, 23, 24)
-
-
25. A control program tangibly stored on a storage device readable by a programmable control device, such that the control device is operated by the control program when the storage device is read by the control device, the control device being operated to control a coupled redundant array of data storage units, the data storage units having at least one stripe containing a plurality of data blocks and at least one associated redundancy block, the control program being configured to operate the control device to perform restoration of a valid data block and at least one associated redundancy block to at least each affected data storage unit stripe after a potential corruption in either type of block during a data modification operation, such restoration being performed by the combination of the control program and the control device to perform the function of:
-
(a) resubmitting the valid data block from the data modification operation to the redundant array of storage units for storage; (b) accessing all of the uncorrupted data blocks in the stripe containing the potentially corrupted blocks; (c) computing at least one redundancy block from the accessed blocks and the resubmitted valid data block; (d) storing the computed at least one redundancy block and the valid data block in the stripe; (e) performing restoration as a task concurrently with other input/output tasks. - View Dependent Claims (26, 27, 28)
-
-
29. A control program tangibly stored on a storage device readable by a programmable control device, such that the control device is operated by the control program when the storage device is read by the control device, the control device being operated to control a coupled redundant array of data storage units, the data storage units having at least one stripe containing a plurality of data blocks and at least one associated redundancy block, the control program being configured to operate the control device to perform restoration of at least one valid redundancy block to at least each affected data storage unit stripe after a potential corruption in a data block and/or in such redundancy blocks in such stripes during a data modification operation, such restoration being performed by the combination of the control program and the control device to perform the function of:
-
(a) accessing all of the data blocks, including the potentially corrupted data block, in each stripe containing the potentially corrupted blocks; (b) computing at least one redundancy block from the accessed blocks; (c) saving the at least one computed redundancy block in the stripe. - View Dependent Claims (30, 31, 32, 33, 34)
-
-
35. A method for on-line restoration of potentially invalid data stored in one or more physical blocks of storage comprising a portion of a plurality of physical blocks of storage and wherein at least one of said physical blocks of storage in said plurality of physical blocks of storage contains redundancy information associated with data stored in said plurality of physical blocks of storage in a computer system including a computer storage subsystem comprising an array of data storage units and wherein said plurality of physical blocks of storage containing data and redundancy information are arranged at a first set of predetermined positions in at least one first storage stripe across a subset of said data storage units in said array, said method comprising the steps of:
-
accessing data corresponding to data stored in said plurality of physical blocks of storage in said at least one first storage stripe; computing an interim value for said associated redundancy information for said accessed data; resubmitting valid data corresponding to said potentially invalid data; recomputing an updated value for said associated redundancy information from said potentially invalid data, said interim value for said associated redundancy information, and said valid data; and storing data corresponding to said valid data and data corresponding to said updated value for said associated redundancy information to storage locations in said computer system corresponding to a second set of predetermined positions in at least one second storage stripe across a subset of said data storage units in said array. - View Dependent Claims (36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49)
-
-
50. A method for on-line restoration of potentially invalid data stored in one or more physical blocks of storage comprising a portion of a plurality of physical blocks of storage and wherein at least one physical block of storage in said plurality of physical blocks of storage contains redundancy information associated with the data stored in said plurality of physical blocks of storage in a computer mass storage subsystem comprising an array of data storage units and wherein said plurality of physical blocks of storage containing data and redundancy information are arranged at a first set of predetermined positions in at least one first storage stripe across a subset of said data storage units in said array, said method comprising the steps of:
-
accessing data corresponding to known valid data stored in said plurality of physical blocks of storage in said at least one first storage stripe; resubmitting valid data corresponding to said potentially invalid data; computing an updated value for said associated redundancy information from said accessed data and said valid data; and storing data corresponding to said valid data and data corresponding to said updated value for said associated redundancy information to storage locations in said computer mass storage subsystem corresponding to a second set of predetermined positions in at least one second storage stripe across a subset of said data storage units in said array. - View Dependent Claims (51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62)
-
Specification