ZFS is the FS for Containers in Ubuntu 16.04 and how it compares to btrfs
20th February 2016
Recently in hacker news the following was posted: ZFS is the FS for Containers in Ubuntu 16.04.
I must admit the 16.04 demo does look very pleasant to work with.
However, bringing in ZFS into Linux reminded me of a fairly recent comparison of ZFS and btrfs that I had to do when building my home NAS.
At that time, few months ago, I’ve arrived (among others) at the following conclusions:
- ZFS on FreeBSD is reliable, though a memory hog;
- on Debian, OpenVault seems to be a good NAS web-management interface;
- on FreeBSD, FreeNAS is good (there is also Nas4Free fork of an older version, but I haven’t looked into it deep enough);
- running ZFS on linux (even as a kernel module) is the least efficient solution, at least partially because kernel’s file caching and ZFS’s ARC cache are two separate entities;
- although btrfs offers features very similar to ZFS, as of few months ago OpenVault did not offer btrfs volumes support from the web-interface.
In the end, I’ve decided to go with FreeNAS, and it seems to work well so far.
But had anything changed in the btrfs vs ZFS on Linux field?
Luckily, in the comments section of the original post Brian Mullan linked to a recent Bachelor degree project titled A performance comparison of ZFS and btrfs on Linux (local copy). Here’s an excerpt from the abstract:
The main conclusions that can be drawn from the analysis of the gathered data is that
Btrfs has improved greatly in recent years and is today showing great throughput whereas
ZFS on Linux is performing considerably worse than Btrfs.
The document is definitely worth looking at – actual results start on page 22, and there are figures for easy comprehension
XFS and ext4 are also added to the comparison, so if you are thinking about changing your FS – the document may help you, too.
The only area where ZFS excelled was database-like load; btrfs and XFS were the leaders in the majority of other tests.
(In fact, somewhat lower btrfs performance for database-like loads seems to be a well-known thing, and can be cured with the nodatacow
mount option – see e.g. this nice rant about PostgreSQL on btrfs.)
I do believe that ZFS is still more stable than btrfs, but I’m also still not convinced that ZFS and Linux are a good combination.