Added dates for 4.0 release
[ikiwiki.git] / hammer / index.mdwn
index b141f13..e930b67 100644 (file)
@@ -1,84 +1,59 @@
-# The HAMMER Filesystem
+## What is HAMMER?
 
-The HAMMER filesystem is a new addition to DragonFly.
-Being a brand-new filesystem we consider HAMMER to be in an early Beta state
-as of the 2.0 release, and expect it to become production-ready by the
-end of 2008.  All major features except the mirroring are quite well tested
-as-of the release.  The mirroring was the last big-ticket item to go in
-prior to the 2.0 release and should be considered more in a late-alpha light.
+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.
 
-Now that it has been released, HAMMER is going to be given some settling
-time through the end of 2008.  We will be testing the waters on porting
-interest and making adjustments to the source files to support that work,
-mainly by wrapping the DragonFly-specific calls and globals used by the 
-filesystem into more OS-specific files and leaving as much of the meat of
-the filesystem as possible as machine-independent code.
+### 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 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
 
-If you are interesting in porting HAMMER to another OS, please drop me (Matthew Dillon)
-a line at **dillon at backplane.com**.
-I will be creating a new DragonFly
-mailing list specifically for HAMMER porting as well as a git or
-mercurial repository (I haven't decided which yet) separate from the
-DragonFly repository.
+### Snapshots
+* Snapshots of the file system can be taken at any time, with no limitations.
+* Snapshots are indexed by the on-media B-Tree and are extremely storage-efficient.
+* Snapshots are "live", and can be accessed at any time.
+* Snapshot and historical data retention are controlled through a config file kept in meta-data - no manual maintenance is required for historical files.
 
-I can't stress enough that HAMMER is designed for large storage media.
-The minimum I would be comfortable with would be around a 40G partition,
-though I often create smaller partitions for testing purposes.
-HAMMER can address up to 1-Exabyte of space and the use target is really
-designed for 500G and up.  What does this mean for people who want to
-use HAMMER on a smaller partition?  Well, there are two issues.  First,
-the filesystem needs to reserve several hundred megabytes of media space
-to serve as buffer space for the reblocker.  If you create a small
-filesystem the space efficiency is not going to be all that good.  More
-importantly, HAMMER recovers space via pruning and reblocking cron jobs
-which early adopters must set up manually and are intended to run a few
-minutes every night to incrementally clean up the filesystem.  You don't
-get instant gratification when you 'rm' something, so if the filesystem
-is too small normal use may run you out of space before the pruning and
-reblocking can catch up.
+### Backups and history
+* 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 can retain file history independent of the master volume's settings.
+* HAMMER can efficiently stream bandwidth-controlled near-real-time backup data to slave PFSs on remote hosts.
+* 1 master PFS can stream backups to any number of slave PFSs.
+* Slave-to-slave mirroring streams are supported, allowing mirrors to be chained together. 
+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.
 
-If you remember only two things about this filesystem, the first should
-be the large-media nature of the filesystem's management functions, and
-the second should be the historical data retention.  Most systems sync
-their mounts every 30-60 seconds.  For HAMMER this means that you effectively
-get a snapshot every 30-60 seconds.  The filesystem's fine-grained nature
-shows up when you use the <strong>hammer</strong> or <strong>undo</strong>
-commands to sift through the history, but the absolute best way to utilize
-the fine-grained nature of the filesystem is to create a cron job 
-which creates a snapshot softlink at the desired interval, for example
-once an hour, using the <strong>hammer snapshot</strong> command.
-Creating an actual softlink via this command guarantees you a consistent
-view of the filesystem state.
 
+## Documentation
 
-## Documentation:
-<table width="100%" cellpadding="3" cellspacing="0" border="1"
-style="border-style: flat; border-collapse: collapse; border-color: #BEBEBE;">
-<tr bgcolor="#ffcc00">
-<th>Document</th><th>Description</th>
-</tr>
+[[!table  data="""
+Document|Description
+[hammer(5)](http://leaf.dragonflybsd.org/cgi/web-man?command=hammer&section=5)|Hammer starter manual page
+[hammer(8)](http://leaf.dragonflybsd.org/cgi/web-man?command=hammer&section=8)|Hammer utility manual page
+[undo(1)](http://leaf.dragonflybsd.org/cgi/web-man?command=undo&section=1)|Hammer undo command
+[hammer.pdf](hammer.pdf)|Hammer major feature document
+[hammer](http://leaf.dragonflybsd.org/mailarchive/hammer/)|Hammer mailing list - see [[mailing list|mailinglists]] page
+[NYCBSDCon](/presentations/nycbsdcon08)|Slideshow from NYCBSDCon 11 Oct 2008
 
-<tr>
-<td valign="top"><a href="http://leaf.dragonflybsd.org/cgi/web-man?command=hammer&section=5">hammer(5)</a></td>
-<td valign="top">Hammer starter manual page</td>
+"""]]
 
-</tr>
+### General Administrative Notes
+* ***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.
 
-<tr>
-<td valign="top"><a href="http://leaf.dragonflybsd.org/cgi/web-man?command=hammer&section=8">hammer(8)</a></td>
-<td valign="top">Hammer utility manual page</td>
-</tr>
+More help topics involving HAMMER can be found in the [documentation section](/docs/documentation/) of this website.
 
-<tr>
-<td valign="top"><a href="hammer.pdf">hammer.pdf</a></td>
-<td valign="top">Hammer major feature document</td>
-</tr>
 
-<tr>
+## HAMMER2
 
-<td valign="top"><a href="/presentations/nycbsdcon08/index">NYCBSDCon</a></td>
-<td valign="top">Slideshow from NYCBSDCon 11 Oct 2008</td>
-</tr>
-
-</table>
+HAMMER2, the successor of HAMMER, is currently being worked on. For more information, you can consult the following ressources:
 
+* [HAMMER2 preliminary design document (2011)](http://apollo.backplane.com/DFlyMisc/hammer2.txt)
+* [Design document for HAMMER2 (08-Feb-2012 update)](http://leaf.dragonflybsd.org/mailarchive/users/2012-02/msg00020.html)