Can DragonFlyBSD's HAMMER Compete With Btrfs, ZFS?
The most common Linux file-systems we talk about at Phoronix are of course Btrfs and EXT4 while the ZFS file-system, which is available on Linux as a FUSE (user-space) module or via a recent kernel module port, gets mentioned a fair amount too. When it comes to the FreeBSD and PC-BSD operating systems, ZFS is looked upon as the superior, next-generation option that is available to BSD users. However, with the DragonFlyBSD operating system there is another option: HAMMER. In this article we are seeing how the performance of this original creation within the DragonFlyBSD project competes with ZFS, UFS, EXT3, EXT4, and Btrfs.
HAMMER is a file-system created by the DragonFlyBSD developers themselves and is the default choice when installing this BSD operating system, but UFS remains a choice too. The one sentence description about this file-system is that "[HAMMER] provides instant crash recovery, multi-volume file systems, integrity checking, fine grained history/undo, networked mirroring, and historical snapshots." HAMMER uses no fsck, can be sized up to one Exabyte, supports up to 256 volumes of four petabytes in size, coarse-grained history provided by snapshots with up to sixty days history, live snapshot access, and data/meta-data is CRC-checked. Like Btrfs, HAMMER snapshots can be taken at any time, can be accessed live, and boasts a similar set of features. Other HAMMER file-system features include the ability to split it up into multiple pseudo file-systems, there is support for back-up pseudo file-systems, NFS-exportable snapshots, and there is support for slave-to-slave mirroring streams.
The HAMMER file-system has been available since DragonFlyBSD 1.11 while it was made official with DragonFlyBSD 2.0 in 2008. While it's not common for us to benchmark or write about DragonFlyBSD, a request came in recently to benchmark the HAMMER file-system so we found this another good opportunity to test out the latest Phoronix Test Suite 3.0 "Iveland" and OpenBenchmarking.org capabilities. DragonFlyBSD 2.8.2 (the latest release) was benchmarked in both HAMMER and UFS configurations in a stock configuration. PC-BSD was then tested with ZFS and UFS; finally, Ubuntu 10.10 was then run with the EXT3, EXT4, and Btrfs file-systems.
DragonFlyBSD still uses a uni-processor kernel configuration by default and when we had used the SMP kernel atop DragonFlyBSD 2.8.2 (and later also built a x86_64 SMP kernel configuration from the 2.9-development code), the SMP performance under our setup was actually much slower than with its UP kernel. As a result, we used the stock DragonFlyBSD UP kernel and when benchmarking PC-BSD and Ubuntu we disabled the SMP support there.
The test system was a Lenovo ThinkPad T61 notebook with an Intel Core 2 Duo T9300 processor, 4GB of system memory, a 100GB Hitachi HTS72201 SATA HDD, and NVIDIA Quadro NVS 140M graphics. The 64-bit versions of DragonFlyBSD 2.8.2, PC-BSD 8.1, and Ubuntu 10.10 were the operating systems used for this file-system benchmarking.
The disk/file-system tests from the Phoronix Test Suite included BlogBench, Gzip, PostMark, Unpack Linux, and Threaded I/O Tester as they are compatible with both Linux and BSD operating systems.