I've seen a lot of information on btrfs lately. I have been considering ext4 for my next filesystem, but am tempted by btrfs instead. How widely used is btrfs? What are the pro's and con's?
Absolutely not. And here's why:
From the Btrfs Wiki:
Note that Btrfs does not yet have a fsck tool that can fix errors. While Btrfs is stable on a stable machine, it is currently possible to corrupt a filesystem irrecoverably if your machine crashes or loses power on disks that don't handle flush requests correctly.
When it's pushed out as the default root filesystem in Fedora Core (which is pretty bleeding edge) I think I'll start experimenting with Btrfs on testing machines. When it starts to stabilize sometime after, I think I'll begin to use it on new non-mission critical production machines.
I never like to be in a hurry to lose my data.
Speaking of 2014: no, it is definitely not production ready yet!
Performance of it is still sub par in some areas, common commands like "df" are still being broken on purpose (you need "btrfs fi" instead), and I still wouldn't trust it my important data.
Also if you are in need of a filesystem putting your images of virtual machines on or databases, you should simply skip it. Btrfs is not really suited very well for that kind of stuff, that's stuff you should put on Ext3/4 or XFS instead.
Give it two more years or three to mature and then it might be in a production ready state.
If you are really in need of a production ready COW file system right now, take ZFS! You could use the native Linux port or just an OS which supports it straight from the Kernel like FreeBSD.
And take a look at the official Gotchas! page, where the developers are publishing the actual gotchas and how to avoid those:
Also keep in mind that the official advise from the getting started page until today is to keep a backup of your important data and to be prepared for all kind of hiccups (https://btrfs.wiki.kernel.org/index.php/Getting_started).
They do consider the core functionality by now to be stable enough for daily use, but they are still fiddling around with newer features and if newer features do come up, they will definitely need a few releases (meaning six two twelth months I presume) until they are mature enough.
Edit: Russel Coker from Australia has been using Btrfs for some time and posts his experiences from time to time (e.g. http://etbe.coker.com.au/2014/07/31/btrfs-status-july-2014/). He uses it on some of this servers and it shows though while it is not all doom and gloom, you normally need to stay with the most recent kernels e.g., something that's not easy to do on a server, and yes, there are still problems around.
Also worthwhile to read some of the comments, too.
So this means by definition it is still being work in progress, which never had time until today to mature as a whole.
Edit: according to this blog post even with kernel 3.16 Btrfs can still deadlock. http://marc.merlins.org/perso/btrfs/post_2014-10-05_Btrfs-Tips_-Catch-Btrfs-Deadlocks.html
Personally, I would consider it production ready when (and if) the likes of Canonical and Red Hat implement it in their supported products. I'm sure it'll all work fine, most of the time, but I would say that for putting it in production it is a bit too early still.
Update: Assuming people will come here more often now that Oracle released the UEK R2 with btrfs support (20120315): no, the fact that Oracle now supports it, does not make it thoroughly tested enough for an enterprise environment. The fact that there still isn't a publicly available fsck tool and it still hasn't had sturdy testing in the likes of OpenSuSE, Fedora and all doesn't help either. Stay away for now.
In short no.
• The only RAID support is currently 0,1,10.
• No file system repair is available (yet)
Checkout this podcast with one of the developers...very cool things are coming soon!
I am planning on installing on a home VM without important data for testing, but that's as comfortable as I can be with it's current state.
For RHEL7 Red Hat is calling btrfs a technology preview and XFS is the default. Make of that what you will.