HAMMER is a file system written for DragonFly that provides instant crash recovery, multi-volume file systems, integrity checking, fine grained history/undo, networked mirroring, and historical snapshots. HAMMER is the default file system for DragonFly.

### General details

-* HAMMER file systems are immediately available after a crash, there is no fsck.

-* A single HAMMER file system can be up to 1 exabyte in size, and can encompass up to 256 volumes, each of which can be up to 4 petabytes (4096 terrabytes).

-* HAMMER retains a fine-grained history and the state of the filesystem can be accessed live on 30-60 second boundaries without having to make explicit snapshots, up to a configurable fine-grained retention time.

-* Coarse-grained history is controlled by explicit snapshots. By default the system cron generates one snapshot a day and retains 60 days worth of snapshots. Coarse-grained snapshots can be accessed live.

+* HAMMER file systems are immediately available after a crash. There is no fsck.

+* A single HAMMER file system can be up to 1 exabyte in size, and can encompass up to 256 volumes, each of which can be up to 4 petabytes (4096 terabytes).

+* HAMMER retains a fine-grained history. The state of the filesystem can be accessed live on 30-60 second boundaries without having to make explicit snapshots, up to a configurable fine-grained retention time.

+* Coarse-grained history is controlled by snapshots. By default the system cron generates one snapshot a day and retains 60 days worth. Snapshots can be accessed live.

* A convenient undo command is provided for single-file history, diffs, and extractions. Snapshots may be used to access entire directory trees.

* Data and meta-data is CRC-checked for integrity.

+* Data block deduplication

### Snapshots

* Snapshots of the file system can be taken at any time, with no limitations.

@@ -17,22+18,17 @@ HAMMER is a file system written for DragonFly that provides instant crash recove

* Snapshot and historical data retention are controlled through a config file kept in meta-data - no manual maintenance is required for historical files.

### Backups and history

-* HAMMER file systems can be split up into multiple pseudo-file systems, or PFSs. Each PFS represents its own management domain for snapshots and backups.

-* HAMMER PFSs can be backed continuously or in batch to other HAMMER PFSs, on a per-PFS basis.

+* HAMMER file systems can be split up into multiple pseudo-file systems, or PFSs. Snapshots and backups can be different for each individual PFS.

+* HAMMER PFSs can be backed up continuously or in batch to other HAMMER PFSs, on a per-PFS basis.

* Backup PFSs (slaves) are functionally identical to the original (master) and can be promoted to a master.

-* Slave PFSs (such as stored on backups) can retain file history independent of the master volume, with different administrative parameters for retention.

-* HAMMER provides an efficient streaming mirroring capability using a non-queued algorithm. The streaming mirroring may be used to generate bandwidth-controlled near-real-time backup streams to slave PFSs on remote hosts.

-* Because a non-queued algorithm is used there are no limitations on the number of active mirroring streams from any given source PFS.

-* Slave-to-slave mirroring streams are supported, allowing mirrors to be chained if desired.

+* Slave PFSs can retain file history independent of the master volume's settings.

-* ***HAMMER is designed for use on storage media greater than 50G.*** There are several reasons for this not the least of which being that snapshots and history require significantly different space management than people might be used to. HAMMER also uses a deferred free space recovery mechanic.

-* As mentioned above, by default 60-days worth of snapshots are retained which implies having enough storage that you would not otherwise fill up your disk in that time. Free space will stabilize once the snapshot limit is reached. These parameters are programmable. For example, snapshots are typically turned off on /tmp, /var/tmp, /var/crash, and /usr/obj (each of which is a PFS in a typical DragonFly installation).

-* Various cleanup directives can be specified manually via [hammer(5)] for situations which do not fit default expectations.

-* The system cron automatically runs HAMMER cleanup functions at least once a day.

-

For more details, please read the [hammer(5)](http://leaf.dragonflybsd.org/cgi/web-man?command=hammer&section=5) man page. People interested in porting HAMMER to other operating systems should contact Matthew Dillon at dillon at backplane.com.

+* ***HAMMER is designed for use on storage media greater than 50G.*** Snapshots and history require significantly different space management than usual, and HAMMER will recover space based on each PFS's pruning schedule.

+* By default 60-days worth of snapshots are retained; adjust this based on disk size and activity. Free space will stabilize once the snapshot limit is reached. These parameters are programmable. For example, snapshots are typically turned off on /tmp, /var/tmp, /var/crash, and /usr/obj (each of which is a PFS in a typical DragonFly installation).

+* Various cleanup directives can be specified manually via [hammer(5)](http://leaf.dragonflybsd.org/cgi/web-man?command=hammer&section=5) for situations which do not fit default expectations.

+* The system cron automatically runs HAMMER cleanup functions at least once a day.

+

More help topics involving HAMMER can be found in the [documentation section](/docs/documentation/) of this website.

+

+

+## HAMMER2

+

+HAMMER2, the successor of HAMMER, is under active development since 2012. For more information, you can consult the following resources: