Method and means for b-adjacent coding and rebuilding data from up to two unavailable DASDS in a DASD array
First Claim
1. A method for correcting portions of a data string stored on up to two unavailable DASDs in a synchronous array of N+2 failure independent DASDs, comprising the steps of:
- (a) segmenting a data string into N blocks, B-Adjacent coding of first and second redundant blocks from the string, and writing N data and the two redundant blocks to N+2 counterpart DASDs, said B-adjacent code implicitly defining a parity check matrix;
(c) responsive to the identification of the unavailable DASDs, recursively forming and resolving a pair of syndromes as implicitly defined by the partly check matrix and obtained from the blocks of the same string on the remaining DASDs, said syndrome pair consisting of up to two independent Boolean equations in two unknowns, said recursive formation and resolution including overlap processing of the terms of the Boolean equations defining up to two blocks in error within a time period approximating the write update time for resolution of a single block in error.
1 Assignment
0 Petitions
Accused Products
Abstract
B-Adjacent coding is used to correct up to two DASDs in error in an array of N data DASDs and two redundant DASDs. When two of the data DASDs fail, their data can be recreated as a function of a pair of syndromes constituting up to two Boolean equations in two unknowns. Prestoring of the matrices of the powers of the polynomial terms of the code primitive together with pipeline processing operate to expedite data recovery and balance the write operations load on the DASDs across the array. Recovery from the failure of a data and a redundant DASD involves resolving one linear Boolean equation with one unknown.
56 Citations
11 Claims
-
1. A method for correcting portions of a data string stored on up to two unavailable DASDs in a synchronous array of N+2 failure independent DASDs, comprising the steps of:
-
(a) segmenting a data string into N blocks, B-Adjacent coding of first and second redundant blocks from the string, and writing N data and the two redundant blocks to N+2 counterpart DASDs, said B-adjacent code implicitly defining a parity check matrix; (c) responsive to the identification of the unavailable DASDs, recursively forming and resolving a pair of syndromes as implicitly defined by the partly check matrix and obtained from the blocks of the same string on the remaining DASDs, said syndrome pair consisting of up to two independent Boolean equations in two unknowns, said recursive formation and resolution including overlap processing of the terms of the Boolean equations defining up to two blocks in error within a time period approximating the write update time for resolution of a single block in error.
-
-
2. An apparatus for coding and recovery of up to two blocks in each symbol string formed from N data blocks b(0),b(N-1) and two redundant blocks R(0) and R(1), the blocks of said string being stored across a domain of N+2 synchronously accessible failure independent DASDs, comprising:
-
(a) means for storing matrix representations of the polynomial powers of a primitive element of a finite field code of the B-Adjacent type; (b) an encoder responsive to each symbol string and including means for computing R(0) as the modulo addition of b(0), . . . b(N-1) and for computing R(1) as a polynomial operation over b(0), . . . , b(N-1); and means for accessing the matrix store for utilizing the representation of the polynomial power indexed upon were i lies in the integer interval [0, N-1]; (c) means for identifying up to two failed DASDs in the domain; (d) a decoder coupling the identifying means and including means for recursively computing a first S(0) syndrome over the modulo addition of b(0), . . . , b(N-1),R(0) and a second syndrome S(1) as a polynomial operation over b(0), . . . ,b(N-1),R(1); and means for accessing the matrix store for utilizing the representation of the polynomial power indexed to the block b(i) being operated upon where i lies in the integer interval [0, N-1]; and (e) means for recursively resolving up to two data blocks b(i) and b(j) in error as a function of S(0) and S(1),a nd for resolving b(i) and R(0) in error where b(i) is a function of S(1) and R(0) is the modulo addition over b(0), . . . ,b(N-1), and for resolving b(i) and R(1) where b(i) is a function of S(0) and R(1) is the polynomial operation over b(0),b(1), . . .,b(N-1), said recursive resolution means including means for overlap processing of the terms of the Boolean equations defining the blocks in error within a time period approximating the write update time for resolution of a single block in error. - View Dependent Claims (7)
-
-
3. In an external storage system for CPU attachment, said system comprising a plurality of failure independent DASDs and means responsive to selective CPU commands for synchronously accessing data strings from at least one failure independent parity domain of N+2 of plurality of DASDs, said accessing means further comprising:
-
(a) means responsive to each data string for segmenting, B-adjacent coding, and writing N data blocks b(0),b(1), . . . , b(N-1) of the segmented data string and a first R(0) and a second redundant R(1) block to N+2 DASDs, said B-adjacent code implicitly defining a predetermined parity check matrix; (b) means for identifying up to two concurrently unavailable ones of the N+2 domain DASDs; (c) means responsive to the unavailability of up to two blocks in each string counterpart to up to two identified unavailable DASDs, said blocks being selected from the set including b(i) and b(j), for rebuilding said unavailable blocks by overlap processing of the terms of the Boolean equations defining the blocks in error within a time period approximating the write update time for resolution of a single block in error including; (1) ascertaining a first S(0) and a second S(1) syndrome from the counterpart N-2 available blocks according to the parity check matrix; (2) computing b(i) and b(j) as a function of S(0) and S(1); and (3) recoding the blocks of each of the data strings stored on the N available DASDs according to step (a) using blocks b(i) and b(j) as computed in step (c)(2). - View Dependent Claims (4, 5)
-
-
6. In an external storage system for CPU attachment said system comprising a plurality of failure independent DASDs, and means responsive to selective CPU commands for synchronously accessing data strings from at least one failure independent parity domain of N+2 of said plurality of DASDs, an improvement wherein said accessing means further comprise:
-
(a) means responsive to each data string for segmenting, B-adjacent coding, and writing N data blocks b(0),b(1), . . . , b(N-1) of the segmented data string and a first R(0) and a second redundant R(1) block to N+2 DASDs, said B-adjacent code implicitly defining a predetermined parity check matrix; b) means for identifying up to two concurrently unavailable ones of the N+2 domain DASDs; (c) means responsive to the unavailability of up to two blocks in each string counterpart to up to two identified unavailable DASDs, said blocks being selected from the set consisting of b(i) and b(j), b(i) and R(0), b(i) and R(1), and R(0) and R(1), for rebuilding said unavailable blocks by overlap processing of the terms of the Boolean equations defining the blocks in error within a time period approximating the write update time for resolution of a single block in error including; (1) ascertaining a first S(0) and a second S(1) syndrome from the counterpart N-2 available blocks according to the parity check matrix where either b(i) and b(j), b(i) and R(0), or b(i) and R(1) are in error; (2) computing b(i) and b(j) as a function of S(0) and S(1), b(i) and R(0) as a function of S(1), and b(i) and R(1) as a function of S(0); and (3) recoding and rewriting the blocks of each of the data strings stored on the parity domain onto N available DASDs and up to two others of the plurality of DASDs according to step (a) using blocks b(i) and b(j) as computed in step (c)(2).
-
-
8. A method for encoding and rebuilding the data contents of up to two unavailable DASDs in an array of failure independent DASDs, comprising the steps of:
-
(a) B-adjacent coding and writing N data blocks b(0),b(1), . . . ,b(N-1) of a segmented data string and a first R(0) and a second redundant R(1) block to N+2 counterpart available DASDs, said B-adjacent code implicitly defining a predetermined parity check matrix; (b) identifying up to two unavailable DASDs in the DASD domain encoded and written to in step (a); and (c) responsive to the unavailability of up to two blocks b(i) and b(j) in each string from each of up to two identified unavailable DASDs, recursively rebuilding b(i) and b(j) for each string by overlap processing of the terms of the Boolean equations defining the blocks in error within a time period approximating the write update time for resolution of a single block in error including; (1) ascertaining a first S(0) and a second S(1) syndrome from the counterpart N-2 available blocks according to the parity check matrix; (2) computing b(i) and b(j) as a function of S(0) and S(1); and (3) recoding and rewriting the blocks of each of the data strings stored on the N available DASDs including up to two of the spares according to step (a) using blocks b(i) and b(j) as computed in step (b)(2). whereby the effect of the redundancy is to balance the writing operations across the DASDs. - View Dependent Claims (9, 10, 11)
- 10. The method according to claim 8, wherein b(i) and b(j) computed as a function of the detected syndromes S(0) and S(1) according to the modulo 2 relations
- space="preserve" listing-type="equation">b(i)=[S(1)*a.sup.(j+1) +S(0)]/[a.sup.(j-i) +1]
space="preserve" listing-type="equation">b(j)=S(0)+b(i).
-
-
11. The method according to claim 8, wherein said method further comprises the step of pipeline processing steps (a) through (c).
Specification