3 .\" The DragonFly Project. All rights reserved.
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that the following conditions
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\" notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\" notice, this list of conditions and the following disclaimer in
13 .\" the documentation and/or other materials provided with the
15 .\" 3. Neither the name of The DragonFly Project nor the names of its
16 .\" contributors may be used to endorse or promote products derived
17 .\" from this software without specific, prior written permission.
19 .\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 .\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 .\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22 .\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23 .\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24 .\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
25 .\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26 .\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 .\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 .\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
29 .\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 .\" $DragonFly: src/share/man/man5/hammer.5,v 1.9 2008/08/21 23:38:03 thomas Exp $
39 .Nd HAMMER file system
41 To compile this driver into the kernel,
42 place the following line in your
43 kernel configuration file:
44 .Bd -ragged -offset indent
48 Alternatively, to load the driver as a
49 module at boot time, place the following line in
51 .Bd -literal -offset indent
57 .Bd -literal -offset indent
58 /dev/ad0s1d[:/dev/ad1s1d:...] /mnt hammer rw 2 0
63 file system provides facilities to store file system data onto disk devices
64 and is intended to replace UFS as the default file system for
66 Among its features are instant crash recovery,
67 large file systems spanning multiple volumes,
68 fine grained history retention,
69 mirroring capability, and pseudo file systems.
70 For a more detailed introduction refer to the paper listed in the
73 For some common usages of
79 All functions related to managing
81 file systems are provided by the
88 .Ss Instant Crash Recovery
89 After a non-graceful system shutdown,
91 file systems will be brought back into a fully coherent state
92 when mounting the file system, usually within a few seconds.
93 .Ss Large File Systems & Multi Volume
96 file system can span up to 256 volumes.
97 Each volume occupies a
99 disk slice or partition, or another special file,
100 and can be up to 4096 TB in size.
101 For volumes over 2 TB in size
105 normally need to be used.
109 file system uses 64 bit, hexadecimal transaction IDs to refer to historical
110 file or directory data.
114 .Li 0x00000001061a8ba6 .
120 .Ss History & Snapshots
121 History metadata on the media is written with every sync operation, so that
122 by default the resolution of a file's history is 30-60 seconds until the next
124 Prior versions of files or directories are generally accessible by appending
126 and a transaction ID to the name.
127 The common way of accessing history, however, is by taking snapshots.
129 Snapshots are softlinks to prior versions of directories and their files.
130 Their data will be retained across prune operations for as long as the
132 Removing the softlink enables the file system to reclaim the space
133 again upon the next prune & reblock operations.
142 .Ss Pruning & Reblocking
143 Pruning is the act of deleting file system history.
144 Only history used by the given snapshots and history from after the latest
145 snapshot will be retained.
146 All other history is deleted.
147 Reblocking will reorder all elements and thus defragment the file system and
148 free space for reuse.
149 After pruning a file system must be reblocked to recover all available space.
161 .Ss Mirroring & Pseudo File Systems
162 In order to allow inode numbers to be duplicated on the slaves
164 mirroring feature uses
165 .Dq Pseudo File Systems
169 file system supports up to 65535 PFSs.
170 Multiple slaves per master are supported, but multiple masters per slave
172 Slaves are always read-only.
173 Upgrading slaves to masters and downgrading masters to slaves are supported.
188 .Ar mirror-read-stream ,
192 .Ss Preparing the File System
193 To create and mount a
202 file systems must have a unique name on a per-machine basis.
204 newfs_hammer -L Home /dev/ad0s1d
205 mount_hammer /dev/ad0s1d /home
208 Similarly, multi volume file systems can be created and mounted by
209 specifying additional arguments.
211 newfs_hammer -L MultiHome /dev/ad0s1d /dev/ad1s1d
212 mount_hammer /dev/ad0s1d /dev/ad1s1d /home
215 Once created and mounted,
217 file systems need to be reblocked periodically in order not to fill up
218 over time, either manually or with a
221 It is recommended that the
227 options be used for this job;
228 for example, to reblock the
230 file system every night at 2:15 for up to 5 minutes:
232 15 2 * * * hammer -c /var/run/Home -t 300 reblock /home >/dev/null 2>&1
239 command provides several ways of taking snapshots.
240 They all assume a directory where snapshots are kept.
243 hammer snapshot /home /snaps/snap1
244 (...after some changes in /home...)
245 hammer snapshot /home /snaps/snap2
250 point to the state of the
252 directory at the time each snapshot was taken, and could now be used to copy
253 the data somewhere else for backup purposes.
255 A snapshot directory is also the argument to the
258 command which frees historical data from the file system that is not
259 pointed to by any snapshot link and is not from after the latest snapshot.
265 Unless the file system is mounted with the
267 option, it might be advisable to also set up
269 jobs for pruning no longer used historical data regularly.
271 Mirroring can be set up using
274 To associate the slave with the master its shared UUID should be set to
275 the master's shared UUID as output by the
276 .Nm hammer Ar pfs-master
279 hammer pfs-master /home/master
280 hammer pfs-slave /home/slave shared-uuid=<master's shared uuid>
285 link is unusable for as long as no mirroring operation has taken place.
287 To mirror the master's data, either pipe a
291 or, as a short-cut, use the
293 command (which works across a
297 hammer mirror-copy /home/master /home/slave
309 .%T "The HAMMER Filesystem"
314 file system first appeared in
320 file system was designed and implemented by
321 .An Matthew Dillon Aq dillon@backplane.com .
322 This manual page was written by