HAMMER2 Is Looking & Performing Good As The Future DragonFlyBSD File-System
With this week DragonFlyBSD seeing HAMMER2 support added to the installer in preparation for this file-system being an option in the next DragonFly release due out in a few weeks, I've been testing out the state of this HAMMER file-system successor as well as running some benchmarks.
DragonFlyBSD founder Matthew Dillon announced the HAMMER2 file-system back in 2012 while he had been working on it since 2011. At the time he didn't think it would be until "well into 2013" before the file-system would become usable. Now in 2017, we are seeing HAMMER2 stepping closer to the spotlight. With the DragonFlyBSD 4.10 release it will be offered as an option via the installer, but it won't be used by default. Additionally, the /boot partition is still defaulting to UFS.
Among the original goals of HAMMER2 over the original HAMMER file-system were to use a copy-on-write block design, support for writable snapshots, support for multiple roots, queueless mirroring, support for multiple compression algorithms, redundancy improvements, and much more. Many of the HAMMER2 features have been implemented from deduplication to LZ4 compression support, but not all is complete yet for this DragonFly file-system.
In recent months we have seen a lot of stabilization work go into DragonFly's HAMMER2 code as well as some optimizations and finishing up some of the remaining items. Compression, snapshots, deduplication, and some clustering features are among the currently operational features. This HAMMER2 design document outlines some of the current and planned features for the HAMMER2 file-system. There's also a TODO list outlining other work that remains for this file-system focused on DragonFlyBSD.
I've been using a daily snapshot of DragonFlyBSD 4.9 development for my testing of HAMMER2. It's been working out fine in my initial testing with no problems. In fact, better than HAMMER(1) in some initial regards like under the original HAMMER often needing to interrupt the testing to run a prune-everything on the system before running out of space while HAMMER2 has just been working smoothly without any issues or kernel problems.
For some initial benchmarks I did run some HAMMER vs. HAMMER2 benchmarks on DragonFlyBSD 4.9 as of this week. Tests were done with a 120GB Intel 600p NVMe SSD on the Intel Xeon E3-1280 v5 Skylake system with 16GB of DDR4 and MSI MS-7998 motherboard. GCC 5.4.1 was the default compiler on DragonFlyBSD 4.9-DEVELOPMENT. DragonFlyBSD 4.9 was reinstalled from the same daily snapshot each time between wiping the disk and targeting HAMMER/HAMMER2. Tests were done using the default mount options.
For those curious how HAMMER2 on DragonFlyBSD compares to ZFS on FreeBSD and then EXT4/XFS/Btrfs on Linux, those benchmarks will be coming in a future article. These disk benchmarks were facilitated in a fully-automated and reproducible manner using the open-source Phoronix Test Suite benchmarking software.