> Don't hear about triple-parity RAID that often: I agree completely. In fact, I have wondered (probably in these forums), why we don't bite the bullet and make a generic raidzN, where N is any number >=0.
In fact, get rid of mirroring, because it clearly is a variant of raidz with two devices. Want three way mirroring? Call that raidz2 with three devices. The truth is that a generic raidzN would roll up everything: striping, mirroring, parity raid, double parity, etc. into a single format with one parameter. If memory serves, the second parity is calculated using Reed-Solomon which implies that any number of parity devices is possible. Let's not stop there, though. Once we have any number of parity devices, why can't I add a parity device to an array? That should be simple enough with a scrub to set the parity. In fact, what is to stop me from removing a parity device? Once again, I think the code would make this rather easy. Once we can add and remove parity devices at will, it might not be a stretch to convert a parity device to data and vice versa. If you have four data drives and two parity drives but need more space, in a pinch just convert one parity drive to data and get more storage. The flip side would work as well. If I have six data drives and a single parity drive but have, over the years, replaced them all with vastly larger drives and have space to burn, I might want to covert a data drive to parity. I may sleep better at night. If we had a generic raidzN, the ability to add/remove parity devices and the ability to convert a data device from/to a parity device, then what happens? Total freedom. Add devices to the array, or take them away. Choose the blend of performance and redundancy that meets YOUR needs, then change it later when the technology and business needs change, all without interruption. Ok, back to the real world. The one downside to triple parity is that I recall the code discovered the corrupt block by excluding it from the stripe, reconstructing the stripe and comparing that with the checksum. In other words, for a given cost of X to compute a stripe and a number P of corrupt blocks, the cost of reading a stripe is approximately X^P. More corrupt blocks would radically slow down the system. With raidz2, the maximum number of corrupt blocks would be two, putting a cap on how costly the read can be. Standard disclaimers apply: I could be wrong, I am often wrong, etc. -- This message posted from opensolaris.org _______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss