US 7,321,905 B2 | ||
System and method for efficient data recovery in a storage array utilizing multiple parity slopes | ||
Jeffrey R. Hartline, Ithaca, N.Y. (US); Tapas Kanungo, San Jose, Calif. (US); and James Lee Hafner, San Jose, Calif. (US) | ||
Assigned to International Business Machines Corporation, Armonk, N.Y. (US) | ||
Filed on Sep. 30, 2004, as Appl. No. 10/956,468. | ||
Prior Publication US 2006/0074954 A1, Apr. 06, 2006 | ||
Int. Cl. G06F 17/00 (2006.01) |
U.S. Cl. 707—202 [711/114; 714/800] | 20 Claims |
1. A method of reliably storing data on a plurality of storage devices, comprising:
forming a stripe by:
logically partitioning a portion of each of the storage devices into one strip;
organizing strips on the storage devices into a stripe;
designating a plurality of strips as data strips and a remainder of the strips in the stripe as parity strips;
partitioning each data strip into a plurality of data elements;
partitioning each parity strip into a plurality of parity elements;
ordering the data strips containing data from a first data strip to a last data strip;
defining a set of parity slopes as a plurality of parity slope values, wherein each parity slope labels one parity strip;
designating at least some of the data elements as a plurality of preset data elements by assigning a predetermined value to
each of the preset data elements;
identifying at least two data strips that contain a different number of presets;
associating with each parity element, a set of data elements defined by selecting a data element from the first data strip,
following a sloped line having a parity slope corresponding to a parity strip of the parity element through the data elements
from one data strip to a next data strip, with wrap-around from a top of one data strip to a bottom of the next data strip,
until all the data strips have been touched by the sloped line; and
for each parity element, computing a parity value from data values stored in the data elements associated to the parity element
and storing that parity value in the parity element.
|