From: Duncan <1i5t5.duncan@cox.net>
To: linux-btrfs@vger.kernel.org
Subject: Re: btrfs and ECC RAM
Date: Sat, 18 Jan 2014 07:16:42 +0000 (UTC) [thread overview]
Message-ID: <pan$a84be$d3729bcc$cd2b0fdb$783fe765@cox.net> (raw)
In-Reply-To: AE93F05D-BEE7-4CE6-970E-137EA41D1C7B@aei.mpg.de
Ian Hinder posted on Sat, 18 Jan 2014 01:23:41 +0100 as excerpted:
> I have been reading a lot of articles online about the dangers of using
> ZFS with non-ECC RAM. Specifically, the fact that when good data is
> read from disk and compared with its checksum, a RAM error can cause the
> read data to be incorrect, causing a checksum failure, and the bad data
> might now be written back to the disk in an attempt to correct it,
> corrupting it in the process. This would be exacerbated by a scrub,
> which could run through all your data and potentially corrupt it. There
> is a strong current of opinion that using ZFS without ECC RAM is
> "suicide for your data".
>
> I have been unable to find any discussion of the extent to which this is
> true for btrfs. Does btrfs handle checksum errors in the same way as
> ZFS, or does it perform additional checks before writing "corrected"
> data back to disk? For example, if it detects a checksum error, it
> could read the data again to a different memory location to determine
> if the error existed in the disk copy or the memory.
Given the license issues around zfs and linux, zfs is a non-starter for
me here, and as a result I've never looked particularly closely at how it
works, so I can't really say what it does with checksums or how that
compares to btrfs.
I /can/ however say that btrfs does /not/ work the way described above,
however.
When reading data from disk, btrfs will check the checksum. If it shows
up as bad and btrfs has another copy of the data available (as it will in
dup, raid1 or raid10 mode, but not in single or raid0 mode, I'm not
actually sure how the newer and still not fully complete raid5 and raid6
modes work in that regard), btrfs will read the other copy and see if
that matches the checksum. If it does, the good copy is used and the bad
copy is rewritten. If no good copy exists, btrfs fails the read.
So while I don't know how zfs works and whether your scenario of
rewriting bad data due to checksum failure could happen there or not, it
can't happen with btrfs, because btrfs will only rewrite the data if it
has another copy that matches the checksum. Otherwise it (normally)
fails the read entirely.
It is possible to turn off btrfs checksumming entirely with a mount
option, or to turn off both COW and checksumming on an individual file
using xattributes, but that's definitely not recommended in general (tho
it is on specific types of files, generally large internal-write files
that otherwise end up hugely fragmented due to COW).
As George Mitchell mentions in his followup, there's another thread
discussing ECC memory and btrfs already. However, the OP in that thread
didn't explain the alleged problem with zfs (which again, I've no idea
whether it's true or not, since due to the licensing issues zfs is a flat
non-starter for me so I've never looked into it that closely) in that
regard, so all we were able to say was that ECC and btrfs aren't related
in that way. At least here you explained a bit about the alleged
problem, so we can say for sure that btrfs doesn't work that way.
--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
next prev parent reply other threads:[~2014-01-18 7:17 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-18 0:23 btrfs and ECC RAM Ian Hinder
2014-01-18 0:49 ` cwillu
2014-01-18 1:10 ` George Mitchell
2014-01-18 7:16 ` Duncan [this message]
2014-01-19 19:02 ` Martin Steigerwald
2014-01-19 20:20 ` George Mitchell
2014-01-19 20:54 ` Duncan
2014-01-24 23:57 ` Russell Coker
2014-01-25 4:34 ` Duncan
2014-01-19 21:32 ` Duncan
2014-01-20 0:17 ` George Eleftheriou
2014-01-20 3:13 ` Austin S Hemmelgarn
2014-01-20 14:57 ` Ian Hinder
2014-01-20 15:36 ` Bob Marley
2014-01-20 16:04 ` Austin S Hemmelgarn
2014-01-20 16:08 ` George Mitchell
2014-01-25 0:45 ` Chris Murphy
2014-01-27 16:08 ` Calvin Walton
2014-01-27 16:42 ` Chris Murphy
2014-01-20 16:13 ` Duncan
2014-01-20 15:55 ` Fajar A. Nugraha
2014-01-23 16:00 ` David Sterba
-- strict thread matches above, loose matches on Subject: below --
2014-01-20 15:27 Ian Hinder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='pan$a84be$d3729bcc$cd2b0fdb$783fe765@cox.net' \
--to=1i5t5.duncan@cox.net \
--cc=linux-btrfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox