xref: /dflybsd-src/share/man/man5/hammer.5 (revision a0ed9ee2dee2346c90fd1acef9f5900b3e240c5c)
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.\"
32738141e7SSascha Wildner.\" $DragonFly: src/share/man/man5/hammer.5,v 1.15 2008/11/02 18:56:47 swildner Exp $
335025869bSSascha Wildner.\"
34*a0ed9ee2SThomas Nikolajsen.Dd September 28, 2009
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
634e3c62a3SThomas Nikolajsenfile system provides facilities to store file system data onto disk devices
64738141e7SSascha Wildnerand is intended to replace
65738141e7SSascha Wildner.Xr ffs 5
66738141e7SSascha Wildneras the default file system for
675025869bSSascha Wildner.Dx .
684e3c62a3SThomas NikolajsenAmong its features are instant crash recovery,
694e3c62a3SThomas Nikolajsenlarge file systems spanning multiple volumes,
705329a464SThomas Nikolajsendata integrity checking,
714e3c62a3SThomas Nikolajsenfine grained history retention,
724e3c62a3SThomas Nikolajsenmirroring capability, and pseudo file systems.
735025869bSSascha Wildner.Pp
74ab3617eeSSascha WildnerAll functions related to managing
755025869bSSascha Wildner.Nm
76ab3617eeSSascha Wildnerfile systems are provided by the
77ab3617eeSSascha Wildner.Xr newfs_hammer 8 ,
78ab3617eeSSascha Wildner.Xr mount_hammer 8 ,
79ab3617eeSSascha Wildner.Xr hammer 8 ,
80*a0ed9ee2SThomas Nikolajsen.Xr chflags 1 ,
815025869bSSascha Wildnerand
825025869bSSascha Wildner.Xr undo 1
835025869bSSascha Wildnerutilities.
84738141e7SSascha Wildner.Pp
85738141e7SSascha WildnerFor a more detailed introduction refer to the paper and slides listed in the
86738141e7SSascha Wildner.Sx SEE ALSO
87738141e7SSascha Wildnersection.
88738141e7SSascha WildnerFor some common usages of
89738141e7SSascha Wildner.Nm
90738141e7SSascha Wildnersee the
91738141e7SSascha Wildner.Sx EXAMPLES
92738141e7SSascha Wildnersection below.
93bc7579a1SSascha Wildner.Ss Instant Crash Recovery
94bc7579a1SSascha WildnerAfter a non-graceful system shutdown,
95bc7579a1SSascha Wildner.Nm
96bc7579a1SSascha Wildnerfile systems will be brought back into a fully coherent state
97bc7579a1SSascha Wildnerwhen mounting the file system, usually within a few seconds.
98bc7579a1SSascha Wildner.Ss Large File Systems & Multi Volume
99bc7579a1SSascha WildnerA
100bc7579a1SSascha Wildner.Nm
101*a0ed9ee2SThomas Nikolajsenfile system can be up to 1 Exabyte in size.
102*a0ed9ee2SThomas NikolajsenIt can span up to 256 volumes,
103*a0ed9ee2SThomas Nikolajseneach volume occupies a
104bc7579a1SSascha Wildner.Dx
105bc7579a1SSascha Wildnerdisk slice or partition, or another special file,
106bc7579a1SSascha Wildnerand can be up to 4096 TB in size.
107*a0ed9ee2SThomas NikolajsenMinimum recommended
108*a0ed9ee2SThomas Nikolajsen.Nm
109*a0ed9ee2SThomas Nikolajsenfile system size is 50 GB.
110bc7579a1SSascha WildnerFor volumes over 2 TB in size
111bc7579a1SSascha Wildner.Xr gpt 8
112bc7579a1SSascha Wildnerand
113bc7579a1SSascha Wildner.Xr disklabel64 8
114bc7579a1SSascha Wildnernormally need to be used.
1155329a464SThomas Nikolajsen.Ss Data Integrity Checking
1165329a464SThomas Nikolajsen.Nm
1175329a464SThomas Nikolajsenhas high focus on data integrity,
1185329a464SThomas NikolajsenCRC checks are made for all major structures and data.
1195329a464SThomas Nikolajsen.Nm
1205329a464SThomas Nikolajsensnapshots implements features to make data integrity checking easier:
121*a0ed9ee2SThomas NikolajsenThe atime and mtime fields are locked to the ctime
122*a0ed9ee2SThomas Nikolajsenfor files accessed via a snapshot.
1235329a464SThomas NikolajsenThe
1245329a464SThomas Nikolajsen.Fa st_dev
1255329a464SThomas Nikolajsenfield is based on the PFS
1265329a464SThomas Nikolajsen.Ar shared-uuid
1275329a464SThomas Nikolajsenand not on any real device.
128*a0ed9ee2SThomas NikolajsenThis means that archiving the contents of a snapshot with e.g.\&
1295329a464SThomas Nikolajsen.Xr tar 1
1305329a464SThomas Nikolajsenand piping it to something like
1315329a464SThomas Nikolajsen.Xr md5 1
1325329a464SThomas Nikolajsenwill yield a consistent result.
1335329a464SThomas NikolajsenThe consistency is also retained on mirroring targets.
1345025869bSSascha Wildner.Ss Transaction IDs
1355025869bSSascha WildnerThe
1365025869bSSascha Wildner.Nm
1375025869bSSascha Wildnerfile system uses 64 bit, hexadecimal transaction IDs to refer to historical
1385025869bSSascha Wildnerfile or directory data.
139738141e7SSascha WildnerAn ID has the
140738141e7SSascha Wildner.Xr printf 3
141738141e7SSascha Wildnerformat
142738141e7SSascha Wildner.Li %#016llx ,
1435025869bSSascha Wildnersuch as
1445025869bSSascha Wildner.Li 0x00000001061a8ba6 .
1450257b9daSSascha Wildner.Pp
1460257b9daSSascha WildnerRelated
1470257b9daSSascha Wildner.Xr hammer 8
1480257b9daSSascha Wildnercommands:
149*a0ed9ee2SThomas Nikolajsen.Ar snapshot ,
1500257b9daSSascha Wildner.Ar synctid
151bc7579a1SSascha Wildner.Ss History & Snapshots
152bc7579a1SSascha WildnerHistory metadata on the media is written with every sync operation, so that
153bc7579a1SSascha Wildnerby default the resolution of a file's history is 30-60 seconds until the next
154bc7579a1SSascha Wildnerprune operation.
155bc7579a1SSascha WildnerPrior versions of files or directories are generally accessible by appending
1565025869bSSascha Wildner.Li @@
1575025869bSSascha Wildnerand a transaction ID to the name.
158bc7579a1SSascha WildnerThe common way of accessing history, however, is by taking snapshots.
159bc7579a1SSascha Wildner.Pp
160bc7579a1SSascha WildnerSnapshots are softlinks to prior versions of directories and their files.
161e328ac93SSascha WildnerTheir data will be retained across prune operations for as long as the
162bc7579a1SSascha Wildnersoftlink exists.
163bc7579a1SSascha WildnerRemoving the softlink enables the file system to reclaim the space
164bc7579a1SSascha Wildneragain upon the next prune & reblock operations.
1650257b9daSSascha Wildner.Pp
1660257b9daSSascha WildnerRelated
1670257b9daSSascha Wildner.Xr hammer 8
1680257b9daSSascha Wildnercommands:
169738141e7SSascha Wildner.Ar cleanup ,
170bc7579a1SSascha Wildner.Ar history ,
171f704fe91SThomas Nikolajsen.Ar snapshot ;
172f704fe91SThomas Nikolajsensee also
173f704fe91SThomas Nikolajsen.Xr undo 1
174f704fe91SThomas Nikolajsen.Ss Pruning & Reblocking
175bc7579a1SSascha WildnerPruning is the act of deleting file system history.
176*a0ed9ee2SThomas NikolajsenBy default only history used by the given snapshots
177*a0ed9ee2SThomas Nikolajsenand history from after the latest snapshot will be retained.
178*a0ed9ee2SThomas NikolajsenBy setting the per PFS parameter
179*a0ed9ee2SThomas Nikolajsen.Cm prune-min ,
180*a0ed9ee2SThomas Nikolajsenhistory is guaranteed to be saved at least this time interval.
181bc7579a1SSascha WildnerAll other history is deleted.
182f704fe91SThomas NikolajsenReblocking will reorder all elements and thus defragment the file system and
183f704fe91SThomas Nikolajsenfree space for reuse.
184f704fe91SThomas NikolajsenAfter pruning a file system must be reblocked to recover all available space.
1855329a464SThomas NikolajsenReblocking is needed even when using the
1865329a464SThomas Nikolajsen.Ar nohistory
1875329a464SThomas Nikolajsen.Xr mount_hammer 8
188*a0ed9ee2SThomas Nikolajsenoption or
189*a0ed9ee2SThomas Nikolajsen.Xr chflags 1
190*a0ed9ee2SThomas Nikolajsenflag.
1910257b9daSSascha Wildner.Pp
1920257b9daSSascha WildnerRelated
1930257b9daSSascha Wildner.Xr hammer 8
1940257b9daSSascha Wildnercommands:
195738141e7SSascha Wildner.Ar cleanup ,
196*a0ed9ee2SThomas Nikolajsen.Ar snapshot ,
197738141e7SSascha Wildner.Ar prune ,
198738141e7SSascha Wildner.Ar prune-everything ,
199*a0ed9ee2SThomas Nikolajsen.Ar rebalance ,
2000257b9daSSascha Wildner.Ar reblock ,
2010257b9daSSascha Wildner.Ar reblock-btree ,
2020257b9daSSascha Wildner.Ar reblock-inodes ,
2030257b9daSSascha Wildner.Ar reblock-dirs ,
204738141e7SSascha Wildner.Ar reblock-data
2050257b9daSSascha Wildner.Ss Mirroring & Pseudo File Systems
2060257b9daSSascha WildnerIn order to allow inode numbers to be duplicated on the slaves
2070257b9daSSascha Wildner.Nm Ap s
2080257b9daSSascha Wildnermirroring feature uses
2090257b9daSSascha Wildner.Dq Pseudo File Systems
2100257b9daSSascha Wildner(PFSs).
2110257b9daSSascha WildnerA
2120257b9daSSascha Wildner.Nm
213f704fe91SThomas Nikolajsenfile system supports up to 65535 PFSs.
2140257b9daSSascha WildnerMultiple slaves per master are supported, but multiple masters per slave
2150257b9daSSascha Wildnerare not.
2160257b9daSSascha WildnerSlaves are always read-only.
2170257b9daSSascha WildnerUpgrading slaves to masters and downgrading masters to slaves are supported.
2180257b9daSSascha Wildner.Pp
2195329a464SThomas NikolajsenIt is recommended to use a
2205329a464SThomas Nikolajsen.Nm null
2215329a464SThomas Nikolajsenmount to access a PFS;
2225329a464SThomas Nikolajsenthis way no tools are confused by the PFS root being a symlink
2235329a464SThomas Nikolajsenand inodes not being unique across a
2245329a464SThomas Nikolajsen.Nm
2255329a464SThomas Nikolajsenfile system.
2265329a464SThomas Nikolajsen.Pp
2270257b9daSSascha WildnerRelated
2280257b9daSSascha Wildner.Xr hammer 8
2290257b9daSSascha Wildnercommands:
2300257b9daSSascha Wildner.Ar pfs-master ,
2310257b9daSSascha Wildner.Ar pfs-slave ,
2325329a464SThomas Nikolajsen.Ar pfs-cleanup ,
2330257b9daSSascha Wildner.Ar pfs-status ,
2340257b9daSSascha Wildner.Ar pfs-update ,
2350257b9daSSascha Wildner.Ar pfs-destroy ,
2360257b9daSSascha Wildner.Ar pfs-upgrade ,
2370257b9daSSascha Wildner.Ar pfs-downgrade ,
2380257b9daSSascha Wildner.Ar mirror-copy ,
239f704fe91SThomas Nikolajsen.Ar mirror-stream ,
2400257b9daSSascha Wildner.Ar mirror-read ,
241f704fe91SThomas Nikolajsen.Ar mirror-read-stream ,
2420257b9daSSascha Wildner.Ar mirror-write ,
2430257b9daSSascha Wildner.Ar mirror-dump
2445329a464SThomas Nikolajsen.Ss NFS Export
2455329a464SThomas Nikolajsen.Nm
2465329a464SThomas Nikolajsenfile systems support NFS export.
247cb9cae46SThomas NikolajsenNFS export of PFSs is done using
248cb9cae46SThomas Nikolajsen.Nm null
249738141e7SSascha Wildnermounts.
250738141e7SSascha WildnerFor example, to export the PFS
2515329a464SThomas Nikolajsen.Pa /hammer/pfs/data ,
252738141e7SSascha Wildnercreate a
253cb9cae46SThomas Nikolajsen.Nm null
254cb9cae46SThomas Nikolajsenmount, e.g.\& to
2555329a464SThomas Nikolajsen.Pa /hammer/data
2565329a464SThomas Nikolajsenand export the latter path.
2575329a464SThomas Nikolajsen.Pp
2585329a464SThomas NikolajsenDon't export a directory containing a PFS (e.g.\&
2595329a464SThomas Nikolajsen.Pa /hammer/pfs
2605329a464SThomas Nikolajsenabove).
2615329a464SThomas NikolajsenOnly
2625329a464SThomas Nikolajsen.Nm null
2635329a464SThomas Nikolajsenmount for PFS root
2645329a464SThomas Nikolajsen(e.g.\&
2655329a464SThomas Nikolajsen.Pa /hammer/data
2665329a464SThomas Nikolajsenabove)
2675329a464SThomas Nikolajsenshould be exported
2685329a464SThomas Nikolajsen(subdirectory may be escaped if exported).
269ab3617eeSSascha Wildner.Sh EXAMPLES
2704e3c62a3SThomas Nikolajsen.Ss Preparing the File System
271ab3617eeSSascha WildnerTo create and mount a
272ab3617eeSSascha Wildner.Nm
273ab3617eeSSascha Wildnerfile system use the
274ab3617eeSSascha Wildner.Xr newfs_hammer 8
275ab3617eeSSascha Wildnerand
276ab3617eeSSascha Wildner.Xr mount_hammer 8
277ab3617eeSSascha Wildnercommands.
278ab3617eeSSascha WildnerNote that all
279ab3617eeSSascha Wildner.Nm
280ab3617eeSSascha Wildnerfile systems must have a unique name on a per-machine basis.
2815329a464SThomas Nikolajsen.Bd -literal -offset indent
282738141e7SSascha Wildnernewfs_hammer -L HOME /dev/ad0s1d
283ab3617eeSSascha Wildnermount_hammer /dev/ad0s1d /home
284ab3617eeSSascha Wildner.Ed
285ab3617eeSSascha Wildner.Pp
286cd8f292bSSascha WildnerSimilarly, multi volume file systems can be created and mounted by
287cd8f292bSSascha Wildnerspecifying additional arguments.
2885329a464SThomas Nikolajsen.Bd -literal -offset indent
289738141e7SSascha Wildnernewfs_hammer -L MULTIHOME /dev/ad0s1d /dev/ad1s1d
290ab3617eeSSascha Wildnermount_hammer /dev/ad0s1d /dev/ad1s1d /home
291ab3617eeSSascha Wildner.Ed
292ab3617eeSSascha Wildner.Pp
293ab3617eeSSascha WildnerOnce created and mounted,
294ab3617eeSSascha Wildner.Nm
295e0331f4fSSascha Wildnerfile systems need periodic clean up making snapshots, pruning and reblocking,
2965329a464SThomas Nikolajsenin order to have access to history and file system not to fill up.
2975329a464SThomas NikolajsenFor this it is recommended to use the
2985329a464SThomas Nikolajsen.Xr hammer 8
2995329a464SThomas Nikolajsen.Ar cleanup
300e0331f4fSSascha Wildnermetacommand.
301738141e7SSascha Wildner.Pp
302e0331f4fSSascha WildnerBy default,
303e0331f4fSSascha Wildner.Dx
304e0331f4fSSascha Wildneris set up to run
305e0331f4fSSascha Wildner.Nm hammer Ar cleanup
306e0331f4fSSascha Wildnernightly via
307e0331f4fSSascha Wildner.Xr periodic 8 .
3085329a464SThomas Nikolajsen.Pp
309738141e7SSascha WildnerIt is also possible to perform these operations individually via
310738141e7SSascha Wildner.Xr crontab 5 .
3115329a464SThomas NikolajsenFor example, to reblock the
3124e3c62a3SThomas Nikolajsen.Pa /home
3134e3c62a3SThomas Nikolajsenfile system every night at 2:15 for up to 5 minutes:
3145329a464SThomas Nikolajsen.Bd -literal -offset indent
315738141e7SSascha Wildner15 2 * * * hammer -c /var/run/HOME.reblock -t 300 reblock /home \e
3165329a464SThomas Nikolajsen	>/dev/null 2>&1
317ab3617eeSSascha Wildner.Ed
318e328ac93SSascha Wildner.Ss Snapshots
319e328ac93SSascha WildnerThe
320e328ac93SSascha Wildner.Xr hammer 8
321e328ac93SSascha Wildnerutility's
322e328ac93SSascha Wildner.Ar snapshot
323e328ac93SSascha Wildnercommand provides several ways of taking snapshots.
324e328ac93SSascha WildnerThey all assume a directory where snapshots are kept.
3255329a464SThomas Nikolajsen.Bd -literal -offset indent
326e328ac93SSascha Wildnermkdir /snaps
327e328ac93SSascha Wildnerhammer snapshot /home /snaps/snap1
3280257b9daSSascha Wildner(...after some changes in /home...)
3290257b9daSSascha Wildnerhammer snapshot /home /snaps/snap2
3300257b9daSSascha Wildner.Ed
331bc7579a1SSascha Wildner.Pp
332bc7579a1SSascha WildnerThe softlinks in
333bc7579a1SSascha Wildner.Pa /snaps
334bc7579a1SSascha Wildnerpoint to the state of the
335bc7579a1SSascha Wildner.Pa /home
336bc7579a1SSascha Wildnerdirectory at the time each snapshot was taken, and could now be used to copy
337bc7579a1SSascha Wildnerthe data somewhere else for backup purposes.
338738141e7SSascha Wildner.Pp
339738141e7SSascha WildnerBy default,
340738141e7SSascha Wildner.Dx
341738141e7SSascha Wildneris set up to create nightly snapshots of all
342738141e7SSascha Wildner.Nm
343738141e7SSascha Wildnerfile systems via
344738141e7SSascha Wildner.Xr periodic 8
345738141e7SSascha Wildnerand to keep them for 60 days.
3460257b9daSSascha Wildner.Ss Pruning
3470257b9daSSascha WildnerA snapshot directory is also the argument to the
3480257b9daSSascha Wildner.Xr hammer 8 Ap s
3490257b9daSSascha Wildner.Ar prune
350bc7579a1SSascha Wildnercommand which frees historical data from the file system that is not
351bc7579a1SSascha Wildnerpointed to by any snapshot link and is not from after the latest snapshot.
3525329a464SThomas Nikolajsen.Bd -literal -offset indent
3530257b9daSSascha Wildnerrm /snaps/snap1
3540257b9daSSascha Wildnerhammer prune /snaps
3550257b9daSSascha Wildner.Ed
3560257b9daSSascha Wildner.Ss Mirroring
3570257b9daSSascha WildnerMirroring can be set up using
3580257b9daSSascha Wildner.Nm Ap s
3590257b9daSSascha Wildnerpseudo file systems.
3600257b9daSSascha WildnerTo associate the slave with the master its shared UUID should be set to
3610257b9daSSascha Wildnerthe master's shared UUID as output by the
3620257b9daSSascha Wildner.Nm hammer Ar pfs-master
3630257b9daSSascha Wildnercommand.
3645329a464SThomas Nikolajsen.Bd -literal -offset indent
3655329a464SThomas Nikolajsenhammer pfs-master /home/pfs/master
3665329a464SThomas Nikolajsenhammer pfs-slave /home/pfs/slave shared-uuid=<master's shared uuid>
3670257b9daSSascha Wildner.Ed
3680257b9daSSascha Wildner.Pp
3690257b9daSSascha WildnerThe
370cb9cae46SThomas Nikolajsen.Pa /home/pfs/slave
3710257b9daSSascha Wildnerlink is unusable for as long as no mirroring operation has taken place.
3720257b9daSSascha Wildner.Pp
3730257b9daSSascha WildnerTo mirror the master's data, either pipe a
3740257b9daSSascha Wildner.Fa mirror-read
3750257b9daSSascha Wildnercommand into a
3760257b9daSSascha Wildner.Fa mirror-write
3770257b9daSSascha Wildneror, as a short-cut, use the
3780257b9daSSascha Wildner.Fa mirror-copy
3790257b9daSSascha Wildnercommand (which works across a
3800257b9daSSascha Wildner.Xr ssh 1
3810257b9daSSascha Wildnerconnection as well).
382cb9cae46SThomas NikolajsenInitial mirroring operation has to be done to the PFS path (as
383cb9cae46SThomas Nikolajsen.Xr mount_null 8
384cb9cae46SThomas Nikolajsencan't access it yet).
3855329a464SThomas Nikolajsen.Bd -literal -offset indent
386cb9cae46SThomas Nikolajsenhammer mirror-copy /home/pfs/master /home/pfs/slave
387cb9cae46SThomas Nikolajsen.Ed
388cb9cae46SThomas Nikolajsen.Pp
389cb9cae46SThomas NikolajsenAfter this initial step
390cb9cae46SThomas Nikolajsen.Nm null
391cb9cae46SThomas Nikolajsenmount can be setup for
392cb9cae46SThomas Nikolajsen.Pa /home/pfs/slave .
393cb9cae46SThomas NikolajsenFurther operations can use
394cb9cae46SThomas Nikolajsen.Nm null
395cb9cae46SThomas Nikolajsenmounts.
396cb9cae46SThomas Nikolajsen.Bd -literal -offset indent
397cb9cae46SThomas Nikolajsenmount_null /home/pfs/master /home/master
398cb9cae46SThomas Nikolajsenmount_null /home/pfs/slave /home/slave
399cb9cae46SThomas Nikolajsen
4000257b9daSSascha Wildnerhammer mirror-copy /home/master /home/slave
401e328ac93SSascha Wildner.Ed
4025329a464SThomas Nikolajsen.Ss NFS Export
4035329a464SThomas NikolajsenTo NFS export from the
4045329a464SThomas Nikolajsen.Nm
4055329a464SThomas Nikolajsenfile system
4065329a464SThomas Nikolajsen.Pa /hammer
4075329a464SThomas Nikolajsenthe directory
4085329a464SThomas Nikolajsen.Pa /hammer/non-pfs
4095329a464SThomas Nikolajsenwithout PFSs, and the PFS
4105329a464SThomas Nikolajsen.Pa /hammer/pfs/data ,
4115329a464SThomas Nikolajsenthe latter is null mounted to
4125329a464SThomas Nikolajsen.Pa /hammer/data .
4135329a464SThomas Nikolajsen.Pp
4145329a464SThomas NikolajsenAdd to
4155329a464SThomas Nikolajsen.Pa /etc/fstab
4165329a464SThomas Nikolajsen(see
4175329a464SThomas Nikolajsen.Xr fstab 5 ) :
4185329a464SThomas Nikolajsen.Bd -literal -offset indent
4195329a464SThomas Nikolajsen/hammer/pfs/data /hammer/data null rw
4205329a464SThomas Nikolajsen.Ed
4215329a464SThomas Nikolajsen.Pp
4225329a464SThomas NikolajsenAdd to
4235329a464SThomas Nikolajsen.Pa /etc/exports
4245329a464SThomas Nikolajsen(see
4255329a464SThomas Nikolajsen.Xr exports 5 ) :
4265329a464SThomas Nikolajsen.Bd -literal -offset indent
4275329a464SThomas Nikolajsen/hammer/non-pfs
4285329a464SThomas Nikolajsen/hammer/data
4295329a464SThomas Nikolajsen.Ed
4305025869bSSascha Wildner.Sh SEE ALSO
431*a0ed9ee2SThomas Nikolajsen.Xr chflags 1 ,
4325329a464SThomas Nikolajsen.Xr md5 1 ,
4335329a464SThomas Nikolajsen.Xr tar 1 ,
4345025869bSSascha Wildner.Xr undo 1 ,
435*a0ed9ee2SThomas Nikolajsen.Xr exports 5 ,
436738141e7SSascha Wildner.Xr ffs 5 ,
437*a0ed9ee2SThomas Nikolajsen.Xr fstab 5 ,
4384e3c62a3SThomas Nikolajsen.Xr disklabel64 8 ,
4394e3c62a3SThomas Nikolajsen.Xr gpt 8 ,
4405025869bSSascha Wildner.Xr hammer 8 ,
4415025869bSSascha Wildner.Xr mount_hammer 8 ,
4425329a464SThomas Nikolajsen.Xr mount_null 8 ,
4435025869bSSascha Wildner.Xr newfs_hammer 8
4445025869bSSascha Wildner.Rs
4455025869bSSascha Wildner.%A Matthew Dillon
4465025869bSSascha Wildner.%D June 2008
447738141e7SSascha Wildner.%O http://www.dragonflybsd.org/hammer/hammer.pdf
4485025869bSSascha Wildner.%T "The HAMMER Filesystem"
4495025869bSSascha Wildner.Re
450738141e7SSascha Wildner.Rs
451738141e7SSascha Wildner.%A Matthew Dillon
452738141e7SSascha Wildner.%D October 2008
453738141e7SSascha Wildner.%O http://www.dragonflybsd.org/hammer/nycbsdcon/
454738141e7SSascha Wildner.%T "Slideshow from NYCBSDCon 2008"
455738141e7SSascha Wildner.Re
456eab82c57SMatthew Dillon.Sh FILESYSTEM PERFORMANCE
457eab82c57SMatthew DillonThe
458eab82c57SMatthew Dillon.Nm
459eab82c57SMatthew Dillonfile system has a front-end which processes VNOPS and issues necessary
460eab82c57SMatthew Dillonblock reads from disk, and a back-end which handles meta-data updates
461*a0ed9ee2SThomas Nikolajsenon-media and performs all meta-data write operations.
462*a0ed9ee2SThomas NikolajsenBulk file write operations are handled by the front-end.
463eab82c57SMatthew DillonBecause
464eab82c57SMatthew Dillon.Nm
465eab82c57SMatthew Dillondefers meta-data updates virtually no meta-data read operations will be
466eab82c57SMatthew Dillonissued by the frontend while writing large amounts of data to the file system
467eab82c57SMatthew Dillonor even when creating new files or directories, and even though the
468eab82c57SMatthew Dillonkernel prioritizes reads over writes the fact that writes are cached by
469eab82c57SMatthew Dillonthe drive itself tends to lead to excessive priority given to writes.
470eab82c57SMatthew Dillon.Pp
471*a0ed9ee2SThomas NikolajsenThere are four bioq sysctls, shown below with default values,
472*a0ed9ee2SThomas Nikolajsenwhich can be adjusted to give reads a higher priority:
473eab82c57SMatthew Dillon.Bd -literal -offset indent
474eab82c57SMatthew Dillonkern.bioq_reorder_minor_bytes: 262144
475eab82c57SMatthew Dillonkern.bioq_reorder_burst_bytes: 3000000
476eab82c57SMatthew Dillonkern.bioq_reorder_minor_interval: 5
477eab82c57SMatthew Dillonkern.bioq_reorder_burst_interval: 60
478eab82c57SMatthew Dillon.Ed
479eab82c57SMatthew Dillon.Pp
480eab82c57SMatthew DillonIf a higher read priority is desired it is recommended that the
481eab82c57SMatthew Dillon.Fa kern.bioq_reorder_minor_interval
482eab82c57SMatthew Dillonbe increased to 15, 30, or even 60, and the
483eab82c57SMatthew Dillon.Fa kern.bioq_reorder_burst_bytes
484eab82c57SMatthew Dillonbe decreased to 262144 or 524288.
4855025869bSSascha Wildner.Sh HISTORY
4865025869bSSascha WildnerThe
4875025869bSSascha Wildner.Nm
4885025869bSSascha Wildnerfile system first appeared in
4895025869bSSascha Wildner.Dx 1.11 .
4905025869bSSascha Wildner.Sh AUTHORS
4915025869bSSascha Wildner.An -nosplit
4925025869bSSascha WildnerThe
4935025869bSSascha Wildner.Nm
4945025869bSSascha Wildnerfile system was designed and implemented by
4955025869bSSascha Wildner.An Matthew Dillon Aq dillon@backplane.com .
4965025869bSSascha WildnerThis manual page was written by
4975025869bSSascha Wildner.An Sascha Wildner .
498