Enhanced error recovery for data storage drives
AssigneeEMC IP Holding Company LLC
InventorDavid W. Harvey
Life of this patent
Estimating the term…
Abstract
Methods and systems for enhanced error recovery are described. A first one or more data blocks to write to a first drive are received by a first drive controller module. A first parity block is calculated by the first drive controller module based on a first data block parity group. The first one or more data blocks are written by the first drive controller module to the first drive. The first parity block is written by the first drive controller module to the first drive.
Claims12
A method performed by a storage system comprising a plurality of drive controller circuitries associated with a plurality of drives, respectively, the method comprising:
- receiving at least a plurality of first data blocks and a plurality of second data blocks;
- in a first writing step, writing the plurality of first data blocks to a first subset of the plurality of drives, respectively, leaving a first one of the plurality of drives unwritten to in the first writing step;
- in a second writing step, writing the plurality of second data blocks to a second subset of the plurality of drives, respectively, leaving a second one of the plurality of drives unwritten to in the second writing step, a first data block of the plurality of first data blocks being written to a third one of the plurality of drives in the first writing step, and a second data block of the plurality of second data blocks being written to the third one of the plurality of drives in the second writing step;
- calculating a first parity block based on the plurality of first data blocks written to the first subset of the plurality of drives;
- calculating a second parity block based on the plurality of second data blocks written to the second subset of the plurality of drives;
- writing the first parity block to the first one of the plurality of drives unwritten to in the first writing step;
- writing the second parity block to the second one of the plurality of drives unwritten to in the second writing step;
- calculating, by drive controller circuitry associated with at least the third one of the plurality of drives, at least a third parity block based at least on the first data block and the second data block written to the third one of the plurality of drives;
- and
- writing the third parity block to the third one of the plurality of drives.
A storage system comprising:
- a plurality of drives;
- and
- a plurality of drive controller circuitries associated with the plurality of drives, respectively,
- wherein one or more of the plurality of drive controller circuitries are configured:
- to receive at least a plurality of first data blocks and a plurality of second data blocks;
- in a first writing step, to write the plurality of first data blocks to a first subset of the plurality of drives, respectively, leaving a first one of the plurality of drives unwritten to in the first writing step;
- in a second writing step, to write the plurality of second data blocks to a second subset of the plurality of drives, respectively, leaving a second one of the plurality of drives unwritten to in the second writing step, a first data block of the plurality of first data blocks being written to a third one of the plurality of drives in the first writing step, and a second data block of the plurality of second data blocks being written to the third one of the plurality of drives in the second writing step;
- to calculate a first parity block based on the plurality of first data blocks written to the first subset of the plurality of drives;
- to calculate a second parity block based on the plurality of second data blocks written to the second subset of the plurality of drives;
- to write the first parity block to the first one of the plurality of drives unwritten to in the first writing step;
- and
- to write the second parity block to the second one of the plurality of drives unwritten to in the second writing step, and
- wherein drive controller circuitry associated with at least the third one of the plurality of drives is configured:
- to calculate at least a third parity block based at least on the first data block and the second data block written to the third one of the plurality of drives;
- and
- to write the third parity block to the third one of the plurality of drives.
A storage system comprising:
- a plurality of drives in a RAID configuration;
- and
- a plurality of drive controller circuitries associated with the plurality of drives, respectively,
- wherein one or more of the plurality of drive controller circuitries are configured:
- to receive at least a plurality of first data blocks and a plurality of second data blocks;
- in a first writing step, to write the plurality of first data blocks to a first subset of the plurality of drives, respectively, leaving a first one of the plurality of drives unwritten to in the first writing step;
- in a second writing step, to write the plurality of second data blocks to a second subset of the plurality of drives, respectively, leaving a second one of the plurality of drives unwritten to in the second writing step, a first data block of the plurality of first data blocks being written to a third one of the plurality of drives in the first writing step, and a second data block of the plurality of second data blocks being written to the third one of the plurality of drives in the second writing step;
- to calculate a first parity block based on the plurality of first data blocks written to the first subset of the plurality of drives;
- to calculate a second parity block based on the plurality of second data blocks written to the second subset of the plurality of drives;
- to write the first parity block to the first one of the plurality of drives unwritten to in the first writing step;
- and
- to write the second parity block to the second one of the plurality of drives unwritten to in the second writing step, and
- wherein drive controller circuitry associated with at least the third one of the plurality of drives is configured:
- to calculate at least a third parity block based at least on the first data block and the second data block written to the third one of the plurality of drives;
- and
- to write the third parity block to the third one of the plurality of drives.
A method performed by a storage system comprising a plurality of drive controller circuitries associated with a plurality of drives, respectively, the method comprising:
- determining that a data block stored on a respective drive is unreadable, wherein (1) in a first writing step, a plurality of first data blocks is written to a first subset of the plurality of drives, respectively, leaving a first one of the plurality of drives unwritten to in the first writing step, (2) in a second writing step, a plurality of second data blocks is written to a second subset of the plurality of drives, respectively, leaving a second one of the plurality of drives unwritten to in the second writing step, a first data block of the plurality of first data blocks being written to a third one of the plurality of drives in the first writing step, and a second data block of the plurality of second data blocks being written to the third one of the plurality of drives in the second writing step, (3) a first parity block is calculated based on the plurality of first data blocks written to the first subset of the plurality of drives, (4) a second parity block is calculated based on the plurality of second data blocks written to the second subset of the plurality of drives, (5) the first parity block is written to the first one of the plurality of drives unwritten to in the first writing step, (6) the second parity block is written to the second one of the plurality of drives unwritten to in the second writing step, (7) at least a third parity block is calculated by drive controller circuitry associated with at least the third one of the plurality of drives based at least on the first data block and the second data block written to the third one of the plurality of drives, and (8) the third parity block is written to the third one of the plurality of drives, and wherein the respective drive storing the unreadable data block corresponds to the third one of the plurality of drives;
- reading, by the drive controller circuitry associated with at least the third one of the plurality of drives, at least the first data block and the second data block from the third one of the plurality of drives;
- reading, by the drive controller circuitry associated with at least the third one of the plurality of drives, the third parity block from the third one of the plurality of drives;
- and
- calculating, by the drive controller circuitry associated with at least the third one of the plurality of drives, a value of the unreadable data block based on at least the first data block, the second data block, and the third parity block, each of the first data block, the second data block, and the third parity block being read from the third one of the plurality of drives.
Dependencies are inferred from the claim text.