1.\" Copyright (c) 2011-2014 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.Dd August 26, 2015
34.Dt NEWFS_HAMMER2 8
35.Os
36.Sh NAME
37.Nm newfs_hammer2
38.Nd construct a new HAMMER2 file system
39.Sh SYNOPSIS
40.Nm
41.Op Fl f
42.Op Fl b Ar bootsize
43.Op Fl r Ar redosize
44.Op Fl V Ar version
45.Op Fl L Ar label ...
46.Ar special
47.Sh DESCRIPTION
48The
49.Nm
50utility prepares a
51.Nm HAMMER2
52volume on the specified block device.
53.Nm HAMMER2
54volumes can contain any number of named PFSs (Pseudo FileSystems).
55Each named PFS can operate independently or be a constituent of
56of a larger cluster.
57Regardless, you must still format each block device separately using
58this command.
59.Pp
60The
61.Nm
62program always creates a PFS called "LOCAL" which may be used for
63device-specific configuration.  This PFS should never be used for generic
64data.
65.Pp
66If no
67.Fl L
68option is specified,
69.Nm
70will use the partition id to create a default label for you.
71.Bl -tag -width indent
72.It partition 'a'
73"BOOT" is created.
74.It partition 'd'
75"ROOT" is created.
76.It otherwise
77"DATA" is created.
78.El
79.Pp
80You can override the default PFS name by specifying one or more
81.Fl L
82options.
83By default these PFSs all represent unclustered mount points.
84.Pp
85You can specify
86.Fl L Ar none
87if you do not want
88.Nm
89to create any PFSs other than "LOCAL".
90.Pp
91Generally speaking this command is not used to create clusters.  It is used
92to format volumes which are then made available for additional clustering
93commands.
94Once formatted the device@LOCAL volume can be mounted in order to make the
95block device available to the cluster.
96You can then use
97.Xr hammer2 8
98directives to construct your cluster, including the creation of additional
99PFSs within various volumes.
100If you are managing several machines, or a large number of machines,
101.Fl L Ar none
102is typically specified and each machine's ROOT is individually named,
103for example, "FUBAR-ROOT".
104.Pp
105.Nm HAMMER2
106file systems are sector-size agnostic, however the
107.Dx
108implementation requires the sector size to be no larger than 16K.
109.Nm HAMMER2
110file systems start at a relative offset of 0 and leave no room for
111in-band disklabels (old, traditional BSD labels).
112They may only be created using out-of-band disk labels, which is the
113default on
114.Dx
115via
116.Po
117.Xr disklabel 5
118or
119.Xr gpt 8
120labels
121.Pc ,
122or with
123old style disklabels as long as
124the partition does not overlap the label area (have a starting sector
125greater than 16).
126.Pp
127.Nm HAMMER2
128file systems are designed for large storage systems, up to 1 Exabyte, and
129may not operate efficiently on small storage systems.
130The minimum recommended file system size is 50GB.
131In addition,
132.Nm HAMMER2
133file systems operating normally, with automatic snapshots, do not
134immediately reclaim space when files are deleted.
135A regular system maintenance job runs once a day by
136.Xr periodic 8
137to handle reclamation.
138.Pp
139.Nm HAMMER2
140works best when the machine's normal workload would not otherwise fill
141the file system up in the course of 60 days of operation.
142.Pp
143The options are as follows:
144.Bl -tag -width indent
145.It Fl b Ar bootsize
146Specify a fixed area in which a boot related kernel and data can be stored.
147The
148.Ar bootsize
149is specified in bytes.
150By default a boot area of approximately 64MB will be created.
151This area is not currently used for booting and may be repurposed in the
152future.
153.It Fl f
154Force operation.
155This is needed for the creation of a
156.Nm HAMMER2
157file system less than 10GB size or
158with less than 500MB UNDO/REDO FIFO.
159This should not be used under normal circumstances.
160.It Fl r Ar redosize
161Specify the size of the fixed REDO FIFO.
162The
163.Ar redosize
164is specified in bytes.
165By default 0.1% of the root
166volume's size is used, with a reasonable minimum and a reasonable cap.
167The UNDO/REDO FIFO is used to sequence meta-data out to the media for
168instant crash recovery.
169.It Fl V Ar version
170Specify the
171.Nm HAMMER2
172file system version to format.
173By default
174.Nm
175formats the file system using the highest production version number
176supported by the
177.Nm HAMMER2
178VFS by checking the
179.Va vfs.hammer2.supported_version
180sysctl.
181If you need to maintain compatibility with an older version of
182.Nm HAMMER2
183you may specify the version with this option.
184.It Fl L Ar label
185By default
186.Nm
187creates three local master PFSs on the new volume: "LOCAL", "BOOT", and "ROOT".
188If you specify one or more label options
189.Nm
190will not automatically create "BOOT" or "ROOT".
191"LOCAL" is always created and should never be specified.
192If you don't want any extra PFSs to be created, use
193.Fl L Ar none .
194.Pp
195Typically simple HAMMER2 filesystems just use the defaults and
196.Fl L Ar none
197is used for more complex filesystem, followed by mounting device@LOCAL
198and using
199.Nm hammer2
200directives to create the desired cluster.
201.El
202.Pp
203The
204.Ar bootsize
205and
206.Ar redosize
207must be given with a suffix of
208.Cm K , M , G
209or
210.Cm T
211meaning kilobyte, megabyte, gigabyte and terabyte.
212Lower case can also be used for suffix.
213These options create reserved blocks of space on the target volume
214but are not currently used by the filesystem for anything.
215.Sh EXAMPLES
216.Bd -literal -offset indent
217newfs_hammer2 -L SATURN-HOME /dev/ad0s1d
218.Ed
219.Pp
220Create a file system named
221.Sq SATURN-HOME
222on
223.Pa /dev/ad0s1d .
224.Sh DIAGNOSTICS
225Exit status is 0 on success and 1 on error.
226.Sh SEE ALSO
227.Xr disklabel32 5 ,
228.Xr disklabel64 5 ,
229.Xr HAMMER2 5 ,
230.Xr fdisk 8 ,
231.Xr gpt 8 ,
232.Xr newfs 8
233.Sh HISTORY
234The
235.Nm
236utility first appeared in
237.Dx 1.11 .
238.Sh AUTHORS
239.An Matthew Dillon Aq Mt dillon@backplane.com
240