Patent ID: 7149847

Claim:
In an N-column by R-row logical representation of a set of stored elements in an array of independent disks, N being an odd number and R minus 1 being less than N divided by a number of disk failures F from which the array is to be recovered, the stored elements in the set to be recovered being organized into a plurality of stripes, each stripe comprising a plurality of strips, all strips of a column located on the same disk, a first portion of the strips containing stored data and a second portion of the strips containing parity values, and one and only one strip containing a parity value stored per column per set, except that at least two parity values are stored in at least one of a plurality of N-columns, a method of providing multiple disk fault tolerance comprising: assigning each strip containing stored data to at least F different parity groups, F being greater than 2, so that each strip containing stored data in a respective column is assigned to parity groups different than other strips containing stored data in the same column; calculating, for each parity group, a parity value corresponding to all of the strips assigned to the parity group; and storing each of the parity values in strips of different columns so that none of the strips containing stored data in a column are assigned to a parity group whose parity value is stored in a strip of that column; wherein storing each of the parity values further comprises: reserving at least one parity row for storing a first portion of the parity values; reserving at least one strip in a row different from the at least one parity row for storing a second portion of the parity values; storing each of the parity values of the first portion in respective strips of the at least one reserved parity row; and storing each of the parity values of the second portion in respective reserved strips in the row different from the at least one parity row.