Technique for correcting multiple storage device failures in a storage array
First Claim
1. A system adapted to correct multiple storage device failures in a storage array, the system comprising:
- a storage array having a plurality of concatenated sub-arrays, each sub-array including a set of data storage devices and a local parity storage device, each sub-array assigned diagonal parity sets identically as if it were the only one present using a double failure protection encoding method, the array further including a global parity storage device holding diagonal parity computed by logically combining together a plurality of equivalent diagonal parity sets each from a differing one of the sub-arrays, wherein the global parity storage device is adapted to be used in connection with the local parity storage device of each sub-array to correct a double failure within the sub-array.
1 Assignment
0 Petitions
Accused Products
Abstract
A technique efficiently corrects multiple storage device failures in a storage array. The storage array comprises a plurality of concatenated sub-arrays, wherein each sub-array includes a set of data storage devices and a local parity storage device that stores values used to correct a failure of a single device within a row of blocks, e.g., a row parity set, in the sub-array. Each sub-array is assigned diagonal parity sets identically, as if it were the only one present using a double failure protection encoding method. The array further includes a single, global parity storage device holding diagonal parity computed by logically adding together equivalent diagonal parity sets in each of the sub-arrays.
136 Citations
79 Claims
-
1. A system adapted to correct multiple storage device failures in a storage array, the system comprising:
a storage array having a plurality of concatenated sub-arrays, each sub-array including a set of data storage devices and a local parity storage device, each sub-array assigned diagonal parity sets identically as if it were the only one present using a double failure protection encoding method, the array further including a global parity storage device holding diagonal parity computed by logically combining together a plurality of equivalent diagonal parity sets each from a differing one of the sub-arrays, wherein the global parity storage device is adapted to be used in connection with the local parity storage device of each sub-array to correct a double failure within the sub-array. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
10. A method for encoding data for correction of double failures in a storage array, the method comprising the steps of:
-
organizing the storage array as a plurality of concatenated sub-arrays, each sub-array including a set of data storage devices and a local parity storage device, the storage array further including a global parity storage device for holding diagonal parity; assigning diagonal parity sets to each sub-array identically as if the sub-array were the only one present using a double failure protection encoding method; and computing the diagonal parity by logically combining together a plurality of equivalent diagonal parity sets each from a differing one of the sub-arrays. - View Dependent Claims (11, 12, 20, 21, 22)
-
-
13. A method for encoding data for correction of double failures in a storage array, the method comprising the steps of:
-
organizing the storage array as a plurality of concatenated sub-arrays, each sub-array including a set of data storage devices and a local parity storage device, the storage array further including a global parity storage device for holding diagonal parity; assigning diagonal parity sets to each sub-array identically as if the sub-array were the only one present using a double failure protection encoding method; computing the diagonal parity by logically combining together equivalent diagonal parity sets in each of the sub-arrays and computing diagonal parity blocks along the diagonal parity sets of each sub-array, and logically combining the computed diagonal parity blocks of corresponding diagonal parity sets of the sub-arrays for storage as the diagonal parity on the global parity storage device; and correcting storage device failure within the array using the local parity storage device associated with each sub-array and the global parity storage device associated with the storage array. - View Dependent Claims (14, 15, 16, 17, 18, 19, 72, 73)
-
-
23. Apparatus for correcting double failures in a storage array, the apparatus comprising:
-
means for organizing the storage array as a plurality of concatenated sub-arrays, each sub-array including a set of data storage devices and a local parity storage device, the storage array further including a global parity storage device for holding diagonal parity; means for assigning diagonal parity sets to each sub-array identically as if the sub-array were the only one present using a double failure protection encoding method; means for computing the diagonal parity using parity encoding operations that logically combine together a plurality of equivalent diagonal parity sets each from a differing one of the sub-arrays; and means for correcting storage device failure within the array using parity decoding operations on the local parity storage device associated with each sub-array and the global parity storage device associated with the storage array. - View Dependent Claims (24, 25, 26, 27)
-
-
28. A computer readable medium containing executable program instructions for correcting double failures in a storage array, the executable program instructions comprising program instructions for:
-
organizing the storage array as a plurality of concatenated sub-arrays, each sub-array including a set of data storage devices and a local parity storage device, the storage array further including a global parity storage device for holding diagonal parity; assigning diagonal parity sets to each sub-array identically as if the sub-array were the only one present using a double failure protection encoding method; computing the diagonal parity by logically combining together a plurality of equivalent diagonal parity sets each from a differing one of the sub-arrays; and correcting storage device failure within the array using the local parity storage device associated with each sub-array and the global parity storage device associated with the storage array. - View Dependent Claims (29, 32)
-
-
30. A computer readable medium containing executable program instructions for correcting double failures in a storage array, the executable program instructions comprising program instructions for:
-
organizing the storage array as a plurality of concatenated sub-arrays, each sub-array including a set of data storage devices and a local parity storage device, the storage array further including a global parity storage device for holding diagonal parity; assigning diagonal parity sets to each sub-array identically as if the sub-array were the only one present using a double failure protection encoding method; computing the diagonal parity by logically combining together equivalent diagonal parity sets in each of the sub-arrays, computing diagonal parity blocks along the diagonal parity sets of each sub-array, and logically combining the computed diagonal parity blocks of corresponding diagonal parity sets of the sub-arrays for storage as the diagonal parity on the global parity storage device; and correcting storage device failure within the array using the local parity storage device associated with each sub-array and the global parity storage device associated with the storage array. - View Dependent Claims (31)
-
-
33. A system adapted to correct multiple storage element failures in a storage array, the system comprising:
a storage array having a plurality of concatenated sub-arrays, each sub-array including a set of data storage elements and a local parity storage element configured to store values encoded with a single element error correction method used to correct a failure of a single element within a row parity set in the sub-array, each sub-array assigned diagonal parity sets identically as if it were the only one present using a double failure protection encoding method, the array further including a global parity storage element holding diagonal parity computed by logically combining together a plurality of equivalent diagonal parity sets such that each diagonal parity set is logically combined with at least one other equivalent diagonal parity set from a differing one of the sub-arrays, wherein the global parity storage element is used in connection with the local parity storage element of each sub-array to correct a double failure within the sub-array. - View Dependent Claims (34, 35, 36, 37)
-
38. A method for correcting double failures within data adapted for transmission over a communication medium, the method comprising the steps of:
-
dividing the data into packets for transmission over the communications medium; organizing the packets into n sub-groups of p packets, wherein p is a smallest prime number that is at least as large as a number of packets in any sub-group of packets and wherein each sub-group of packets includes data packets and a local parity packet configured to store values encoded with a single error correction method used to correct a failure of a single packet in the sub-group; assigning diagonal parity sets to each sub-group identically as if it were the only one present using a double failure protection encoding method; and providing a global parity packet with the group of packets, the global parity packet holding diagonal parity computed by logically combining equivalent diagonal parity sets in each of the sub-groups, wherein the global parity packet is used in connection with the local parity packet of each sub-group to correct a double failure within the sub-array. - View Dependent Claims (39, 40, 41)
-
-
42. A method for encoding data for correction of double failures in a storage array, comprising:
-
organizing the storage array as a plurality of sub-arrays, each sub-array including a set of data storage devices and a plurality of local parity storage blocks, each of the plurality of local storage blocks storing parity information for a corresponding sub-array; assigning diagonal parity sets to each sub-array as if the sub-array were the only one present using a double failure protection encoding method; including a plurality of global diagonal parity storage blocks, the global diagonal parity storage blocks holding global diagonal parity; and computing the global diagonal parity by logically combining together a plurality of equivalent diagonal parity sets such that each diagonal parity set is logically combined with at least one other equivalent diagonal parity set from a differing one the sub-arrays. - View Dependent Claims (43, 44, 45, 46, 47, 48, 49)
-
-
50. An apparatus for encoding data for correction of double failures in a storage array, comprising:
-
means for organizing the storage array as a plurality of sub-arrays, each sub-array including a set of data storage devices and a plurality of local parity storage blocks, each of the plurality of local storage blocks storing parity information for a corresponding sub-array; means for assigning diagonal parity sets to each sub-array as if the sub-array were the only one present using a double failure protection encoding method; means for including a plurality of global diagonal parity storage blocks, the global diagonal parity storage blocks holding global diagonal parity; and means for computing the global diagonal parity by logically combining together a plurality of equivalent diagonal parity sets such that each diagonal parity set is logically combined with at least one other equivalent diagonal parity set from a differing one of the sub-arrays. - View Dependent Claims (51, 52, 53, 54, 55, 56, 57)
-
-
58. A system for encoding data for correction of double failures, comprising:
-
a storage array organized as a plurality of sub-arrays, each sub-array including a set of data storage devices and a plurality of local parity storage blocks, each of the local parity storage blocks storing parity information for a corresponding sub-array; a storage operating system within a storage system to assign diagonal parity sets to each sub-array as if the sub-array were the only one present using a double failure protection encoding method; a plurality of global diagonal parity storage blocks within the storage array, the global diagonal parity storage blocks holding global diagonal parity; and the storage operating system computing the global diagonal parity by logically combining together equivalent diagonal parity sets in each of the sub-arrays such that each diagonal parity set is logically combined with at least one other equivalent diagonal parity set from a differing one of the sub-arrays. - View Dependent Claims (59, 60, 61, 62, 63, 64, 65)
-
-
66. A computer readable media, comprising:
-
said computer readable media having instructions written thereon for execution on a processor for the practice of the method of encoding data for correction of double failures in a storage array, comprising; organizing the storage array as a plurality of sub-arrays, each sub-array including a set of data storage devices and a plurality of local parity storage blocks, each of the plurality of local storage blocks storing parity information for a corresponding sub-array; assigning diagonal parity sets to each sub-array as if the sub-array were the only one present using a double failure protection encoding method; including a plurality of global diagonal parity storage blocks, the global diagonal parity storage blocks holding global diagonal parity; and computing the global diagonal parity by logically combining together equivalent diagonal parity sets in each of the sub-arrays such that each diagonal parity set is logically combined with at least one other equivalent diagonal parity set from a differing one of the sub-arrays.
-
-
67. A method for correcting double failures within data adapted for transmission over a communication medium, the method comprising the steps of:
-
dividing the data into packets for transmission over the communications medium; organizing the packets into subgroups, wherein each subgroup of packets includes data packets and a local parity packet configured to store values encoded with a single error correction method used to correct a failure of a single packet within the subgroup; assigning diagonal parity sets to each subgroup as if it were the only subgroup present using a double failure protection encoding method; and providing a global parity packet within the group of packets, the global parity packet holding diagonal parity computed by logically combining together a plurality of equivalent diagonal parity sets in each of the subgroups such that each diagonal parity set is logically combined with at least one other equivalent diagonal parity set from a differing one of the subgroups, wherein the global parity packet is used in connection with the local parity packet of each subgroup to correct a double failure within the subgroup. - View Dependent Claims (68, 69, 70, 71)
-
-
74. The method of 13 wherein the step of correcting comprises the step of reconstructing a failed data disk block using local row parity and a failed global diagonal parity disk block from equivalent diagonal parity sets in all sub-arrays.
-
75. An apparatus for correcting double failures within data adapted from transmission over a communications medium, comprising:
-
means for dividing the data into packets for transmission over the communications medium; means for organizing the packets into subgroups, wherein each subgroup of packets includes data packets and a local parity packet configured to store values encoded with a single error correction method used to correct a failure of a single packet within the subgroup; means for assigning diagonal parity sets to each subgroup as if it were the only subgroup present using a double failure protection encoding method; and means for providing a global parity packet within the group of packets, the global parity packet holding diagonal parity computed by logically combining together a plurality of equivalent diagonal parity sets in each of the subgroups such that each diagonal parity set is logically combined with at least one other equivalent diagonal parity set from a differing one of the subgroups, wherein the global parity packet is used in connection with the local parity packet of each subgroup to correct a double failure within the subgroup. - View Dependent Claims (76, 77)
-
-
78. A method for correcting multiple storage element failures in a storage array, the method comprising the steps of:
-
dividing the storage array into a first sub-array and a second sub-array, the first sub-array and the second sub-array each including a plurality of storage devices; calculating row parity for the first sub-array and storing the row parity for the first-sub array on one or more storage devices of the first sub-array; calculating row parity for the second sub-array and storing the row parity for the second sub-array on one or more storage devices of the second sub-array; selecting a plurality of diagonal parity sets on the first sub-array; selecting a plurality of diagonal parity sets on the second sub-array; pairing each diagonal parity set on the first sub-array with a corresponding diagonal parity set on the second sub-array, and calculating a global diagonal parity value for each pair of diagonal parity sets; and storing the global diagonal parity values on one or more storage devices of the storage array.
-
-
79. A system for correcting multiple storage element failures comprising:
-
a storage array organized into a first sub-array and a second sub-array, the first sub-array and the second sub-array each including a plurality of storage devices, the first sub-array storing row parity information on one or more storage devices of the first sub-array, the second sub-array storing row parity information on one or more storage devices of the second sub-array; a storage operating system configured to select a plurality of diagonal parity sets on the first sub-array and to select a plurality of diagonal parity sets on the second sub-array and configured to pair each diagonal parity set on the first sub-array with a corresponding diagonal parity set on the second sub-array, and calculate a global diagonal parity value for each pair of diagonal parity sets, the storage operating system further configured to store the global diagonal parity values on one or more storage devices of the storage array.
-
Specification