Thursday, 17 March 2011

Special RAID Type

Recently, I’ve seen two very special types of RAID. They are neither RAID5 nor RAID6. But they have the same tolerance of drive failure as RAID5/RAID6, where the data is still recoverable when two drives are failed.

1. RAID from Adaptec 3805
It has a data stripe size of 512 sectors and two rows as one data unit (5 data stripes) cycle. The data structure is:

P1= D5 XOR D2
P2= D1 XOR D3
P3= D2 XOR D4
P4= D3 XOR D5
P5= D4 XOR D1

For example, if Drive 1 and Drive 3 are failed, data on them can be regenerated by:
D1= D4 XOR P5;
D3= D5 XOR P4;

Due to the parity bits are not on the same row as the data bits, there is no software available in the market supports the regeneration of the missing data strips from crossed-row data and parity. The parity has to be on the same row as the data to regenerate the missing data by R-studio. Special script needs to be written to regenerate the content of the failed drives, so as to use conventional software to retrieve the data in the final step.
To regenerate the D1 on the first row of each data unit cycle, as in the example above, the script will calculate the XOR result between D4 on the first row and P5 on the second row and store the result on the first row of the missing drive. After running the script, the data structure will look like:

Now, we can use the R-Studio to retrieve the data. Build a virtual RAID using all the working drives and the drives regenerated. Set the RAID type as customized:

2. The second special type of RAID allows maximum two failed drives. It uses the redundancy of the original data, playing the same role as the parity. The data structure is:

Within a data unit cycle, it also has two rows as the first type. There is no parity at all. The green colored set of data is the redundancy. As can be seen from the data structure, even though it supports up to two failed drives, these two failed drives can NOT be 1+3, 1+4, 2+4, 2+5, 3+5. Any other failed drives combinations will be tolerated. For example, Drive 1 and Drive 2 are failed.

Using R-Studio, we can construct a customized virtual RIAD to retrieve the data as:

Written by: Zijian Xie (R&D Manager, MSc,BEng)