System and method for enabling efficient recovery of data in a storage array
First Claim
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 the 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.
3 Assignments
0 Petitions
Accused Products
Abstract
A recovery enabling system for storage arrays is a high distance generalization of RAID-5 with optimal update complexity and near optimal storage efficiency. The recovery enabling system utilizes presets, data cells with known values that initialize the reconstruction process. The presets allow resolution of parity equations to reconstruct data when failures occur. In one embodiment, additional copies of the layout of the recovery enabling system are packed onto the same disks to minimize the effect of presets on storage efficiency without destroying the clean geometric construction of the recovery enabling system. The recovery enabling system has efficient XOR-based encoding, recovery, and updating algorithms for arbitrarily large distances, making the recovery enabling system an ideal candidate when storage-efficient reliable codes are required.
-
Citations
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 the 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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A computer program product having a plurality of executable instruction codes for reliably storing data on a plurality of storage devices, comprising:
-
instruction codes for forming a stripe including;
a first set of instruction codes for logically partitioning a portion of each of the storage devices into one strip;
a second set of instruction codes for organizing strips on the storage devices into a stripe;
a third set of instruction codes for designating a plurality of strips as data strips and the remainder of the strips in the stripe as parity strips;
a fourth set of instruction codes for partitioning each data strip into a plurality of data elements;
a fifth set of instruction codes for partitioning each parity strip into a plurality of parity elements;
a sixth set of instruction codes for ordering the data strips containing data from a first data strip to a last data strip;
a seventh set of instruction codes for defining a set of parity slopes as a plurality of parity slope values, wherein each parity slope labels one parity strip;
an eight set of instruction codes for 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;
a ninth set of instruction codes for identifying at least two data strips that contain a different number of presets;
a tenth set of instruction codes for 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, an eleventh set of instruction codes for 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. - View Dependent Claims (15, 16, 17, 18, 19)
-
-
20. A storage system capable of reliably storing data on a plurality of storage devices, comprising:
-
means for forming a stripe comprising;
means for logically partitioning a portion of each of the storage devices into one strip;
means for organizing strips on the storage devices into a stripe;
means for designating a plurality of strips as data strips and the remainder of the strips in the stripe as parity strips;
means for partitioning each data strip into a plurality of data elements;
means for partitioning each parity strip into a plurality of parity elements;
means for ordering the data strips containing data from a first data strip to a last data strip;
means for defining a set of parity slopes as a plurality of parity slope values, wherein each parity slope labels one parity strip;
means for 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;
means for identifying at least two data strips that contain a different number of presets;
means for 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, means for 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.
-
Specification