How to make a redundant desktop system with daily snapshots? (Is btrfs ready for use?)

I want to configure a desktop system in which the home filesystem would be redundant (e.g. RAID-1), and would have weekly snapshots taken. I've already done this with ZFS, the snapshot system is wonderful, and with send/recv you can easily create backups on external media. Unfortunately, at that point, I want GNU+Linux and not FreeBSD or Solaris, so I'm looking for suggestions for good alternatives.

I reckon that my alternatives are:

  1. btrfs - it seems to be exactly what I need, it has snapshots and commands that allow you to easily replicate zfs send. Yet all documentation mentions that it's still experimental. I can't seem to find any actual reports on its reliability or usability issues. Can you point me to any information on that issue that could clarify whether it would be a possible choice? I have a large preference for this option, mostly because I don't want to reformat the drives when btrfs becomes ready, but I there's no information on whether it's usable at all, whether it's a silly idea to use it, etc. The question that I cannot get the answer to is what does "experimental" mean.
  2. lvm snapshots and ext4 - preferably not, since it can consume an awful amount of space when new files are created. Creating 200 GB files requres 200 GB free space and 200 GB additionally for snapshots. I also have found it unreliable -- failed metadata rewrite results in an unreadable PV. I'm wondering how btrfs would compare here.
  3. A single filesystem (ext4) on a RAID-1 array with custom COW snapshots with hardlinks (like cp -al). That's my current preference if I can't use btrfs.

So how experimental btrfs is, which should I choose, and do I have any other options? What if I don't keep external incremental backups, would that affect my choice?


Solution 1:

While nobody has officially blessed it, I'd personally guess that it's ready for production use.

Some reasons that are typically given for not using it in production: the on-disk format may not be stable, there is no btrfsck, there is no support available. So let's examine those:

  • The on-disk format is now stable and the Btrfs developers have committed to maintaining compatibility, since 2009. That's 3 years.

  • There is a filesystem checker now. Also, this checker is shipped in Linux distributions, you no longer need to build it from source yourself.

  • Enterprise Btrfs support is now available from Oracle and SUSE (and has been since February).

That last one is what really says it for me. If Oracle – the company that maintains the software – is now willing to give you commercial support for it, then it's probably ready. Of course they have a strong interest in never saying that the open source version (which is, as far as I know, the same software, just no support contract) is actually ready for use, because they want you to buy the support and of course they don't want to be blamed if you go off by yourself and do something unsupported and blow up your disks, but I doubt they'd be willing to support it at all if they really thought it would lose data.