For many veteran operating-system collectors there comes a point where trying out new operating systems is no longer fun. When there’s work to do, dinking around with the latest and greatest Linux or BSD can be pretty frustrating. Now that they’re all grown up and the exciting times are over, releases tend to be all about refinements and incremental improvements.
ZFS is shaking up an operating system landscape that is all about refinements and incremental improvements.
So, when OpenSolaris was released it seemed like a nice thing for all those Solaris admins who wanted a shiny new free version to play with, but not so relevant to folks with actual work to do. Zettabyte filesystem, however, changed the landscape.
Officially it’s just ZFS now, not Zettabyte. But zettabyte is more fun to say. At any rate, ZFS is very impressive and represents a huge leap past other filesystems on the market. You know, all those filesystem utilities you’ve been relying on all these years? All that fsck, dump, restore, mkfs, tunefs, and their Ext3/JFS/XFS/ReiserFS/UFS counterparts; volume managers like EVM and LVM; raidtools; rysnc; quota; fdisk, and all the rest of the baggage you’ve been forced to lug around just to coax filesystems into a semblance of usefulness — using ZFS means you can dump them all. ZFS was written from the ground up to meet modern needs.
In a nutshell, ZFS provides speed, ease of administration, and data integrity all in one magical package.
In a nutshell, ZFS provides speed, ease of administration, and data integrity all in one magical package. Let’s take a look at how it does this.
ZFS’ scalability is particularly notable. It’s a 128-bit filesystem, which means it has a theoretical upper limit of “16 billion billion times the capacity of 32- or 64-bit systems.” That’s hard to imagine, so how about “fully populating a 128-bit storage pool would, literally, require more energy than boiling the oceans.” So it’s safe to assume ZFS’ capacity is beyond what you will ever need.
ZFS has all sorts of built-in flexibility. No more must we struggle with disk partitions, physical media limitations, inode limits, or managing storage volumes the hard way — volume management is built into ZFS. It creates a common storage pool from which all filesystems can draw.
Traditional filesystems are asynchronous, which means they cache metadata in RAM and wait for slack CPU times to write to disk. XFS takes this delaying strategy a step further and uses delayed allocation; it delays writing to disk as long as possible, so it can figure out the maximum number of contiguous blocks to which to write. As a result, some short-lived files, like temp files, are never actually written to disk. These delay strategies speed up overall performance. Any interruption results in lost metadata, followed by running fsck, which is almost as much fun as watching grass grow. Before journaling filesystems were developed, fsck had to check every single piece of metadata. Journaling filesystems record changes, so only changed files are examined, which speeds things up a lot.
With ZFS you never have to run fsck again, nor do you need the overhead and complexity of journaling, because the filesystem is always in a consistent state. ZFS uses copy on write (COW). This means live data is never overwritten; instead, it writes data to a new block before changing the data pointers and committing the write. Thus, you can pull the plug as much as you want without a care.
And that’s not all COW does; using COW means you can take all manner of instant snapshots (read-only copies) and clones (read/write copies). So backups and rollbacks are dead-easy and fast, and clones provide a space-efficient method of storing copies of shared data, like diskless clients and new client installs.
ZFS also checksums everything, so it’s constantly on the lookout for data corruption. Changes are transactional, so related changes succeed or fail as a whole.
ZFS introduces a new type of RAID, called RAID-Z. ZFS automatically corrects errors in any redundant RAID configuration, and RAID-Z introduces a whole new level of reliability to RAID. RAID-Z eliminates the “write-hole” vulnerability in parity RAID schemes and uses variable stripe sizes for more speed.
Actually Using ZFS
ZFS is scheduled to be added to Solaris 10 some time soon, and it is already available via the OpenSolaris project. If you want to try it out now, download and install OpenSolaris, which runs on both SPARC and x86 platforms. To get an idea of how easy ZFS is to use check out this page of sample commands.
ZFS is just a baby, but a very impressive baby. Future additions include encryption, secure delete, hot swap, and high-availability clustering. It may someday be ported to other platforms, but for now it’s only available on Solaris.
To learn more, we recommend checking out the following: