On 20/01/2014 15:57, Ian Hinder wrote:
i.e. that there is parity information stored with every piece of data, and ZFS will "correct" errors automatically from the parity information.

So this is not just parity data to check correctness but there are many more additional bits to actually correct these errors, based on an algorithm like reed-solomon ?

Where can I find information on how much "parity" is stored in ZFS ?

I start to suspect that there is confusion here between checksumming for data integrity and parity information. If this is really how ZFS works, then if memory corruption interferes with this process, then I can see how a scrub could be devastating.

I don't . If you have additional bits to correct errors (other than detect errors), this will never be worse than having less of them. All algorithms I know of, don't behave any worse if the erroneous bits are in the checksum part, or if the algorithm is correct+detect instead of just detect. If the algorithm stores X+2Y extra bits (supposed ZFS case) in order to detect&correct Y erroneous bits and detect additional X erroneous bits, this will not be worse than having just X checksum bits (btrfs case).

So does ZFS really uses detect&correct parity? I'd expect this to be quite a lot computationally expensive

I don't know if ZFS really works like this. It sounds very odd to do this without an additional checksum check. This sounds very different to what you say below that btrfs does, which is only to check against redundantly-stored copies, which I agree sounds much safer. The second link above from the ZFS FAQ just says that if you place a very high value on data integrity, you should be using ECC memory anyway, which I'm sure we can all agree with. hxxp://zfsonlinux.org/faq.html#DoIHaveToUseECCMemory:
1.16 Do I have to use ECC memory for ZFS?
Using ECC memory for ZFS is strongly recommended for enterprise environments 
where the strongest data integrity guarantees are required. Without ECC memory 
rare random bit flips caused by cosmic rays or by faulty memory can go 
undetected. If this were to occur ZFS (or any other filesystem) will write the 
damaged data to disk and be unable to automatically detect the corruption.

The above sentence imho means that the data can get corrupted just prior to its first write. This is obviously applicable to every filesystem on earth, without ECC, especially if it happens prior to the computation of the parity.

BM

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to