(no commit message)
[ikiwiki.git] / hammer / index.mdwn
1 ## What is HAMMER?
2
3 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.
4
5 ### General details
6 * HAMMER file systems are immediately available after a crash, there is no fsck.
7 * 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).
8 * 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.
9 * 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.
10 * A convenient undo command is provided for single-file history, diffs, and extractions.  Snapshots may be used to access entire directory trees.
11 * Data and meta-data is CRC-checked for integrity.
12
13 ### Snapshots
14 * Snapshots of the file system can be taken at any time, with no limitations.
15 * Snapshots are indexed by the on-media B-Tree and are extremely storage-efficient.
16 * Snapshots are "live", and can be accessed at any time.
17 * Snapshot and historical data retention are controlled through a config file kept in meta-data - no manual maintenance is required for historical files.
18
19 ### Backups and history
20 * 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.
21 * HAMMER PFSs can be backed continuously or in batch to other HAMMER PFSs, on a per-PFS basis.  
22 * Backup PFSs (slaves) are functionally identical to the original (master) and can be promoted to a master.
23 * Slave PFSs (such as stored on backups) can retain file history independent of the master volume, with different administrative parameters for retention.
24 * 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.
25 * Because a non-queued algorithm is used there are no limitations on the number of active mirroring streams from any given source PFS.
26 * Slave-to-slave mirroring streams are supported, allowing mirrors to be chained if desired. 
27  
28 ### General Administrative
29 * ***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.
30 * 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).
31 * Various cleanup directives can be specified manually via [hammer(5)] for situations which do not fit default expectations.
32 * The system cron automatically runs HAMMER cleanup functions at least once a day.
33
34 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.
35
36 ## Documentation
37
38 [[!table  data="""
39 Document|Description
40 [hammer(5)](http://leaf.dragonflybsd.org/cgi/web-man?command=hammer&section=5)|Hammer starter manual page
41 [hammer(8)](http://leaf.dragonflybsd.org/cgi/web-man?command=hammer&section=8)|Hammer utility manual page
42 [undo(1)](http://leaf.dragonflybsd.org/cgi/web-man?command=undo&section=1)|Hammer undo command
43 [hammer.pdf](hammer.pdf)|Hammer major feature document
44 [hammer](http://leaf.dragonflybsd.org/mailarchive/hammer/)|Hammer mailing list - see [[mailing list|mailinglists]] page
45 [NYCBSDCon](/presentations/nycbsdcon08)|Slideshow from NYCBSDCon 11 Oct 2008
46
47 """]]
48
49 More help topics involving HAMMER can be found in the [documentation section](/docs/documentation/) of this website.