Jun
18

Implementing ZFS on FUSE !

What is FUSE ( FIlesystem in USErspace) ?

Best File system award : 2008

Best File system award : 2008

File systemin USErspace, or FUSE, helps to implement a fully functional filesystem in a user space program rather that directly in the Kernel. It is implemented in OSs like Linux, FreeBSD, etc. Its components (as of version 2.7.4) consists of a FUSE kernel module, a FUSE library containing libfuse & libulockmgr, and a special file descriptor like a device file in Linux named /dev/fuse, used for communication between the Kernel module and the userspace library. For user convenience, a program named ‘fusemount’ is provided along with the FUSE package as an easy usermode tool to link up between the user-defined filesystem and the FUSE module.

ZFS on FUSE :

ZFS on FUSE is a project under development by Ricardo Manual da Silve Correir, a computer engineering student, and is sponsored by Google as a part of Summer of Code 2006.  So after completion of this project, ZFS will have a port on the FUSE framework, which effectively will mean operating systems like Linux can use ZFS. A rough performance comparison of ZFS on FUSE with NTFS-3G, XFS and JFS can be found at http://www.csamuel.org/2007/04/25/comparing-ntfs-3g-to-zfs-fuse-for-fuse-performance .

How it works :

The zfs-fuse daemon acts like a server, managing ZFS on the system through the FUSE framework. Every filesystem operation on the mounted ZFS devices from any application will be through the standard C library system calls. This results in calling the kernel’s appropriate  function from the virtual filesystem (VFS) interface, which will then be hooked to the FUSE module through  a special purpose deice named /dev/fuse. This device acts as a bridge between the ZFS implemented and fuse module. The fuse module communicates with the ZFS filesystem implementation through the FUSE library libfuse which has functions similar to that of VFS’s interface. The user program returns results for the filesystem request in the required format through the FUSE framework to the application.

Getting started :

The latest source code of ZFS on FUSE can be downloaded from the project site – www.wizy.org/wiki/ZFS_on_FUSE. It is available in two forms, as a release version packed as a bzip file or directory in source form from the Mercurial repositoriey. Installing from the source requires that we use scons instead of make, though the command and options are almost the same for both. It’s better you read the README and INSTALL files in the source directory before proceeding. Besides, for certian distributions like Gentoo, Debain. Fedora, Ubuntu, ets, zfs-fuse is available via the regular package management system making in the installation much easier. Please use your package manager and search for ” zfs”.

Post to Twitter

3 Comments to “Implementing ZFS on FUSE !”

  • Ivan June 19, 2009 at 1:56 pm

    you guys are doing a great job..

  • Faheem June 19, 2009 at 8:15 pm

    we are always inspired by guys like you :)

  • Nikhil June 20, 2009 at 9:47 pm

    Thnx Ivan.. :)

Post comment

Follow us on Twitter! Follow us on Twitter!

Recent Posts

Subscribe to techinterplay

Get Adobe Flash playerPlugin by wpburn.com wordpress themes