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