Method and means for distributed sparing in DASD arrays
First Claim
1. In a storage subsystem having a plurality of DASDs, a method for rebuilding portions of parity groups resident on a failed one of said DASDs, each parity group including N data, P parity, and S spare blocks, each DASD storing K blocks, comprising the steps of:
- (a) configuring an array of N+P+S DASDs;
(b) distributing K parity groups in synchronous array addresses across subsets of N+P DASDs of the array such that no two blocks from the same parity group reside on the same DASD, each DASD storing data or parity blocks from (K-K*S/N+P+S)) parity groups, and distributing K*S blocks as spare storage across the array such that each DASD includes K*S/(N+P+S) spare blocks thereon; and
(c) in the event of a single DASD failure, for each of the K-K*S/(N+P+S) parity groups on the failed DASD, logically combining N+P+S-2 blocks belonging to the group from N+P+S-2 other DASDs into a single block, and, writing said single block into a counterpart one of the remaining K*S*(N+P+S-1)/(N+P+S) spare blocks such that no two blocks of the same parity group are distributed on the same DASD.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and means in which data and parity blocks forming parity groups together with spare blocks are distributed over array block locations according to at least one combinatorial design, each group having N data and P parity blocks. The combinatorial designs yield uniform or balanced loading thereby minimizing the number of accesses to reconstruct missing data and parity blocks and their copyback into spare block locations, and, minimize the number of accesses to the reconstructed data referenced subsequent to its copyback. Distributions of the spare block capacity of one or two DASDs are shown over single and multiple arrays and shared among multiple arrays. Parity block distribution although ancillary to spare distribution enhances throughput and reduces the number of accesses for rebuild etc.
-
Citations
24 Claims
-
1. In a storage subsystem having a plurality of DASDs, a method for rebuilding portions of parity groups resident on a failed one of said DASDs, each parity group including N data, P parity, and S spare blocks, each DASD storing K blocks, comprising the steps of:
-
(a) configuring an array of N+P+S DASDs; (b) distributing K parity groups in synchronous array addresses across subsets of N+P DASDs of the array such that no two blocks from the same parity group reside on the same DASD, each DASD storing data or parity blocks from (K-K*S/N+P+S)) parity groups, and distributing K*S blocks as spare storage across the array such that each DASD includes K*S/(N+P+S) spare blocks thereon; and (c) in the event of a single DASD failure, for each of the K-K*S/(N+P+S) parity groups on the failed DASD, logically combining N+P+S-2 blocks belonging to the group from N+P+S-2 other DASDs into a single block, and, writing said single block into a counterpart one of the remaining K*S*(N+P+S-1)/(N+P+S) spare blocks such that no two blocks of the same parity group are distributed on the same DASD. - View Dependent Claims (24)
-
-
2. In a storage subsystem having a plurality of DASDs, a method for rebuilding portions of parity groups resident on a failed one of said DASDs, each parity group including N data and 1 parity blocks, each DASD storing K blocks, comprising the steps of:
-
(a) configuring an array of N+2 DASDs; (b) distributing K parity groups in synchronous array addresses across subsets of N+1 DASDs of the array such that no two blocks from the same parity group reside on the same DASD, each DASD storing K-K/(N+2) data or parity blocks, and distributing K blocks as spare storage across the array such that each DASD includes K/(N+2) spare blocks thereon; and (c) in the event of a single DASD failure, for each of the K-K/(N+2) parity groups, logically combining N blocks belonging to the group from N other DASDs into a single block, and, writing said single block into a counterpart one of the remaining K*(N+1)/(N+2) spare blocks such that no two blocks of the same parity group are distributed on the same DASD. - View Dependent Claims (3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A storage subsystem for accessing parity groups of N data blocks and 1 parity block each, comprising:
-
an array formed from N+2 DASDs, each DASD having the storing K blocks; first means for distributing N+1 blocks of each of K parity groups across counterpart subsets of N+1 DASDs selected from the array such that no two blocks from the same parity group is stored on the same DASD; means for distributing K blocks of storage as spare blocks such that each array DASD reserves K/(N+2) blocks thereon; second means for identifying any single DASD failure; and means responsive to any single DASD failure identified by the seconds means for processing each of up to K-K/(N+2) parity groups by logically combining N blocks belonging to the group from N other DASDs into a single block, and, writing said single block into a counterpart one of the remaining up to K*(N+1)/(N+2) spare blocks such that no two blocks of the same parity group are distributed on the same DASD. - View Dependent Claims (12, 13, 14, 15, 23)
-
-
16. A storage subsystem comprising:
-
an array formed from at least N+P+2 DASDs, each DASD having the capacity to store K blocks; first means for distributing K parity groups across any N+P DASD subset of the N+P+2 DASDs in synchronous addresses, each parity group consisting of N data blocks+P parity blocks such that no two blocks from the same parity group are stored on the same DASD; means for reserving and distributing the capacity equivalent of up to 2*K blocks of storage as spare blocks across the array of N+P+2 DASDs such that no more than two spare storage locations nor more than one parity block are stored on the same synchronous address or on the same DASD, second means for identifying up to any two DASD failures in said array; and means responsive to identification by said second means of up to any two DASD failures for logically combining the K-2*K/(N+P+2) parity grups from N remaining DASDs into single blocks, and writing the single blocks into the 2*(K-1) blocks of remaining reserved spare storage such that no two portions of the same parity group are distributed on the same DASD. - View Dependent Claims (17, 18)
-
-
19. A storage subsystem comprising:
-
a first and a second failure independent array each formed from at least N+P+1 DASDs, each DASD having the capacity to store K blocks; first means for distributing K parity groups across N+P+1 DASDs of either the first or second arrays mutually exclusively, each parity group consisting of N data blocks+P parity blocks such that no two blocks from the same parity group are stored on the same DASD; means for distributing K blocks of storage as spare blocks across N+P+1 DASDs of the first array and K blocks of storage as spare blocks across N+P+1 DASDs of the second array such that in each array only one storage block resides at each synchronous address and on each DASD; second means for identifying a first or a second DASD failure occurring in either the first or second arrays; means responsive to any single DASD failure identified by the second means for processing, in the array in which the failure occurred, each of the K-K/(N+P+1) parity groups by logically combining N+P-1 blocks belonging to the group from N+P-1 other DASDs into a single block, and, writing said single block into a counterpart one of the remaining K*(N+P)/(N+P+1) spare blocks such that no two blocks of the same parity group are distributed on the same DASD; and means responsive to any second DASD failure identified in the same or other array by the second means for processing, in the array having available spare blocks, each of the K-K/(N+2) parity groups by logically combining N+P-1 blocks belonging to the group from N+P-1 other DASDs in the array in which the second failure occurred into a single block, and, writing said single block into a counterpart one of the remaining K*(N+P)/(N+P+1) spare blocks such that no two blocks of the same parity group are distributed on the same DASD. - View Dependent Claims (20)
-
-
21. In a storage subsystem comprising a first and a second failure independent array of DASDs, each DASD having the capacity to store K blocks, a method for rebuilding portions of parity groups resident on a failed DASD, each parity group including N data and P parity blocks, comprising the steps of:
-
(a) configuring a first array of N+P+1 DASDs and a second array of N+P DASDs; (b) distributing up to K parity groups in synchronous array addresses across subsets of N+P DASDs out of N+P+1 DASDs of the first array and K parity groups across N+P DASDs of the second array such that no two blocks from the same parity group reside on the same DASD, and distributing K blocks as spare storage across the first array such that each DASD includes K/(N+P+1) spare blocks thereon, each synchronous address and DASD having only one spare block thereon; (c) in the event of a single DASD failure occurring in the first array, for each of the K-K/(N+P+1) parity groups, logically combining N+P-1 blocks belonging to the group from N+P-1 other DASDs into a single block, and, writing said single block into a counterpart one of the remaining K*(N+P)/(N+P+1) spare blocks such that no two blocks of the same parity group are distributed on the same DASD; and (d) in the event of a single DASD failure occurring in the second array, for each of the K parity groups, logically combining the N+P-1 blocks belonging to the group from the N+P-1 other DASDs into a single block, and, writing said single block into a counterpart one of the K spare blocks located on the first array.
-
-
22. In a storage subsystem having a plurality of DASDs, a method for rebuilding portions of parity groups resident on a failed one of said DASDs, each parity group including N data and P parity blocks, each DASD storing K blocks, comprising the steps of:
-
(a) configuring 2*(N+P)+1 DASDs of the plurality to form first and second addressible arrays of N+P DASDs each with one DASD shared by both arrays; (b) distributing K spare blocks across the 2*(N+P)+1 DASDs such that each synchronous address thereacross and each DASD includes only K/(2*(N+P)+1) blocks, and (1) distributing K parity groups across the first array of DASDs such that no synchronous first array address has more than a single parity block and that each parity group is written into a counterpart first array synchronous address to effectuate block offset or rotation from address to address; and (2) distributing K other parity groups across subsets of N+P DASDs of the N+P+1 DASDs addressibly part of the second array such that no synchronous second array address has more than a single parity block and that each said other parity group is written into a counterpart second array synchronous address to effectuate block offset or rotation from address to address; and (c) in the event of a single DASD failure occurring in either the first or second array, for each of the parity groups in that array, logically combining the remaining blocks belonging to the group from other DASDs in that array into a single block, and, writing said single block into a counterpart one of the remaining spare blocks distributed across both arrays such that no two blocks of the same parity group are distributed on the same DASD.
-
Specification