Messing with USB Keys: ZFS Fun and Shenanigans

In the quest to sate my curiosity of the viability of ZFS for replacing hardware RAIDs I gathered a few extra USB keys that were lying around my office in hopes to see just how much of a difference in terms of numbers one can find between a single USB key, a software RAIDed set and the new Zettabyte file system (ZFS) that will be more predominantly shown in Snow Leopard.

I used two identical Kingston DataTraveler 2.0 Media DTI/1GB keys. Key 1 reports 980MB, whereas Key 2 reports 984MB. I had originally 4 keys lined up to use, but the two other keys I had would not format. I am unsure why there is such a difference in reported size, and the two keys that wouldn’t format would both report 970MB.

Because ZFS is a software RAID I was comparing it to the software RAIDs created by Apple’s Disk Utility (Version 11.1 in Mac OS X Leopard 10.5.5). The ZFS installation was the 119 release that was put on MacOSForge on July 23rd, 2008 and is still very much under development as the Mac OS X port isn’t even complete yet.

All test performed using QuickBench’s Standard Test, which is a test that transfers several small files ranging from 4KB to 1MB:

Single DriveRAID 0RAID 1RAID
Concatenation
ZFS
Sequential Read Speed: 11.394 18.487 11.556 11.024 360.927
Sequential Write Speed: 3.386 6.090 3.431 3.750 258.036
Random Read Speed: 11.159 18.167 11.416 10.963 220.398
Random Write Speed: 0.741 0.593 0.608 0.637 423.246
All speeds in MB/sec

Given the insane speed increase seen by ZFS (which I assume is greatly improved by it’s ability to use compression reducing the amount of I/O work) which makes the test sound horribly flawed I redid the test using the Extended Test in QuickBench 4.0.

Extended Test (20-100MB)

Single DriveRAID 0ZFS
Read Speed: 13.892 27.288 65.964
Write Speed: 5.396 9.954 202.043

In this second test we were again getting wildly fast results that didn’t fit with reality - the files divisible by 30 were wildly faster than any other result.

Lastly a very simple copy using the command line copy:

date +%s; cp ~/Desktop/Reverie_Final_Cut2_midres.m4v DESTINATION; date +%s

As a baseline a simply copy on my 5400RPM drive in the MacBook Pro this was done on takes 11 seconds.

Single DriveRAID 0ZFS
Time (seconds): 37 22 11
Measured in seconds. 3 trials averaged.

Caveats: The RAID 1 copy trials ranged from 13 seconds (subsequent trials) to as much as 39 seconds (the first copy). While ZFS was 11 seconds each and every time. Also the commands used are going to be imprecise - if I wanted it to be more accurate instead of easily out by as much as 1 second I would have used the time command.

As a continuation of a more consistent test we then copied a 903MB file (Xcode 2.5) and a folder of of 1500 0 byte files numerically named.

date +%s; cp ~/Desktop/SpeedTest/xcode.dmg DESTINATION; date +%s;
cp ~/Desktop/SpeedTest/*.txt DESTINATION; date +%s

Single DriveRAID 0ZFS
Large File Time: 4:13 2:40 3:10
Small File Time: 0:03 0:01 0:01
Measured in seconds. 3 trials averaged.

So what does this all mean? From the first two tests we can see that ZFS does improve throughput but our standard QuickBench tests aren’t any help of determining how much because of ZFS’ difference in dealing with files giving us consistent odd results. The more practical test of copying an H.264 file and the large file with many small files gave us inconsistent results. There isn’t anything concrete in my non-scientific results but I’m looking forward to Snow Leopard being released and ZFS becoming a full fledged filesystem citizen in the Mac OS - if only because with maturity ZFS might be a faster option for a RAID system.

Tomorrow the same file copying tests will be performed on a 5TB RAID connected to the computer via eSATA for kicks.