Alex headshot

AlBlue’s Blog

Macs, Modularity and More

Iomega Ultramax and HFZ vs ZFS

2008, mac, review, zfs

I recently purchased an Iomega Ultramax 1 TB external drive to build a ZFS partition on. The advantage of this model is that it's a triple-interface USB 2.0, FW 400 and FW 800, so I could compare the relative merits of each interface and the performance of the drive in general. In addition, the 1TB is made up of two 0.5TB disks which can be configured as one large disk, two 0.5TB disks, one 0.5TB mirrored array or one 1TB striped disk.

The conclusion is that FW 400 beats USB 2.0 by a significant margin, and that FW 800 (if you have it) gives a marginal edge over FW 400. Anyone who is considering an external drive for Mac use should not seriously consider buying a USB 2.0 drive under any circumstances (not least because of problems with USB drives reported earlier). If you want a mirrored RAID setup, then ZFS is the right way to go. Read on if you want the details.

Testing was done on a PowerMac G5 with 3G of memory and using the Iomega Ultramax as an external drive across the USB 2.0 bus, FW 400 bus, and FW 800 bus. In each case, the drive was connected directly to the computer (no hubs) and System Profiler confirmed that it was using the appropriate speed. Whilst the tests were running, no other processes or applications were running. Tests included XBench 1.3 on the disk test and extracting Eclipse 3.4M6a SDK for Mac from an uncompressed tar file to test write performance and calculating the md5 signature across all files to test read performance. For each interface, tests were run using HFS+ and ZFS on a single disk (JBOD), and in a mirrored (RAID) configuration.

Interface shoot out Interface shoot-out. The results for ZFS and Xbench were questionable, so I'm just comparing HFS+ over the interfaces using a JBOD and RAID approach. Numbers are Xbench disk scores; higher is better. It's not particularly relevant to compare the numbers directly, but rather, the relative performance between the two. Unsurprisingly, FireWire 800 wins as the highest performing interface; but it's not twice the speed of FireWire 400, presumably because the interface can pump data faster than the hard drives can access it. What may be surprising to some is the relatively poor performance of USB 2.0; even though it has a higher rated notional top-speed to FireWire 400, the actual performance seen over the USB is much less than the corresponding FireWire port is. To verify that this wasn't an issue with one machine, the same test was repeated with a PowerBook G4 laptop and the results indicated that the FireWire 400 was about twice as fast as the USB 2.0 was for punting data. In fact, the performance of FireWire 400 with mirrored RAID was faster than accessing the USB 2.0 drive without RAID; it's that noticable a difference. Needless to say, buying a drive with both USB and FireWire is a sensible choice because then you can decide for yourself which is the sensible interface to use.

ZFS vs HFS. These were tested using two different set-ups; one in which the drive was used in a singe-drive mode (aka JBOD), and the other with a mirrored-drive mode (aka RAID). For the HFS RAID case, I used Mac's built-in RAID support to create the mirror; for ZFS, I used ZFS' mirroring capabilities to do the work.

Interface shoot out Given that the Xbench scores were questionable (the numbers indicated a five-fold performance of ZFS over HFS), I used a different metric - timing how long it took to untar an uncompressed version of Eclipse 3.4M6a, which is a 147Mb file untarred (around 170Mb on disk with just over 1000 files), and is a reasonable test of sustained writing. I sourced the tar from a separate disk so that the external enclosure was only writing at the time.

The second chart shows the number of seconds taken to uncompress the file. Needless to say, the RAID approach takes longer to write in both cases, but whilst HFS wins in a single-disk case, ZFS wins with the RAID case. Given the ability for ZFS to repair disks individually (rather than having to fail the whole disk), this is a real benefit over using the standard RAID. Read speeds for HFS were generally slightly faster than ZFS though; in part, because ZFS is checksumming data as it's read back. ZFS can also have compression turned on, which added 10% to the write time; but for largely incompressible files (such as the Jars that make up Eclipse) didn't have a great benefit when it came to reading. A compressed set of documents (blog entries, HTML pages) may fare better.

The Ultramax also has built-in mechanisms to perform RAID-0 (striping) and RAID-1 (mirroring). Using these options provides a way to get faster data transfer; with hardware mirroring, the speed approaches that of the JBOD case regardless of whether ZFS or HFS is used, and with striping, the disk becomes faster still. However, the increase in speed of the disk in the striped case is only noticeable at the FireWire 800 end; for USB it makes little difference, and for FW 400 it is barely detectable. I do not offer charts for these, because I was mainly interested in mirrored RAID performance in this test.

Conclusion. The Ultramax makes for a fine external drive. Given that it has two disks on-board, and that it can be configured from a hardware perspective as JBOD or RAID (mirrored/striped), the hardware can be made to suit your needs. In addition, in order to support either OS RAID or ZFS RAID, each disk needs to be visible to the OS instead of as a single unit, which not all large external disks provide. The disks themselves are SATA Barracuda devices, and should one of these fail then the failed drive can be replaced with a bit of effort (or indeed, upgraded to a larger size later on). There is a (quiet) fan which runs whilst the unit is on; if you're in USB mode, it automatically spins down when there's no connection, but if you're in FireWire mode it stays spinning all the time. The only downside to this unit is that the power brick that comes with it is a figure-of-eight IEC C7 connector instead of the more usual IEC C13 kettle lead, which makes it slightly more difficult to plug into a UPS.

In terms of which FS to use — there's really very little point in not having a mirrored (or better) set-up for storing data. Storage is so cheap (in comparison to the cost of the data) that it makes sense to have data duplicated, even on top of backup strategies. As a result, using the OS RAID or ZFS RAID is a sensible choice. ZFS turned out to have better write performance, whilst the OS turned out to have better read performance. On that metric alone, it would make sense to use the OS — after all, most time is spent reading — however, ZFS provides the ability to perform snapshots and off-site synchronization in a faster and more efficient way than rsync alone. Arguably ZFS on the Mac isn't quite ready for everyone just yet (not the least of which is that you have to install it yourself) but if you're thinking of building a new storage array then it's a fine choice to go with for now. Ultimately, Mac OS X 10.7 may well have ZFS as its default file system — it's likely to be installed on all machines as a read-write option in 10.6, and the latter builds of 10.5 will have read-write installed on them — so it stands you in good stead if you want to use it as an array now. Not only that, but if you want your array to grow in time, you can add new disks to it over time and increase the total storage space instead of having to rebuild a new array, so when disks become multi-terabyte, you'll be able to grow the array as well.

To re-state the conclusions made earlier on; prefer FireWire over USB for any kind of disk access; the faster, the better. Using a mirrored set-up will guarantee against data loss, and although HFS and ZFS don't appear to have much to distinguish them from a performance perspective, using ZFS gives you numerable benefits that HFS won't give you. The Iomega Ultramax gives you all this in a single stylish, low-noise solution.