ZFS On Linux Testing Effort

Home » CentOS » ZFS On Linux Testing Effort
CentOS 11 Comments

If you have a little time and resource please install and report back any problems you see.


A filesystem or Volume sits within a zpool a zpool is made up of vdevs vdevs are made up of block devices. zpool is similar to LVM volume vdev is similar to raid set

devices can be files.



11 thoughts on - ZFS On Linux Testing Effort

  • Andrew,

    We’ve been testing ZFS since about 10/24, see my original post (and replies) asking about its suitability “ZFS on Linux in production” on this list. So far, it’s been rather impressive. Enabling compression better than halved the disk space utilization in a low/medium bandwidth
    (mainly archival) usage case.

    Dealing with many TB of data in a “real” environment is a very slow, conservative process; our ZFS implementation has, so far, been limited to a single redundant copy of a file system on a server that only backs up other servers.

    Our next big test is to try out ZFS filesystem send/receive in lieu of our current backup processes based on rsync. Rsync is a fabulous tool, but is beginning to show performance/scalability issues dealing with the many millions of files being backed up, and we’re hoping that ZFS
    filesystem replication solves this.

    This stage of deployment is due to be in place by about 1/2014.


  • Andrew,

    I’ve been using ZFS 0.6.1 on CentOS 6.4 for the past 6 months. For the past few years before I was using mdam with ext4 on CentOS 5. The main reason for upgrading was snapshots integrated with Samba for file shares and compression. So far so good.


  • I can attest to the usefulness of ‘lsyncd’ for large numbers of files
    (our file server has almost 2 million in active use, with a second backup server that’s lsync’d to the first.

    Things to note:
    – Yes, lsyncd does use rsync, but it issues an ‘exclude *’ followed by the list of only the file(s) that need updating at that moment.

    – The inotify service can be jacked waaaay up (three kernel parameters)
    to handle millions of files if you wish. Just make sure you have lots of RAM. It’s wise to tune ZFS to *not* use all available RAM.

    – Updating is very quick and has never failed.

    Regarding ZFS, our two ZFS-on-Linux servers have been in full production for several months, with zero problems so far. Updates to the latest version is quite painless.

    Today I had to replace a failed 4TB drive … it took just a few minutes and required only two commands to do the replacement and start the resilvering process. This was done while the server was in active use, with only a small performance hit. Sweet!


  • Be careful with it. Sadly I found out that inotify would consistently fail on InnoDB files (ibd); I had to use stupid while loops and check mtimes to perform some stuff that inotify-cron would’ve done much more elegantly …

  • Interesting point, something I didn’t know. Fortunately in my case there are no db files involved directly, just db dumps wrapped in a tarball along with other associated stuff, sent from other servers.

    I would expect that lsync’ing db files could be a nasty non-stop process if the database is constantly being updated, so using db tools for replication would be best, configuring inotify/lsyncd to ignore the db directories. I believe by default that lsyncd instructs rsync to do whole-file transfers, so a large db could be a real problem.

    Thanks for the important heads-up!

  • We checked lsyncd out and it’s most certainly an very interesting tool. I *will* be using it in the future!

    However, we found that it has some issues scaling up to really big file stores that we haven’t seen (yet) with ZFS.

    For example, the first thing it has to do when it comes online is a fully rsync of the watched file area. This makes sense; you need to do this to ensure integrity. But if you have a large file store, EG: many millions of files and dozens of TB then this first step can take days, even if the window of downtime is mere minutes due to a restart. Since we’re already at this stage now (and growing rapidly!) we’ve decided to keep looking for something more elegant and ZFS appears to be almost an exact match. We have not tested the stability of lsyncd managing the many millions of inode write notifications in the meantime, but just trying to satisfy the write needs for two smaller customers (out of hundreds) with lsyncd led to crashes and the need to modify kernel parameters.

    As another example, lsyncd solves a (highly useful!) problem of replication, which is a distinctly different problem than backups. Replication is useful, for example as a read-only cache for remote application access, or for disaster recovery with near-real-time replication, but it’s not a backup. If somebody deletes a file accidentally, you can’t go to the replicated host and expect it to be there. And unless you are lsyncd’ing to a remote file system with it’s own snapshot capability, there isn’t an easy way to version a backup short of running rsync (again) on the target to create hard links or something – itself a very slow, intensive process with very large filesystems. (days)

    I’ll still be experimenting with lsyncd further to evaluate its real usefulness and performance compared to ZFS and report results. As said before, we’ll know much more in another month or two once our next stage of roll out is complete.


  • Andrew,

    I want to run /var on zfs, but when I try to move /var over it won’t boot thereafter, with errors about /var/log missing. Reading the ubuntu howto for ZFS indicates that while it’s possible to even boot from zfs, it’s a rather long and complicated process.

    I don’t want to boot from ZFS, but it appears that grub needs to be set up to support ZFS in order to be able to mount zfs filesystems, and it’s possible that EL6’s grub just isn’t new enough. Is there a howto/
    instructions for setting up zfs on CentOS/6 so that it’s available on boot?



  • Grub only needs to know about the filesystems that it uses to boot the system. Mounting of the other file systems including /var is the responsibility of the system that has been booted. I suspect that you have something else wrong if you can’t boot with /var/ on ZFS.

    I may be wrong, but I don’t think so. If grub needed to know about the file systems other than the one it is using to boot, then it would have parameters to describe the other file systems.