I just looked at it. It is possible allright and the diagram looks ok.
If you have 3 disks A,B and C the parity is calculated by dividing the diskw
into typical lines, in this example I use 3 like they use on the diagram. We
then have a parity per line and one per disk. You can only regenerate one
block per parity, but since you have two full independ parities you can
replace any two.
A1 B1 C1 P1 (P1 = A1^B1^C1)
A2 B2 C2 P2
A3 B3 C3 P3
PA PB PC
(PA=A1^A2^A3)
As you can see if you wish to chech the parity for one read line(eg.A1-C1),
you can check directly against the horizontal parity P1. But if you wish to
check the horizontal parity you need to read the entire diskarray!
In reality I think one would only check the horizontal parity on reads,
giving you protection against 1 disk-errors, and only use the vertical parity
in case you need to regenerate a two lost disks.
The real problem is on each writes you still need to access at least one full
disk, and possibly all disks. As they write: there are no know commercial
implementations. I wonder why!
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/