HAMMER (file system)
|Introduced||July 21, 2008DragonFly BSD 2.0with|
|Directory contents||Modified B+ tree|
|Max. volume size||1 EiB|
|File system permissions||UNIX permissions|
|Data deduplication||On demand|
|Supported operating systems||DragonFly BSD|
HAMMER is a high-availability 64-bit file system developed by Matthew Dillon for DragonFly BSD using B+ trees. Its major features include infinite NFS-exportable snapshots, master-multislave operation, configurable history retention, fsckless-mount, and checksums to deal with data corruption. HAMMER also supports data block deduplication, meaning that identical data blocks will be stored only once on a file system. A successor, HAMMER2, was announced in 2011 and became the default in Dragonfly 5.2 (April 2018).
HAMMER file system provides configurable fine-grained and coarse-grained filesystem histories with online snapshots availability. Up to 65536 master (read-write) and slave (read-only) pseudo file systems (PFSs), with independent individual retention parameters and inode numbering, may be created for each file system; PFS may be mirrored to multiple slaves both locally or over network connection with near real-time performance. No file system checking is required on remount.
HAMMER supports volumes up to 1 EiB of storage capacity. File system supports CRC checksumming of data and metadata, online layout correction and data deduplication, and dynamic inodes allocation with effectively unlimited number of inodes.
Currently[when?], regular maintenance is required to keep the file system clean and regain space after file deletions. By default, a cron job performs the necessary actions on DragonFly BSD daily. HAMMER does not support multi-master configurations.
The following performance-related improvements were introduced in July 2011:
- Increased disk read speed in certain scenarios by implementing pulse-width modulated time-domain multiplexer on B-tree cursor operation
- Removed a deadlock stalling issue
- Improved read performance during heavy, concurrent file write operations
HAMMER was developed specifically for DragonFly BSD to provide a feature-rich yet better designed analogue of the then increasingly popular ZFS.
As of 2019[update], HAMMER is now often referred to as HAMMER1 to avoid confusion with HAMMER2, although an official renaming hasn't happened. Both filesystems are independent of each other due to different on-disk formats, and continue to receive separate updates and improvements independently.
- "В состав DragonFlyBSD 2.0 будет включена файловая система HAMMER". Linux.org.ru (in Russian). 2007-10-14. Retrieved 2019-08-21.
- Larabel, Michael (7 January 2011). "Can DragonFlyBSD's HAMMER Compete With Btrfs, ZFS?". Phoronix. Retrieved 2014-05-26.
- Dillon, Matthew (21 June 2008). "THE HAMMER FILESYSTEM" (PDF). Retrieved 2009-03-02.
- "HAMMER2 File-System Now Uses LZ4 Compression By Default - Phoronix". www.phoronix.com.
- DragonFly BSD File Formats Manual –
- Sherrill, Justin (7 November 2010). "Deduplication arrives". Retrieved 2011-11-28.
- Dillon, Matthew (11 May 2011). "HAMMER2 announcement". users (Mailing list).
- "HAMMER". DragonFly BSD. Retrieved 2011-11-28.
- Vervloesem, Koen (21 April 2010). "DragonFly BSD 2.6: towards a free clustering operating system". LWN.net. Retrieved 2014-05-26.
- George, Siju (May 2014). "Working with Hammer File System and PFSes" (PDF). BSD Magazine. Warsaw, Poland: Hakin9 Media SK. 8 (5): 18–23. Archived from the original (PDF) on 27 May 2014. Retrieved 2014-05-25.
- DragonFly BSD System Maintenance and Operation Commands Manual –
- Kemp, Juliet (4 August 2008). "Tip of the Trade: Dragonfly BSD and the Hammer Filesystem". ServerWatch. Retrieved 2014-05-26.
- Jeremy Andrews (2007-10-14). "HAMMER Performance". KernelTrap. Retrieved 2019-08-21.
- Dillon, Matthew (22 July 2011). "git: HAMMER VFS - Add code to reduce frontend vs flusher locking conflicts". commits (Mailing list).
- Matthew Dillon (2017-09-23). "hammer_disk.h". BSD Cross Reference. DragonFly BSD. Retrieved 2019-03-06.
- Matthew Dillon (2018-05-05). "hammer2_disk.h". BSD Cross Reference. DragonFly BSD. Retrieved 2019-03-06.
- Matthew Dillon (2017-03-27). "git: hammer - HAMMER Version 7". commits@DragonFly (Mailing list). Retrieved 2019-03-06.