After reading an article that turned out to be pure gold, namely: A Conversation with Jeff Bonwick and Bill Moore – The future of file systems, I felt a warm glow inside and realised that ZFS seemed to be the best solution currently available for solving a number of current problems, and I wanted to use it.
These two guys work for Sun and have been responsible for designing and implementing the ZFS file system which is incorporated within Sun Solaris. Fortunately, Sun have made it open source, and so it will become available eventually in complete form on other operating systems. Solaris has the only complete implementation currently (March 2nd 2008).
Apple OS X 10.5, AKA Leopard, ships with a read-only implementation of ZFS. They also have an incomplete read/write version available from developer.apple.com for free. I tried the Apple developer version of ZFS, but after a couple of kernel panics, I didn’t need much convincing that it was not ready to be trusted with my data quite yet. However, I chucked a couple of spare SATA disks into the Mac Pro case and experimented a little to whet my appetite.
Also, at the time of writing, FreeBSD 7.0 has an incomplete port available whose status you can see here. But why should I choose an incomplete implementation which has been ported from the real deal (Solaris’ ZFS)? How many bugs were created in the porting process? Apparently they had to change a lot of things in FreeBSD due to the ‘impedance mismatch’. And there will always be some lag between Solaris ZFS fixes/updates, and it being implemented finally in FreeBSD.
Linux seems to have problems with ZFS because it is not released under the GPL licence. However, there is apparently a FUSE version of ZFS available under Linux, albeit with degraded performance.
Then my choice of ZFS implementation was a no-brainer: Sun Solaris, the reference ZFS implementation. Bring it on! 😉
To whet your appetite and help you convince yourself that ZFS is cool and should be used, just take a look at the following resources available here. Check out the videos under the ‘demos’ section and especially take a look at the reasoning that went behind the design of ZFS here: ZFS: The Last Word in File Systems.
When you’ve had a chance to digest all that, you’ll no doubt realise the beauty of ZFS and what makes it so great. To name but a few great features:
- Simple administration
- Ability to create large, redundant data storage pools with one command
- Built-in data scrubbing to enable ZFS to self-heal ‘latent failures’ (bit rot etc)
- Built-in 256-bit checksumming used for every block
- For redundant data pools you choose from mirror, single-parity RAIDZ1 (a la RAID level 5) or double-parity RAIDZ2 (a la RAID level 6)
- Transactional file system to guarantee consistent state of data even when catastrophic failures like power loss occurs
- High availability: data scrubbing can occur without taking the storage offline — unlike ‘fsck’ in Linux
- Is designed upon the assumption that disk hardware should never be trusted, so solid checksumming, transactions are used
- Designed to use cheap, commodity SATA disks, not expensive SAS disks
- RAIDZ1 can survive 1 drive failure, RAIDZ2 can survive 2 drive failures
- Hot spares can be specified when the data pool is created, or added to the data pool later
- Hot spares are used automatically if drive failure is detected
- Data pools can be sent and received, to allow easy replication/migration of data when upgrading disks
- Failed disks can be replaced and substituted with one command (if no hot spares are available)
- Regular snapshots can be made to allow easy file system state rollbacks, or retention of deleted/changed files – they are cheap in storage and fast to perform (uses hard links)
- ZFS data pools can be shared via NFS, Samba/CIFS and iSCSI
- For super valuable data, you can create a ZFS filesystem within a data pool that creates multiple geographically distant copies of the data on the disk, known as ditto blocks: 2 or 3 copies instead of just one
- Sun Solaris OS and ZFS are free and open source
That’s all I could think of for now 🙂 But I think you’ll agree, that’s a pretty impressive feature set.
And then the best thing is that all this is free and it’s open source! Sun Solaris is free, and ZFS is part of Solaris, so is free too. Of course, companies wanting support can buy that in the usual way from Sun, but for enthusiasts who don’t need 24/7 engineer support, it’s free for the taking. Just download it and install. Enjoy 🙂
One company that makes a living selling expensive storage boxes, NetApp is understandably, quite worried about ZFS destroying their lucrative business model selling expensive storage boxes, so they decided to sue Sun when Sun refused to comply with their demands to restrict sales of ZFS solutions. Take a look at the ping pong of public insults here:
- From Sun’s side, read the blog of CEO, Jonathan Schwartz: ZFS Puts Net App Viability at Risk?
- From NetApp’s side, read the blog of CEO, Dave Hitz: NetApp Sues Sun for ZFS Patent Infringement
I don’t know who is ‘right’ here, but all I do know is that NetApp’s Dave Hitz tried to register the legal case in a Texas court well-known to be sympathetic to patent trolls, despite both companies having their headquarters in Silicon Valley, California.
You can read more about that here: Sun sues NetApp, California style. When I last looked, it looked like Sun were ‘winning’ in this row, but I didn’t look recently. You can draw your own conclusions 😉