OpenSolaris, as I mentioned a couple of weeks back, is dead on its feet. Which is a shame because it contains one or two very nice features. Dtrace is one, but another, perhaps more important one for every day users, is the extremely wonderful ZFS -- a file system that provides simple administration, transactional semantics, end-to-end data integrity and immense scalability. If you've ever tried it I'm sure you'll agree that it's pretty much the dog's bollocks.
ZFS was developed for its UNIX by the good people at Sun, which is now part of the Oracle empire. It's open source software, distributed under Sun's Common Development and Distribution License (CDDL). And therein lies the rub.
Since ZFS is so jolly damn good, it's not unreasonable to suppose you might find it in one or more Linux server operating system distros. However, the CDDL is incompatible with the Linux kernel's GNU General Public License (GPL). That means ZFS can't be ported and distributed as part of the Linux kernel. Of course, ZFS can be used with Linux as a separate userspace file system using FUSE (File system in Userspace) via the ZFS for Linux project, but, as you might expect, users report performance is disappointing.
One possible solution that would enable ZFS to be integrated into the Linux kernel would be for Oracle to change the license under which ZFS is distributed, but don't hold your breath -- this ain't going to happen any time soon. "We have been working on this for some time now and have been strongly urging Sun/Oracle to make a change to the licensing," said Brian Behlendorf, a computer scientist at Lawrence Livermore National Laboratory. "I'm sorry to say we have not yet had any luck."
It's difficult to decide if that's surprising or not. After all, Sun offered ZFS with the CDDL license precisely so that ZFS could not be integrated into the Linux kernel, giving its UNIX an advantage over Linux. In response, Oracle's Chris Mason started the development of BTRfs, a Linux files system that mimics many of the best parts of ZFS, including checksumming, snapshots, and multiple hard drive support and offered it under the GPL. Now Oracle and Sun are on the same side, so to speak -- what does the combined company have in mind for the two file systems?
As it turns out, there are ways around the fact that Sun bequeathed ZFS to the world with the CDDL, Behlendorf explained. "The CDDL does not restrict modification and release of the ZFS source code, which is publicly available as part of OpenSolaris. The ZFS code can be modified to build as a CDDL licensed kernel module, which is not distributed as part of the Linux kernel. This makes a Native ZFS on Linux implementation possible if you are willing to download and build it yourself."
Last week, Behlendorf announced on the zfs-fuse Google group that as part of a joint effort between engineers at Lawrence Livermore National Laboratory and Oracle to get the Lustre massively parallel distributed file system to run on Linux with ZFS support, work is under way to port ZFS natively to the Linux kernel.
As yet Native ZFS for Linux is far from complete, not least because the ZFS Posix Layer has not been ported to Linux, making it impossible to mount ZFS volumes. However, Behlendorf said that others are working on the ZPL so "it is on the way." It's aimed only at 64-bit platforms, since that's the target for Lustre, and it's been tested on only a handful of platforms including Red Hat Enterprise Linux 5 and 6 (beta) Fedora 12, Chaos 4 and 5, Gentoo, and (with mixed success) Ubuntu 10.04.
It's certainly early days for Native ZFS for Linux, and producing it as a separate kernel module is not an ideal solution -- if it ever happens. But ZFS is certainly relatively mature and well tested (in comparison with BTRfs at least), so Behlendorf's work is to be applauded. OpenSolaris may be dying, but ZFS lives on. You can use it now with Solaris and FreeBSD, and thanks to the work of the likes of Behlendorf, it may soon be starring on a Linux server near you.
Paul Rubens is a journalist based in Marlow on Thames, England. He has been programming, tinkering and generally sitting in front of computer screens since his first encounter with a DEC PDP-11 in 1979.