System and method for tolerating multiple storage device failures in a storage system with constrained parity in-degree
First Claim
1. A method of protecting against at least T storage device failures in a group of N storage devices, comprising:
- setting a number K between 2 and T inclusive;
logically partitioning a portion of each of the storage devices into one strip on each storage device;
organizing strips on the storage devices into a stripe;
partitioning each of the strips into at least one data element and at least one parity element;
for each parity element, selecting a set of K data elements from the stripe so that;
(a) the selected set of data elements has not already been selected for another parity element;
(b) the selected data elements are located on K different storage devices; and
(c) the storage devices of the selected data elements are different from the storage device of the parity element;
ensuring that each data element is selected for T different parity elements; and
generating a parity value from data values stored in the K data elements in the selected set of data elements and storing the parity value in the parity element.
4 Assignments
0 Petitions
Accused Products
Abstract
A fault-tolerant system for storage arrays has constraints on the number of data from which each redundancy value is computed. The fault-tolerant system has embodiments that are supported on small array sizes to arbitrarily large array sizes, and can tolerate a large number T of failures. Certain embodiments can tolerate many instances of more than T failures. The fault-tolerant system has efficient XOR-based encoding, recovery, and updating algorithms and has simple redundancy formulas. The fault-tolerant system has improved IO seek costs for certain multiple-element sequential host updates.
36 Citations
35 Claims
-
1. A method of protecting against at least T storage device failures in a group of N storage devices, comprising:
-
setting a number K between 2 and T inclusive;
logically partitioning a portion of each of the storage devices into one strip on each storage device;
organizing strips on the storage devices into a stripe;
partitioning each of the strips into at least one data element and at least one parity element;
for each parity element, selecting a set of K data elements from the stripe so that;
(a) the selected set of data elements has not already been selected for another parity element;
(b) the selected data elements are located on K different storage devices; and
(c) the storage devices of the selected data elements are different from the storage device of the parity element;
ensuring that each data element is selected for T different parity elements; and
generating a parity value from data values stored in the K data elements in the selected set of data elements and storing the parity value in the parity element. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A computer program product having a plurality of executable instruction codes for protecting against at least T storage device failures in a group of N storage devices, comprising:
-
a first set of instruction codes for setting a numberK between 2 and T inclusive;
a second set of instruction codes for logically partitioning a portion of each of the storage devices into one strip on each storage device;
a third set of instruction codes for organizing strips on the storage devices into a stripe;
a fourth set of instruction codes for partitioning each of the strips into at least one data element and at least one parity element;
a fifth set of instruction codes for selecting, for each parity element, a set of K data elements from the stripe so that;
(d) the selected set of data elements has not already been selected for another parity element;
(e) the selected data elements are located on K different storage devices; and
the storage devices of the selected data elements are different from the storage device of the parity element;
a sixth set of instruction codes for ensuring that each data element is selected for T different parity elements; and
a seventh set of instruction codes for generating a parity value from data values stored in the K data elements in the selected set of data elements and storing the parity value in the parity element. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34)
-
-
35. A storage system capable of protecting against at least T storage device failures in a group of N storage devices, comprising:
-
means for setting a number K between 2 and T inclusive;
means for logically partitioning a portion of each of the storage devices into one strip on each storage device;
means for organizing strips on the storage devices into a stripe;
means for partitioning each of the strips into at least one data element and at least one parity element;
means for selecting, for each parity element, a set of K data elements from the stripe so that;
(g) the selected set of data elements has not already been selected for another parity element;
(h) the selected data elements are located on K different storage devices; and
(i) the storage devices of the selected data elements are different from the storage device of the parity element;
means for ensuring that each data element is selected for T different parity elements; and
means for generating a parity value from data values stored in the K data elements in the selected set of data elements and storing the parity value in the parity element.
-
Specification