Again more comments for RAID recovering.

This commit is contained in:
Andrea Mazzoleni 2013-09-20 22:06:11 +02:00
parent 7eca46e9fd
commit 5f332c0067
3 changed files with 36 additions and 18 deletions

21
raid.c
View file

@ -1249,25 +1249,10 @@ void raid_gen(unsigned level, unsigned char** buffer, unsigned diskmax, unsigned
* Note that in this case we don't have the guarantee to always have
* a system of independent linear equations, and in some cases
* the equations are no not solvable.
* This is expected because the Vandermonde matrix we use to generate the parity
* This is expected because the Vandermonde matrix we use to compute the parity
* has no guarantee to have all its submatrixes not singular [3, Chap 11, Problem 7]
* and this is a requirement to have a MDS code [3, Chap 11, Theorem 8].
*
* For example, with 22 data disks we get the matrix equation:
*
* [ 1 1 1 ... 1 ] [ D0 ] [ P ]
* [ 1 2 2^2 ... 2^21 ] * [ D1 ] = [ Q ]
* [ 1 4 4^2 ... 4^21 ] [ D2 ] [ R ]
* [ 1 8 8^2 ... 8^21 ] [ .. ] [ S ]
* [ D21 ]
*
* and in case of recoving disk 0, 10 and 21, using parity P, Q, S
* removing the proper rows and column you get the singular matrix:
*
* [ 1 1 1 ] [ D0 ] [ Pd ]
* [ 1 116 117 ] * [ D10 ] = [ Qd ]
* [ 1 96 161 ] [ D21 ] [ Sd ]
*
* Using the primitive polynomial 285, Quad Parity works for up to 21 data disks
* with parity coefficients "1,2,4,8". Changing polynomial to one of 391/451/463/487,
* it works for up to 27 disks with the same parity coefficients.
@ -1275,8 +1260,8 @@ void raid_gen(unsigned level, unsigned char** buffer, unsigned diskmax, unsigned
* make it working for up to 33 disks. But no more.
*
* To support more disks it's possible to use the Galois Field GF(2^16) with
* primitive polynomial 100087 that supports Hexa (6) parity with parity coeffiecients
* 1,2,4,8,16,32 for up to 89 disks.
* primitive polynomial 100087 or 122563 that supports Hexa (6) parity with
* parity coeffiecients 1,2,4,8,16,32 for up to 89 disks.
*
* A general method working for any number of disks, is to use a a Cauchy matrix [4],
* but with a slower computational performance, because the coefficients of

16
test-raidQP-hole.conf Normal file
View file

@ -0,0 +1,16 @@
block_size 1
parity test/parity
q-parity test/q-parity
r-parity test/r-parity
s-parity test/s-parity
content test/content
content test/p-content
content test/q-content
content test/r-content
disk disk1 test/disk1/
disk disk3 test/disk3/
disk disk4 test/disk4/
disk disk5 test/disk5/
include *.hidden
exclude *.unrecoverable

17
test-raidQP.conf Normal file
View file

@ -0,0 +1,17 @@
block_size 1
parity test/parity
q-parity test/q-parity
r-parity test/r-parity
s-parity test/s-parity
content test/content
content test/p-content
content test/q-content
content test/r-content
disk disk1 test/disk1/
disk disk2 test/disk2/
disk disk3 test/disk3/
disk disk4 test/disk4/
disk disk5 test/disk5/
include *.hidden
exclude *.unrecoverable