← Back to Patent Explorer
US6092215A Expired / Lapsed US ⏱️ 0.0 years remaining

System and method for reconstructing data in a storage array system

Assignee: International Business Machines Corp
•
Filing: 1997-09-29
•
Granted: 2000-07-18
•
Expires: 2017-09-29
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

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.

Inventors

  • 👤 Paul Hodges
  • 👤 Robert Wesley Shomler

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-05 02:30
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/07; G06F11/08; G06F11/10; G06F11/1076; G06F2211/00; G06F2211/10; G06F2211/1002; G06F2211/1054

Claims Analysis

Total Claims: 23
Claim 1
Independent Claim 192 words
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.
Claim 2
Dependent Claim 192 words
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.
Claim 3
Dependent Claim 47 words
The method of claim 1, wherein each storage device comprises a processor, memory, parity generator and storage medium, further comprising the step of: the host computer system issuing a reconstruction command for reconstructing the unavailable data block to a storage device which acts as the first initiator.
Claim 4
Dependent Claim 33 words
The method of claim 2, further comprising the steps of: the first initiator storage device performing an XOR operation on the remaining blocks in the parity stripe to reconstruct the unavailable data block.
Claim 5
Dependent Claim 30 words
The method of claim 2, further comprising the step of the first initiator storage device writing the reconstructed data block to the storage media of the first initiator storage device.
Claim 6
Dependent Claim 45 words
The method of claim 2, further comprising the steps of: the first initiator issuing a command to itself to read one of the remaining blocks of the parity stripe; and the first initiator storage device sending the reconstructed data block to the host computer system.
Claim 7
Dependent Claim 32 words
The method of claim 1, wherein the first and second initiators are first and second storage controllers, each storage controller acting as an independent initiator for reconstruction and updating of data blocks.
Claim 8
Dependent Claim 57 words
The method of claim 1, further comprising the steps of: delaying the reconstruction until there are no updates in progress for any of the remaining data blocks in the set of data blocks; and ensuring that the parity block is not updated by subsequently received update commands until after the parity block is read for the reconstruction.
Claim 9
Dependent Claim 154 words
The method of claim 1, further comprising the steps of: a) the first initiator issuing a command to read the parity block; b) queuing the command to read the parity block ahead of any later received commands to update the parity block; c) preventing the execution of subsequently received commands to update the parity block until after the remaining data blocks in the set of data blocks are read for the reconstruction; d) the first initiator issuing commands to read each remaining data block in the set of data blocks after the command to read the parity block is queued; e) queuing the commands to read the remaining data blocks in the set of data blocks ahead of any currently queued or subsequently received commands to update the data blocks; and f) waiting until there are no update commands for any of the remaining data blocks being executed before executing steps (a) through (e).
Claim 10
Dependent Claim 54 words
The method of claim 1, further comprising the steps of: quiescing all update activity for the remaining data blocks in the set of data blocks; and ensuring that the remaining data blocks are not updated by subsequently received update commands until after the remaining blocks in the parity stripe are read for the reconstruction.
Claim 11
Dependent Claim 66 words
The method of claim 1, further comprising the steps of: a) the first initiator issuing a command to read the parity block for the reconstruction after all update commands for the remaining data blocks have completed; and b) ensuring that subsequently received update commands for the remaining data blocks are not executed until after all of the remaining data blocks have been read for the reconstruction.
Claim 12
Dependent Claim 46 words
The method of claim 10, further comprising the step of: queuing the commands to read the remaining data blocks for the reconstruction ahead of any subsequently received command to update the remaining data blocks and behind any previously received commands to update the remaining data blocks.
Claim 13
Dependent Claim 47 words
The method of claim 1, further comprising the steps of: quiescing all update activity for the parity stripe data blocks; ensuring that the parity block is not updated by subsequently received update commands until after the remaining blocks of the parity stripe are read for the reconstruction.
Claim 14
Dependent Claim 65 words
The method of claim 1, further comprising the steps of: a) the first initiator issuing a command to read the parity block for the reconstruction after all update commands for the remaining data blocks have completed; and b) ensuring that subsequently received update commands for the parity block are not executed until after all of the remaining blocks of the parity stripe have been read.
Claim 15
Dependent Claim 43 words
The method of claim 13, further comprising the step of: queuing the commands to read the remaining data blocks ahead of any subsequently received command to update the remaining data blocks and behind any previously received commands to update the remaining data blocks.
Claim 16
Dependent Claim 222 words
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.
Claim 17
Dependent Claim 222 words
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.
Claim 18
Dependent Claim 25 words
The storage system of claim 15, wherein the initiator writes the reconstructed data block to the storage media where the unavailable data block was stored.
Claim 19
Dependent Claim 19 words
The storage system of claim 15, wherein the initiator sends the reconstructed data block to the host computer system.
Claim 20
Dependent Claim 230 words
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.
Claim 21
Dependent Claim 230 words
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.
Claim 22
Dependent Claim 36 words
The article of manufacture of claim 18, wherein the computer program code further causes the array of storage devices to write the reconstructed data block to the storage media having the data block to be reconstructed.
Claim 23
Dependent Claim 30 words
The article of manufacture of claim 18, wherein the computer program code further causes the array of storage devices to send the reconstructed data block to the host computer system.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2003-07-18 2004-01-17 2004-07-18 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2007-07-18 2008-01-17 2008-07-18 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2011-07-18 2012-01-17 2012-07-18 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag