Google Summer of Code 2006

Application proposal


General information

PDF version

Name: Ricardo Manuel da Silva Correia

E-mail Address: rcorreia at wizy org

Project Website: http://www.wizy.org/wiki/ZFS_on_FUSE

Project title

ZFS filesystem for FUSE/Linux

Project goals

The goal of the project is to implement the ZFS filesystem on the FUSE (Filesystem in Userspace) framework in the Linux platform. This project will be implemented in the C language and will be licensed in the CDDL (OSI-approved) license.

ZFS is a modern advanced filesystem from Sun.

Project benefits

This project will make it possible for Linux systems to be more interoperable with Solaris/!OpenSolaris. The Linux operating system has a very large installed base, and if ZFS was available to these users, it would ease the transition to Solaris/!OpenSolaris, if it proved advantageous. DragonFlyBSD and Apple have already announced plans to implement ZFS (for Mac OS X, in the case of Apple), so future interoperability with these systems is expected.

After this project is completed, it will also be easy to use ZFS filesystems in FreeBSD - since it already has an implementation of FUSE, it will be relatively easy to port to it. It will also be possible to port this to FUSE/!OpenSolaris, although the usefulness of that is debatable :)

Project tasks and deliverables

Having in mind the suggestions of ZFS's engineers, this project will be implemented in the following phases:

Determination of the preliminary structure of the project code/modules.

According to the Porting ZFS page, libzpool is a userland port of the SPA (Storage Pool Allocator) and the DMU (Data Management Unit) which consists of about 80% of the ZFS kernel code.

The OpenSolaris ZFS userland <-> kernel interface is currently done with ioctls through a device file (/dev/zfs). Naturally, as this will be a userland filesystem implementation, a new approach is required - the best solution seems to be through a UNIX socket. After this phase is complete, it will be possible to work with and create zpools.

This will have to be implemented from scratch. After this step is complete it will be possible to mount and use ZFS filesystems.

Note: zvols (ZFS volumes), given its arguably limited usefulness, will be implemented only if the effort required will not cause delays. Otherwise, it will only be implemented after the completion of the project.

The final outcome of the project consists in a userspace program that mounts a zpool and all the filesystems inside it in a user-specified directory. The project will also contain the tools necessary to create, change properties and delete filesystems and zpools (both in its simple form and with stripes, mirrors and/or raid-z), create and delete snapshots and clones, as well as check the integrity of all the data inside a zpool (scrubbing). Both files and block devices will be able to be used as vdevs (virtual devices).

Project schedule

Until the end of the (school) semester I can work on this project as if it was a part-time job. In the summer, I can work on it full-time. This is my proposed time schedule. This is only an estimate:

If the project goes according to schedule, I'll use the 2 remaining weeks for thorough QA and performance optimization.

Project limitations

The project will have the following inherent limitations:

Personal statement

I'm currently studying Computer Engineering in Portugal and I'm a software engineer by heart. I've been programming computers since the age of 8, and I'm a long time Linux user. Only recently I've became interested in OpenSolaris and NexentaOS, mostly because of the ZFS filesystem and DTrace. I'm fairly confident I have the skills necessary to implement this project, and I'm very enthusiastic about it (I've been meaning to do it since I've read about ZFS).

After Google Summer of Code 2006 ends, I intend to continue to mantain and improve this project, and when it's considered fully stable, I intend to use it myself in most of my disks (including my root filesystem). I also have some ideas for additional features/tools, but that will have to wait ;)

Questions

WizyWiki: ZFS_on_FUSE/ApplicationProposal (last edited 2009-02-21 00:22:44 by wizeman)