On 03/03/17 21:54, Gandalf Corvotempesta wrote:
2017-03-03 22:41 GMT+01:00 Anthony Youngman <antlists@xxxxxxxxxxxxxxx>:
Isn't that what raid 5 does?
nothing to do with raid-5
Actually, iirc, it doesn't read every stripe and check parity on a read,
because it would clobber performance. But I guess you could have a switch to
turn it on. It's unlikely to achieve anything.
Barring bugs in the firmware, it's pretty near 100% that a drive will either
return what was written, or return a read error. Drives don't return dud
data, they have quite a lot of error correction built in.
This is wrong.
Sometimes drives return data differently from what was stored, or,
store data differently from the original.
In this case, if real data is "1" and you store "0", when you read
"0", no read error is made, but data is still corrupted.
Do you have any figures? I didn't say it can't happen, I just said it
was very unlikely.
With a bit-rot prevention this could be fixed, you checksum "1" from
the source, write that to disks and if you read back "0", the checksum
would be invalid.
Or you just read the raid5 parity (which I don't think, by default, is
what happens). That IS your checksum. So if you think the performance
hit is worth it, write the code to add it, and turn it on. Not only will
it detect a bit-flip, but it will tell you which bit flipped, and let
you correct it.
This is what ZFS does. This is what Gluster does. This is what BRTFS does.
Adding this in mdadm could be an interesting feature.
Well, seeing as I understand btrfs doesn't do raid5, only raid1, then of
course it needs some way of detecting whether a mirror is corrupt. I
don't know about gluster or ZFS. (I believe raid5/btrfs is currently
experimental, and dangerous.)
But the question remains - is the effort worth it?
Can I refer you to a very interesting article on LWN? About git, which
assumes that "if hash(A) == hash(B) then A == B". And how that was
actually MORE accurate than "if (memcmp( A, B) == true) then A == B".
Cheers,
Wol
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html