HAMMER (file system)
Developer(s) | Matthew Dillon |
---|---|
Full name | HAMMER |
Introduced | 21 July 2008 with DragonFly BSD 2.0[1]:{{{3}}}[2] |
Structures | |
Directory contents | Modified B+ tree[3] |
Limits | |
Max. volume size | 1 EiB[3] |
Features | |
Forks | No |
File system permissions | UNIX permissions |
Transparent compression | Yes[4] |
Data deduplication | On demand |
Other | |
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.[5] HAMMER also supports data block deduplication, meaning that identical data blocks will be stored only once on a file system.[6] A successor, HAMMER2, was announced in 2011 and became the default in Dragonfly 5.2 (April 2018).[7]
Contents
Features
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.[5][8][9][10]
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.[8][11][12]
Limitations
Currently, 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.[8][10]
Performance
HAMMER is optimised to reduce the number of physical IO operations to cover the most likely path,[13]:{{{3}}} ensuring sequential access for optimal performance.
The following performance-related improvements were introduced on July 2011:[14]
- 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
Development
HAMMER was developed specifically for DragonFly BSD to provide a feature-rich yet better designed analogue of the then increasingly popular ZFS.
HAMMER was declared production-ready with DragonFly 2.2 in 2009;[9] in 2012, design-level work has shifted onto HAMMER2, which was declared stable with DragonFly 5.2 in 2018.
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,[15][16] and continue to receive separate updates and improvements independently.[17]
See also
References
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 3.0 3.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ https://www.phoronix.com/scan.php?page=news_item&px=HAMMER2-LZ4-Default
- ↑ 5.0 5.1 DragonFly File Formats Manual –
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 8.0 8.1 8.2 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 9.0 9.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 10.0 10.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ DragonFly System Maintenance and Operation Commands Manual –
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
External links
- No URL found. Please specify a URL here or add one to Wikidata.