Last week we reported that a native ZFS implementation for Linux is soon being released that is based upon the work by Lawrence Livermore National Laboratory to bring Sun's ZFS file-system to Linux as a CDDL-licensed kernel module. As said though in that article, there is already a ZFS module for FUSE (File-system in User-space) that is already available and with it not living in the GPL-land of the Linux kernel, it is legally allowed, but it does not come without some performance overhead. Over the weekend though there's been some discussions in the related forum thread and elsewhere about the dependability of ZFS-FUSE and what the level of impact on using FUSE really amounts to in real-world usage. We have tested the ZFS-FUSE -- both the latest stable and Git snapshots -- and have compared this alternate ZFS Linux implementation to that of the native EXT4 and Btrfs.
For those not familiar with the GPL-licensed Linux FUSE module, it is a Linux kernel module that has been living within the mainline kernel since the Linux 2.6.14 release and it allows non-privileged users to create their own file-systems in user-space with the FUSE module then providing a bridge to interface with the Linux kernel. FUSE is also available for BSD, OpenSolaris, and Mac OS X operating systems too. With FUSE file-systems living in user-space, they do not need to comply with the GNU GPL since only the FUSE module is loaded against the Linux kernel, but there is an overhead associated with this approach. Besides ZFS-FUSE, there are dozens of other FUSE file-systems including ClamFS, httpFS, ChunkFS, vmware-mount, and GnomeVFS2 FUSE. The most recent release of ZFS-FUSE is version 0.6.9 and is based upon Zpool version 23 (much better than Zpool 18 being used by LLNL/KQ Infotech at this time, with post-18 revisions adding features like de-duplication support) and supports NFS sharing, PowerPC architecture, a multi-threaded ioctl handler, and other improvements. ZFS 0.7.0 is the release presently under development and is expected for release in early October. For our testing of ZFS-FUSE, we used both the latest stable 0.6.9 release and a 0.7.0 Git snapshot as of their latest official code in their Git repository as of 2010-08-28.
KQ Infotech, the company working on a native ZFS module based upon the code of the Lawrence Livermore National Laboratory, has referred to FUSE as "crap." Others have expressed their thoughts that the "performance sucks" and "it's probably nowhere near as robust as a native kernel implementation." There have also been some strong proponents of using FUSE, "In addition, they make some SERIOUS claims against the viability of a fuse-based file-system that are, quite frankly, FALSE. Yes, the zfs-fuse file-system can be slow... on OLD KERNELS. The limitations that these problems are created by have been solved. zfs-fuse, when correctly configured, gives near-platter performance levels! And going through fuse solves the majority of the licensing issues. It's a win-win! And so you have this person coming on the forum here, making crazy claims, not providing any substance, and expect everyone to be amazed? All they're doing is trying to build up hype... for something that is going to tank. Big time." These heated and polarized views on ZFS-FUSE has led us to benchmarking it while we wait being able to test the native ZFS Linux implementation.
The hardware setup for our ZFS-FUSE benchmarking included an Intel Core i7 920 CPU overclocked to 3.60GHz, an ASRock X58 SuperComputer motherboard, 3GB of DDR3 system memory, a 60GB OCZ Vertex 2 SSD, and an ATI Radeon HD 4670 graphics card. For this ZFS-FUSE benchmarking we performed a clean installation of Ubuntu 10.04.1 LTS (x86_64) and installed the latest Linux kernel Git code for Linux 2.6.36 as of 2010-08-26. We set the Phoronix Test Suite to install and run the tests from a second partition on the OCZ Vertex 2 SSD that was tested with EXT4, Btrfs, ZFS-FUSE 0.6.9, and ZFS-FUSE 0.7.0 (Git 2010-08-28). Following that, we installed OpenSolaris b134 to test its native ZFS implementation on this OCZ solid-state drive. The Phoronix Test Suite facilitated all testing.