xref: /dflybsd-src/share/man/man5/hammer.5 (revision 0257b9da78e4f35228a80dfd1b1ea36048c9eff4)
15025869bSSascha Wildner.\"
25025869bSSascha Wildner.\" Copyright (c) 2008
35025869bSSascha Wildner.\"	The DragonFly Project.  All rights reserved.
45025869bSSascha Wildner.\"
55025869bSSascha Wildner.\" Redistribution and use in source and binary forms, with or without
65025869bSSascha Wildner.\" modification, are permitted provided that the following conditions
75025869bSSascha Wildner.\" are met:
85025869bSSascha Wildner.\"
95025869bSSascha Wildner.\" 1. Redistributions of source code must retain the above copyright
105025869bSSascha Wildner.\"    notice, this list of conditions and the following disclaimer.
115025869bSSascha Wildner.\" 2. Redistributions in binary form must reproduce the above copyright
125025869bSSascha Wildner.\"    notice, this list of conditions and the following disclaimer in
135025869bSSascha Wildner.\"    the documentation and/or other materials provided with the
145025869bSSascha Wildner.\"    distribution.
155025869bSSascha Wildner.\" 3. Neither the name of The DragonFly Project nor the names of its
165025869bSSascha Wildner.\"    contributors may be used to endorse or promote products derived
175025869bSSascha Wildner.\"    from this software without specific, prior written permission.
185025869bSSascha Wildner.\"
195025869bSSascha Wildner.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
205025869bSSascha Wildner.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
215025869bSSascha Wildner.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
225025869bSSascha Wildner.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
235025869bSSascha Wildner.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
245025869bSSascha Wildner.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
255025869bSSascha Wildner.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
265025869bSSascha Wildner.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
275025869bSSascha Wildner.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
285025869bSSascha Wildner.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
295025869bSSascha Wildner.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
305025869bSSascha Wildner.\" SUCH DAMAGE.
315025869bSSascha Wildner.\"
32*0257b9daSSascha Wildner.\" $DragonFly: src/share/man/man5/hammer.5,v 1.6 2008/07/18 22:54:52 swildner Exp $
335025869bSSascha Wildner.\"
34*0257b9daSSascha Wildner.Dd July 18, 2008
355025869bSSascha Wildner.Os
365025869bSSascha Wildner.Dt HAMMER 5
375025869bSSascha Wildner.Sh NAME
385025869bSSascha Wildner.Nm HAMMER
395025869bSSascha Wildner.Nd HAMMER file system
405025869bSSascha Wildner.Sh SYNOPSIS
41f9f627d2SSascha WildnerTo compile this driver into the kernel,
42f9f627d2SSascha Wildnerplace the following line in your
43f9f627d2SSascha Wildnerkernel configuration file:
44f9f627d2SSascha Wildner.Bd -ragged -offset indent
455025869bSSascha Wildner.Cd options HAMMER
46f9f627d2SSascha Wildner.Ed
47f9f627d2SSascha Wildner.Pp
48f9f627d2SSascha WildnerAlternatively, to load the driver as a
49f9f627d2SSascha Wildnermodule at boot time, place the following line in
50f9f627d2SSascha Wildner.Xr loader.conf 5 :
51f9f627d2SSascha Wildner.Bd -literal -offset indent
52f9f627d2SSascha Wildnerhammer_load="YES"
53f9f627d2SSascha Wildner.Ed
545025869bSSascha Wildner.Pp
55cd8f292bSSascha WildnerTo mount via
565025869bSSascha Wildner.Xr fstab 5 :
57cd8f292bSSascha Wildner.Bd -literal -offset indent
58cd8f292bSSascha Wildner/dev/ad0s1d[:/dev/ad1s1d:...]	/mnt hammer rw 2 0
595025869bSSascha Wildner.Ed
605025869bSSascha Wildner.Sh DESCRIPTION
615025869bSSascha WildnerThe
625025869bSSascha Wildner.Nm
635025869bSSascha Wildnerfile system provides facilities to store file system data onto a disk device
645025869bSSascha Wildnerand is intended to replace UFS as the default file system for
655025869bSSascha Wildner.Dx .
665025869bSSascha WildnerAmong its features are fine grained history retention, file systems spanning
675025869bSSascha Wildnermultiple volumes, mirroring capability, and pseudo file systems.
68*0257b9daSSascha WildnerFor a more detailed introduction, see the paper listed in the
69*0257b9daSSascha Wildner.Sx SEE ALSO
70*0257b9daSSascha Wildnersection.
715025869bSSascha Wildner.Pp
72ab3617eeSSascha WildnerAll functions related to managing
735025869bSSascha Wildner.Nm
74ab3617eeSSascha Wildnerfile systems are provided by the
75ab3617eeSSascha Wildner.Xr newfs_hammer 8 ,
76ab3617eeSSascha Wildner.Xr mount_hammer 8 ,
77ab3617eeSSascha Wildner.Xr hammer 8 ,
785025869bSSascha Wildnerand
795025869bSSascha Wildner.Xr undo 1
805025869bSSascha Wildnerutilities.
815025869bSSascha Wildner.Ss Transaction IDs
825025869bSSascha WildnerThe
835025869bSSascha Wildner.Nm
845025869bSSascha Wildnerfile system uses 64 bit, hexadecimal transaction IDs to refer to historical
855025869bSSascha Wildnerfile or directory data.
865025869bSSascha WildnerAn ID has the format
875025869bSSascha Wildner.Li 0x%016llx ,
885025869bSSascha Wildnersuch as
895025869bSSascha Wildner.Li 0x00000001061a8ba6 .
90*0257b9daSSascha Wildner.Pp
91*0257b9daSSascha WildnerRelated
92*0257b9daSSascha Wildner.Xr hammer 8
93*0257b9daSSascha Wildnercommands:
94*0257b9daSSascha Wildner.Ar synctid
95*0257b9daSSascha Wildner.Ss History
96*0257b9daSSascha WildnerHistory metadata on the media is written with every sync operation.
975025869bSSascha WildnerPrior versions of files or directories are accessible by appending
985025869bSSascha Wildner.Li @@
995025869bSSascha Wildnerand a transaction ID to the name.
1005025869bSSascha Wildner.Ss Snapshots
101e328ac93SSascha WildnerSnapshots are symbolic links to specific versions of directories or files,
102e328ac93SSascha Wildnerprior or current.
103e328ac93SSascha WildnerTheir data will be retained across prune operations for as long as the
104e328ac93SSascha Wildnersymbolic link exists.
1055025869bSSascha WildnerRemoving the symbolic link enables the file system to reclaim the space
106*0257b9daSSascha Wildneragain upon the next reblock operation.
107*0257b9daSSascha Wildner.Pp
108*0257b9daSSascha WildnerRelated
109*0257b9daSSascha Wildner.Xr hammer 8
110*0257b9daSSascha Wildnercommands:
111*0257b9daSSascha Wildner.Ar snapshot
112*0257b9daSSascha Wildner.Ss Reblocking & Pruning
113*0257b9daSSascha WildnerReblocking will reorder all elements and thus defragment the file system and
114*0257b9daSSascha Wildnerfree space for reuse.
115*0257b9daSSascha WildnerPruning a
116*0257b9daSSascha Wildner.Nm
117*0257b9daSSascha Wildnerfile system free all historical records no longer used by any snapshots.
118*0257b9daSSascha Wildner.Pp
119*0257b9daSSascha WildnerRelated
120*0257b9daSSascha Wildner.Xr hammer 8
121*0257b9daSSascha Wildnercommands:
122*0257b9daSSascha Wildner.Ar reblock ,
123*0257b9daSSascha Wildner.Ar reblock-btree ,
124*0257b9daSSascha Wildner.Ar reblock-inodes ,
125*0257b9daSSascha Wildner.Ar reblock-dirs ,
126*0257b9daSSascha Wildner.Ar reblock-data ,
127*0257b9daSSascha Wildner.Ar prune ,
128*0257b9daSSascha Wildner.Ar prune-everything
129*0257b9daSSascha Wildner.Ss Mirroring & Pseudo File Systems
130*0257b9daSSascha WildnerIn order to allow inode numbers to be duplicated on the slaves
131*0257b9daSSascha Wildner.Nm Ap s
132*0257b9daSSascha Wildnermirroring feature uses
133*0257b9daSSascha Wildner.Dq Pseudo File Systems
134*0257b9daSSascha Wildner(PFSs).
135*0257b9daSSascha WildnerA
136*0257b9daSSascha Wildner.Nm
137*0257b9daSSascha Wildnerfile system supports up to 65536 PFSs.
138*0257b9daSSascha WildnerMultiple slaves per master are supported, but multiple masters per slave
139*0257b9daSSascha Wildnerare not.
140*0257b9daSSascha WildnerSlaves are always read-only.
141*0257b9daSSascha WildnerUpgrading slaves to masters and downgrading masters to slaves are supported.
142*0257b9daSSascha Wildner.Pp
143*0257b9daSSascha WildnerRelated
144*0257b9daSSascha Wildner.Xr hammer 8
145*0257b9daSSascha Wildnercommands:
146*0257b9daSSascha Wildner.Ar pfs-master ,
147*0257b9daSSascha Wildner.Ar pfs-slave ,
148*0257b9daSSascha Wildner.Ar pfs-status ,
149*0257b9daSSascha Wildner.Ar pfs-update ,
150*0257b9daSSascha Wildner.Ar pfs-destroy ,
151*0257b9daSSascha Wildner.Ar pfs-upgrade ,
152*0257b9daSSascha Wildner.Ar pfs-downgrade ,
153*0257b9daSSascha Wildner.Ar mirror-copy ,
154*0257b9daSSascha Wildner.Ar mirror-read ,
155*0257b9daSSascha Wildner.Ar mirror-write ,
156*0257b9daSSascha Wildner.Ar mirror-dump
157ab3617eeSSascha Wildner.Sh EXAMPLES
158ab3617eeSSascha Wildner.Ss Preparing the file system
159ab3617eeSSascha WildnerTo create and mount a
160ab3617eeSSascha Wildner.Nm
161ab3617eeSSascha Wildnerfile system use the
162ab3617eeSSascha Wildner.Xr newfs_hammer 8
163ab3617eeSSascha Wildnerand
164ab3617eeSSascha Wildner.Xr mount_hammer 8
165ab3617eeSSascha Wildnercommands.
166ab3617eeSSascha WildnerNote that all
167ab3617eeSSascha Wildner.Nm
168ab3617eeSSascha Wildnerfile systems must have a unique name on a per-machine basis.
169ab3617eeSSascha Wildner.Bd -literal
170ab3617eeSSascha Wildnernewfs_hammer -L Home /dev/ad0s1d
171ab3617eeSSascha Wildnermount_hammer /dev/ad0s1d /home
172ab3617eeSSascha Wildner.Ed
173ab3617eeSSascha Wildner.Pp
174cd8f292bSSascha WildnerSimilarly, multi volume file systems can be created and mounted by
175cd8f292bSSascha Wildnerspecifying additional arguments.
176ab3617eeSSascha Wildner.Bd -literal
177ab3617eeSSascha Wildnernewfs_hammer -L MultiHome /dev/ad0s1d /dev/ad1s1d
178ab3617eeSSascha Wildnermount_hammer /dev/ad0s1d /dev/ad1s1d /home
179ab3617eeSSascha Wildner.Ed
180ab3617eeSSascha Wildner.Pp
181ab3617eeSSascha WildnerOnce created and mounted,
182ab3617eeSSascha Wildner.Nm
183ab3617eeSSascha Wildnerfile systems need to be reblocked periodically in order not to fill up
184ab3617eeSSascha Wildnerover time, either manually or with a
185ab3617eeSSascha Wildner.Xr cron 8
186ab3617eeSSascha Wildnerjob.
187ab3617eeSSascha WildnerIt is recommended that the
188ab3617eeSSascha Wildner.Xr hammer 8
189ab3617eeSSascha Wildnerutility's
190ab3617eeSSascha Wildner.Fl c
191ab3617eeSSascha Wildnerand
192ab3617eeSSascha Wildner.Fl t
193cd8f292bSSascha Wildneroptions be used for this job (for example, every night at 2:15 up to 5
194cd8f292bSSascha Wildnerminutes).
195ab3617eeSSascha Wildner.Bd -literal
196cd8f292bSSascha Wildner15 2 * * * hammer -c /var/run/Home -t 300 reblock /home >/dev/null 2>&1
197ab3617eeSSascha Wildner.Ed
198e328ac93SSascha Wildner.Ss Snapshots
199e328ac93SSascha WildnerThe
200e328ac93SSascha Wildner.Xr hammer 8
201e328ac93SSascha Wildnerutility's
202e328ac93SSascha Wildner.Ar snapshot
203e328ac93SSascha Wildnercommand provides several ways of taking snapshots.
204e328ac93SSascha WildnerThey all assume a directory where snapshots are kept.
205e328ac93SSascha Wildner.Bd -literal
206e328ac93SSascha Wildnermkdir /snaps
207e328ac93SSascha Wildnerhammer snapshot /home /snaps/snap1
208*0257b9daSSascha Wildner(...after some changes in /home...)
209*0257b9daSSascha Wildnerhammer snapshot /home /snaps/snap2
210*0257b9daSSascha Wildner.Ed
211*0257b9daSSascha Wildner.Ss Pruning
212*0257b9daSSascha WildnerA snapshot directory is also the argument to the
213*0257b9daSSascha Wildner.Xr hammer 8 Ap s
214*0257b9daSSascha Wildner.Ar prune
215*0257b9daSSascha Wildnercommand which frees historical data from the file system that is no longer
216*0257b9daSSascha Wildnerpointed to by any snapshot link.
217*0257b9daSSascha Wildner.Bd -literal
218*0257b9daSSascha Wildnerrm /snaps/snap1
219*0257b9daSSascha Wildnerhammer prune /snaps
220*0257b9daSSascha Wildner.Ed
221*0257b9daSSascha Wildner.Pp
222*0257b9daSSascha WildnerUnless the file system is mounted with the
223*0257b9daSSascha Wildner.Ar nohistory
224*0257b9daSSascha Wildneroption, it might be advisable to also set up
225*0257b9daSSascha Wildner.Xr cron 8
226*0257b9daSSascha Wildnerjobs for pruning no longer used historical data regularly.
227*0257b9daSSascha Wildner.Ss Mirroring
228*0257b9daSSascha WildnerMirroring can be set up using
229*0257b9daSSascha Wildner.Nm Ap s
230*0257b9daSSascha Wildnerpseudo file systems.
231*0257b9daSSascha WildnerTo associate the slave with the master its shared UUID should be set to
232*0257b9daSSascha Wildnerthe master's shared UUID as output by the
233*0257b9daSSascha Wildner.Nm hammer Ar pfs-master
234*0257b9daSSascha Wildnercommand.
235*0257b9daSSascha Wildner.Bd -literal
236*0257b9daSSascha Wildnerhammer pfs-master /home/master
237*0257b9daSSascha Wildnerhammer pfs-slave /home/slave shared-uuid=<master's shared uuid>
238*0257b9daSSascha Wildner.Ed
239*0257b9daSSascha Wildner.Pp
240*0257b9daSSascha WildnerThe
241*0257b9daSSascha Wildner.Pa /home/slave
242*0257b9daSSascha Wildnerlink is unusable for as long as no mirroring operation has taken place.
243*0257b9daSSascha Wildner.Pp
244*0257b9daSSascha WildnerTo mirror the master's data, either pipe a
245*0257b9daSSascha Wildner.Fa mirror-read
246*0257b9daSSascha Wildnercommand into a
247*0257b9daSSascha Wildner.Fa mirror-write
248*0257b9daSSascha Wildneror, as a short-cut, use the
249*0257b9daSSascha Wildner.Fa mirror-copy
250*0257b9daSSascha Wildnercommand (which works across a
251*0257b9daSSascha Wildner.Xr ssh 1
252*0257b9daSSascha Wildnerconnection as well).
253*0257b9daSSascha Wildner.Bd -literal
254*0257b9daSSascha Wildnerhammer mirror-copy /home/master /home/slave
255e328ac93SSascha Wildner.Ed
2565025869bSSascha Wildner.Sh SEE ALSO
2575025869bSSascha Wildner.Xr undo 1 ,
2585025869bSSascha Wildner.Xr hammer 8 ,
2595025869bSSascha Wildner.Xr mount_hammer 8 ,
2605025869bSSascha Wildner.Xr newfs_hammer 8
2615025869bSSascha Wildner.Rs
2625025869bSSascha Wildner.%A Matthew Dillon
2635025869bSSascha Wildner.%D June 2008
2645025869bSSascha Wildner.%T "The HAMMER Filesystem"
2655025869bSSascha Wildner.Re
2665025869bSSascha Wildner.Sh HISTORY
2675025869bSSascha WildnerThe
2685025869bSSascha Wildner.Nm
2695025869bSSascha Wildnerfile system first appeared in
2705025869bSSascha Wildner.Dx 1.11 .
2715025869bSSascha Wildner.Sh AUTHORS
2725025869bSSascha Wildner.An -nosplit
2735025869bSSascha WildnerThe
2745025869bSSascha Wildner.Nm
2755025869bSSascha Wildnerfile system was designed and implemented by
2765025869bSSascha Wildner.An Matthew Dillon Aq dillon@backplane.com .
2775025869bSSascha WildnerThis manual page was written by
2785025869bSSascha Wildner.An Sascha Wildner .
279