ZFS on Linux
Richard Yao has written a provocative piece detailing the state of the ZFS filesytem on Linux. It's made the rounds on other sites, where it's generating a lot of buzz. The reason is twofold: (1) ZFS is such a phenomenal piece of software, and (2) Yao insists the ZFSonLinux project (ZoL) is ready for primetime.
Linux users familiar with other filesystems or ZFS users from other platforms will often ask whether ZFS on Linux (ZoL) is "stable". The short answer is yes, depending on your definition of stable. The term stable itself is somewhat ambiguous. While one would think that stable means "ready for production use", that can mean that it does not lose data, that it does not crash, that it is a drop-in replacement for an existing filesystem, that changes to the disk format are forward compatible, that updates are always flawless or some combination thereof. Consequently, the long answer is much more nuanced than a single word can express. ...He continues: I believe ZoL is production ready for the following reasons:
- Key ZFS data integrity features work on Linux like they do on other platforms.
- ZFS runtime stability on Linux is comparable to other filesystems, with certain exceptions that I document below.
- ZoL is at near feature parity with ZFS on other platforms.
BTR: btrfs subvolume snapshot /tank/subvolume /tank/snapshots/subvolume/20140721 ... 75 characters
ZFS: zfs snapshot tank/subvolume@20140721 ... 36 characters.
Plus you have to maintain a separate directory to manage snapshots... As snapshots grow to hundreds, or thousands your mount screen becomes a worthless jumble of crap. Fundamentally snapshots are treated as peers with filesystems in btrfs, and I believe this is absolutely incorrect. Also apparently not only are a bunch of things required to be mounted(subvolumes) BTRFS pretends it can't figure out how to mount a full volume without playing around in fstab for each things I create. In short it mounts what I don't want mounted, and doesn't mount what I do.
Compression?
BTR: you go into fstab, which is apparently mandatory(really?) and set compress=lzo.
ZFS: zfs set compression=on tank/textfiles
For a use case involving ZVOLs(block devices) it's very simple, in ZFS it's possible:
zfs create -V 20G tank/vm/pgserver0
In BTR? It's impossible. You're dealing with files in a filesystem which if you've ever benchmarked is tragically underpowered. Personally I think this is the first thing BTRFS should have implemented but perhaps not as many people use VMs or iSCSI? To me those are critically important.