Patent ID: 7788525

Claim:
A fault tolerance system for multiple failed disks in a disk array, comprising: a disk array, the disk array comprising a plurality of disks, each of which is logically divided into multiple storage blocks, the storage blocks comprising: a plurality of data blocks, the data blocks being stored in n disks, each of which can be symbolically depicted as D(i,j), wherein i is a disk number of each disk, and j is a data block number of the disk; parity blocks, which can be symbolically depicted as P parity blocks, the P parity blocks being stored in an independent disk, and being for storing P parities, which can be symbolically depicted as P(j); and parity blocks, which can be symbolically depicted as Q parity blocks, the Q parity blocks being stored in another independent disk, and being for storing Q parities, which can be symbolically depicted as Q(k), wherein k is a Q parity block number; a processor, which is connected to the disk array through a bus, and which is for performing modulus operations, shift operations, and address conversion operations; and an exclusive-or (XOR) unit for performing XOR operations on the storage blocks of the disk array when generating a P parity block or a Q parity block, or reconstructing failed data; and wherein the processor is further operable to restore the data blocks of two or more failed disks in the disk array by means of: (i) setting a parameter y=b−a−1, wherein ‘b’ and ‘a’ respectively represent disk numbers of said two failed disks, and ‘a’ is less than ‘b;’ (ii) performing a first operation to obtain k=((a+y) mod p), wherein p is a prime number; (iii) reconstructing a data block D(a,y) of said failed disk ‘a’ using a parity Q(k); (iv) reconstructing a data block D(b,y) of said failed disk ‘b’ using a parity P(y); (v) performing a second operation to obtain y=((y+(b−a)) mod p); and (vi) repeating step (ii) to step (v) until all data blocks of said two failed disks are reconstructed.