System and method for reconstructing data in a storage array system
First Claim
1. In an array of storage devices attached to at least one host computer system, having a plurality of parity stripes, each parity stripe comprising a set of date blocks and corresponding one or more parity blocks arranged on separate storage devices such that each data block can be reconstructed using the remaining data blocks of the set of data blocks and the parity block for the stripe, and wherein when an old data block is updated with an updated data block, a corresponding old parity block is updated with an updated parity block, a method for reconstructing an unavailable data block comprising the steps of:
- (a) a first initiator issuing a first initiator command to each storage device to read the remaining blocks of the parity stripe;
(b) coordinating on each storage device using a command queue prioritization scheme each of said first initiator commands with any update command received from a second initiator, so that the set of data blocks and the parity block are consistent; and
(c) the first initiator logically combining the remaining blocks of the parity stripe read from the storage devices to produce a reconstructed data block.
1 Assignment
0 Petitions
Accused Products
Abstract
A system and method are provided for coordinating command for updating and reconstructing data in an array of storage devices connected to a computer system when multiple initiators issue commands. Sets of data blocks and corresponding parity blocks are arranged on a plurality of storage devices, such that a data block can be reconstructed using a set of data blocks and at least one parity block. When a new data block is written to the disk drive, a corresponding old parity block is write updated with an updated parity block. When reconstructing an unavailable data block an initiator issues a read command to each storage device having a data block or a parity block used for reconstructing the unavailable data block. Each read command is enqueued on a command queue for each storage device in a priority order coordinating each read command with any write update command for the same block so that a new data block and an old parity block are not read as part of the same parity stripe and vice versa.
177 Citations
20 Claims
-
1. In an array of storage devices attached to at least one host computer system, having a plurality of parity stripes, each parity stripe comprising a set of date blocks and corresponding one or more parity blocks arranged on separate storage devices such that each data block can be reconstructed using the remaining data blocks of the set of data blocks and the parity block for the stripe, and wherein when an old data block is updated with an updated data block, a corresponding old parity block is updated with an updated parity block, a method for reconstructing an unavailable data block comprising the steps of:
-
(a) a first initiator issuing a first initiator command to each storage device to read the remaining blocks of the parity stripe; (b) coordinating on each storage device using a command queue prioritization scheme each of said first initiator commands with any update command received from a second initiator, so that the set of data blocks and the parity block are consistent; and (c) the first initiator logically combining the remaining blocks of the parity stripe read from the storage devices to produce a reconstructed data block. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A storage apparatus for a computer system comprising:
-
a plurality of storage devices, each storage device comprising a processor, memory, a logical combination generator, and a storage media, parity stripes comprising a set of data blocks and at least one corresponding parity block being arranged on the storage media of the storage devices such that an unavailable block can be reconstructed using the remaining blocks of the parity stripe, and wherein when an old data block is updated with an updated data block, a corresponding old parity block is updated with an updated parity block; an interface connection between each of the storage devices for sending and receiving commands for reading data blocks and reading parity blocks and writing updated data blocks and writing updated parity blocks; at least two independent initiators reconstructing and updating data blocks including a reconstruction initiator for coordinating the reconstruction of the unavailable data block using the remaining blocks of the parity stripe read from respective storage devices, independent of the host system; and a command queue prioritizer for each storage device prioritizing commands from a first initiator for reconstructing the unavailable data block with commands from a second initiator for updating data blocks and parity blocks of the parity stripe, such that the data block is reconstructed without combining an updated block with an old block. - View Dependent Claims (16, 17)
-
-
18. An article of manufacture for use in an array of storage devices for reconstructing an unavailable data block, the array being attached to a host computer system, each storage device comprising, a processor, memory, and a storage media, having sets of data blocks and corresponding parity blocks arranged on the storage media such that a data block can be reconstructed using remaining set data blocks and corresponding parity block, wherein when an old data block is updated with an updated data block, a corresponding old parity block is updated with an updated parity block, said article of manufacture comprising a computer-readable storage medium having a computer program code embodied in said medium which causes the array of storage devices to:
-
issue a reconstruction read command to each storage device having the remaining set data blocks or the corresponding parity block, to read the set data block or the corresponding parity block; queue each command on a respective queue for each storage device, in a priority order, coordinating each reconstruction read command with any write command so that only an updated data block is read with an updated parity block while an old data block is read with an old parity block to reconstruct the unavailable data block; and logically combine the remaining data blocks and the set parity block read from the storage devices to produce a reconstructed data block. - View Dependent Claims (19, 20)
-
Specification