xref: /dragonfly/sbin/hammer/hammer.8 (revision 0cfebe3d)
1.\" Copyright (c) 2007 The DragonFly Project.  All rights reserved.
2.\"
3.\" This code is derived from software contributed to The DragonFly Project
4.\" by Matthew Dillon <dillon@backplane.com>
5.\"
6.\" Redistribution and use in source and binary forms, with or without
7.\" modification, are permitted provided that the following conditions
8.\" are met:
9.\"
10.\" 1. Redistributions of source code must retain the above copyright
11.\"    notice, this list of conditions and the following disclaimer.
12.\" 2. Redistributions in binary form must reproduce the above copyright
13.\"    notice, this list of conditions and the following disclaimer in
14.\"    the documentation and/or other materials provided with the
15.\"    distribution.
16.\" 3. Neither the name of The DragonFly Project nor the names of its
17.\"    contributors may be used to endorse or promote products derived
18.\"    from this software without specific, prior written permission.
19.\"
20.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
24.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
26.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
30.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31.\" SUCH DAMAGE.
32.\"
33.\" $DragonFly: src/sbin/hammer/hammer.8,v 1.7 2008/02/23 20:55:21 dillon Exp $
34.Dd December 31, 2007
35.Dt HAMMER 8
36.Os
37.Sh NAME
38.Nm hammer
39.Nd HAMMER file system utility
40.Sh SYNOPSIS
41.Nm
42.Op Fl hr
43.Op Fl f Ar blkdev[:blkdev]*
44.Ar command
45.Ar ...
46.Sh DESCRIPTION
47The
48.Nm
49utility provides miscellanious functions related to managing a HAMMER
50filesystem.
51.Pp
52The options are as follows:
53.Bl -tag -width indent
54.It Fl h
55Get help
56.It Fl r
57Specify recursion for those commands which support it.
58.It Fl f Ar blkdev[:blkdev]*
59Specify the volumes making up a HAMMER filesystem.
60.It Fl v
61Increase verboseness.  May be specified multiple times.
62.El
63.Pp
64The commands are as follows:
65.Bl -tag -width indent
66.It Ar now
67Generate a timestamp suitable for use in the @@ filename extension,
68representing right now.
69.It Ar stamp
70Generate a timestamp suitable for use in the @@ filename extension.
71A time specification of
72.Pf yyyymmdd Oo :hhmmss Oc Ns Op .fractional
73specifies an exact as-of timestamp in local (not UTC) time.
74Set the TZ environment variable prior to running
75.Nm
76if you wish to specify the time by some other means.
77.It Ar history Ar path
78Show the modification history for a HAMMER file's inode and data.
79.It Ar show Op vol_no[:clu_no]
80Dump the B-Tree starting at the specified volume and cluster, or
81at the root volume if not specified.
82The B-Tree is dumped recursively if the
83.Fl r
84option is specified.
85.It Ar blockmap
86Dump the btree, record, large-data, and small-data blockmaps, showing
87physical block assignments and free space percentages.
88.It Ar namekey Ar filename
89Generate a HAMMER 64 bit directory hash for the specified file name.
90The low 32 bits are used as an iterator for hash collisions and will be
91output as 0.
92.It Ar namekey32 Ar filename
93Generate the top 32 bits of a HAMMER 64 bit directory hash for the specified
94file name.
95.It Ar prune Ar filesystem Ar from Ar #{smhdMy} Ar to Ar #{smhdMy} Ar every Ar #{smhdMy}
96.It Ar prune Ar filesystem Ar everything
97.It Ar prune Ar filesystem Op Ar using Ar filename
98Prune the filesystem, removing deleted records to free up physical disk
99space.  Specify a time range between the nearest modulo 0 boundary
100and prune the tree to the specified granularity within that range.
101.Pp
102The filesystem specification should be the root of any mounted HAMMER
103filesystem.  This command uses a filesystem ioctl to issue the pruning
104operation.  If you specify just the filesystem with no other parameters
105all prune directives matching that filesystem in the /etc/hammer.conf file
106will be used.  If you specify a
107.Ar using
108file then those directives contained in the file matching
109.Ar filesystem
110will be used.  Multiple directives may be specified when extracting from
111a file.  The directives must be in the same format: "prune ....", in
112ascending time order (per filesystem).  Matching prune elements must not
113have overlapping time specifications.
114.Pp
115Both the "from" and the "to" value must be an integral multiple
116of the "every" value, and the "to" value must be an integral multiple
117of the "from" value.  When you have multiple pruning rules you must
118take care to ensure that the range being pruned does not overlap ranges
119pruned later on, when the retained data is older.  If they do the retained
120data can wind up being destroyed.  For example, if you prune your data
121on a 30 minute granularity for the last 24 hours any later pruning must
122use a granularity that is a multiple of 30 minutes.  If you prune your
123data on a 30 minute boundary, then a 1 day boundary in a later pruning (on
124older data), then a pruning beyond that would have to be a multiple of
1251 day.  And so forth.
126.Pp
127The "prune <filesystem> everything" command will remove all historical records
128from the filesystem.  The long keyword is designed to prevent accidental use.
129This option is not recommended.
130.Pp
131Example: "hammer prune /mnt from 1h to 1d every 30m"
132.El
133.Sh EXAMPLES
134.Sh DIAGNOSTICS
135Exit status is 0 on success and 1 on error.
136.Sh SEE ALSO
137.Xr newfs_hammer 8
138.Sh HISTORY
139The
140.Nm
141utility first appeared in
142.Dx 1.11 .
143.Sh AUTHORS
144.An Matthew Dillon Aq dillon@backplane.com
145