xref: /freebsd/share/man/man4/ffs.4 (revision 1687d77197c01c6ffd5bb233c7a15c6ebb9319af)
1*1687d771SAlexander Ziaee.\" Copyright (c) 2001 Networks Associates Technology, Inc.
2*1687d771SAlexander Ziaee.\" All rights reserved.
3*1687d771SAlexander Ziaee.\"
4*1687d771SAlexander Ziaee.\" This software was developed for the FreeBSD Project by Chris
5*1687d771SAlexander Ziaee.\" Costello at Safeport Network Services and NAI Labs, the Security
6*1687d771SAlexander Ziaee.\" Research Division of Network Associates, Inc. under DARPA/SPAWAR
7*1687d771SAlexander Ziaee.\" contract N66001-01-C-8035 ("CBOSS"), as part of the DARPA CHATS
8*1687d771SAlexander Ziaee.\" research program.
9*1687d771SAlexander Ziaee.\"
10*1687d771SAlexander Ziaee.\" Redistribution and use in source and binary forms, with or without
11*1687d771SAlexander Ziaee.\" modification, are permitted provided that the following conditions
12*1687d771SAlexander Ziaee.\" are met:
13*1687d771SAlexander Ziaee.\" 1. Redistributions of source code must retain the above copyright
14*1687d771SAlexander Ziaee.\"    notice, this list of conditions and the following disclaimer.
15*1687d771SAlexander Ziaee.\" 2. Redistributions in binary form must reproduce the above copyright
16*1687d771SAlexander Ziaee.\"    notice, this list of conditions and the following disclaimer in the
17*1687d771SAlexander Ziaee.\"    documentation and/or other materials provided with the distribution.
18*1687d771SAlexander Ziaee.\"
19*1687d771SAlexander Ziaee.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
20*1687d771SAlexander Ziaee.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21*1687d771SAlexander Ziaee.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22*1687d771SAlexander Ziaee.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
23*1687d771SAlexander Ziaee.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24*1687d771SAlexander Ziaee.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25*1687d771SAlexander Ziaee.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26*1687d771SAlexander Ziaee.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27*1687d771SAlexander Ziaee.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28*1687d771SAlexander Ziaee.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29*1687d771SAlexander Ziaee.\" SUCH DAMAGE.
30*1687d771SAlexander Ziaee.\"
31*1687d771SAlexander Ziaee.Dd May 3, 2020
32*1687d771SAlexander Ziaee.Dt FFS 4
33*1687d771SAlexander Ziaee.Os
34*1687d771SAlexander Ziaee.Sh NAME
35*1687d771SAlexander Ziaee.Nm ffs
36*1687d771SAlexander Ziaee.Nd Berkeley fast file system
37*1687d771SAlexander Ziaee.Sh SYNOPSIS
38*1687d771SAlexander ZiaeeIn the kernel configuration file:
39*1687d771SAlexander Ziaee.Cd "options FFS"
40*1687d771SAlexander Ziaee.Cd "options QUOTA"
41*1687d771SAlexander Ziaee.Cd "options SOFTUPDATES"
42*1687d771SAlexander Ziaee.Cd "options SUIDDIR"
43*1687d771SAlexander Ziaee.Cd "options UFS_ACL"
44*1687d771SAlexander Ziaee.Cd "options UFS_DIRHASH"
45*1687d771SAlexander Ziaee.Cd "options UFS_EXTATTR"
46*1687d771SAlexander Ziaee.Cd "options UFS_EXTATTR_AUTOSTART"
47*1687d771SAlexander Ziaee.Cd "options UFS_GJOURNAL"
48*1687d771SAlexander Ziaee.Pp
49*1687d771SAlexander ZiaeeIn
50*1687d771SAlexander Ziaee.Xr fstab 5 :
51*1687d771SAlexander Ziaee.Bd -literal -compact
52*1687d771SAlexander Ziaee/dev/disk0a	/mnt ufs rw 1 1
53*1687d771SAlexander Ziaee.Ed
54*1687d771SAlexander Ziaee.Sh DESCRIPTION
55*1687d771SAlexander ZiaeeThe Berkeley fast file system
56*1687d771SAlexander Ziaeeprovides facilities to store file system data onto a disk device.
57*1687d771SAlexander Ziaee.Nm
58*1687d771SAlexander Ziaeehas been optimized over the years
59*1687d771SAlexander Ziaeefor speed and reliability
60*1687d771SAlexander Ziaeeand is the default
61*1687d771SAlexander Ziaee.Fx
62*1687d771SAlexander Ziaeefile system.
63*1687d771SAlexander Ziaee.Ss Quotas
64*1687d771SAlexander Ziaee.Bl -tag -width 2n
65*1687d771SAlexander Ziaee.It Cd "options QUOTA"
66*1687d771SAlexander ZiaeeThis option allows system administrators
67*1687d771SAlexander Ziaeeto set limits on disk usage
68*1687d771SAlexander Ziaeeon a per-user basis.
69*1687d771SAlexander ZiaeeQuotas can be used only on file systems
70*1687d771SAlexander Ziaeemounted with the
71*1687d771SAlexander Ziaee.Cm quota
72*1687d771SAlexander Ziaeeoption;
73*1687d771SAlexander Ziaeesee
74*1687d771SAlexander Ziaee.Xr quota 1
75*1687d771SAlexander Ziaeeand
76*1687d771SAlexander Ziaee.Xr edquota 8 .
77*1687d771SAlexander Ziaee.El
78*1687d771SAlexander Ziaee.Ss Soft Updates
79*1687d771SAlexander Ziaee.Bl -tag -width 2n
80*1687d771SAlexander Ziaee.It Cd "options SOFTUPDATES"
81*1687d771SAlexander ZiaeeThe soft updates feature tracks writes to the disk
82*1687d771SAlexander Ziaeeand enforces metadata update dependencies
83*1687d771SAlexander Ziaee(e.g., updating free block maps)
84*1687d771SAlexander Ziaeeto ensure that the file system remains consistent.
85*1687d771SAlexander Ziaee.Pp
86*1687d771SAlexander ZiaeeTo create a new file system with the soft updates
87*1687d771SAlexander Ziaeeenabled,
88*1687d771SAlexander Ziaeeuse
89*1687d771SAlexander Ziaee.Xr newfs 8
90*1687d771SAlexander Ziaeecommand:
91*1687d771SAlexander Ziaee.Pp
92*1687d771SAlexander Ziaee.D1 Nm newfs Fl U Ar fs
93*1687d771SAlexander Ziaee.Pp
94*1687d771SAlexander Ziaee.Ar fs
95*1687d771SAlexander Ziaeecan be either a mount point listed in
96*1687d771SAlexander Ziaee.Xr fstab 5
97*1687d771SAlexander Ziaee.Pq e.g. , Pa /usr ,
98*1687d771SAlexander Ziaeeor a disk device
99*1687d771SAlexander Ziaee.Pq e.g., Pa /dev/da0a .
100*1687d771SAlexander Ziaee.Pp
101*1687d771SAlexander ZiaeeIt is possible to enable soft updates on an
102*1687d771SAlexander Ziaee.Em unmounted
103*1687d771SAlexander Ziaeefile system by using
104*1687d771SAlexander Ziaee.Xr tunefs 8
105*1687d771SAlexander Ziaeecommand:
106*1687d771SAlexander Ziaee.Pp
107*1687d771SAlexander Ziaee.D1 Nm tunefs Fl n Cm enable Ar fs
108*1687d771SAlexander Ziaee.Pp
109*1687d771SAlexander ZiaeeSoft updates can also add journaling that reduces the time spent by
110*1687d771SAlexander Ziaee.Xr fsck_ffs 8
111*1687d771SAlexander Ziaeecleaning up a filesystem after a crash from several minutes to a few seconds.
112*1687d771SAlexander ZiaeeThe journal is placed in an inode named
113*1687d771SAlexander Ziaee.Pa .sujournal ,
114*1687d771SAlexander Ziaeeand is kept as a circular log of segments containing
115*1687d771SAlexander Ziaeerecords that describe metadata operations.
116*1687d771SAlexander Ziaee.Pp
117*1687d771SAlexander ZiaeeTo create a new file system with both the soft updates
118*1687d771SAlexander Ziaeeand soft updates journaling enabled,
119*1687d771SAlexander Ziaeeuse the following command:
120*1687d771SAlexander Ziaee.Pp
121*1687d771SAlexander Ziaee.D1 Nm newfs Fl j Ar fs
122*1687d771SAlexander Ziaee.Pp
123*1687d771SAlexander ZiaeeThis runs
124*1687d771SAlexander Ziaee.Xr tunefs 8
125*1687d771SAlexander Ziaeecommand after
126*1687d771SAlexander Ziaee.Xr newfs 8
127*1687d771SAlexander Ziaeecommand with
128*1687d771SAlexander Ziaee.Fl U
129*1687d771SAlexander Ziaeeflag enabled.
130*1687d771SAlexander ZiaeeIt is possible to enable soft updates journaling on an
131*1687d771SAlexander Ziaee.Em unmounted
132*1687d771SAlexander Ziaeefile system by using
133*1687d771SAlexander Ziaee.Xr tunefs 8
134*1687d771SAlexander Ziaeecommand:
135*1687d771SAlexander Ziaee.Pp
136*1687d771SAlexander Ziaee.D1 Nm tunefs Fl j Cm enable Ar fs
137*1687d771SAlexander Ziaee.Pp
138*1687d771SAlexander ZiaeeThis flag automatically enables the soft updates feature
139*1687d771SAlexander Ziaeewhen it is not enabled.
140*1687d771SAlexander ZiaeeNote that this
141*1687d771SAlexander Ziaee.Xr tunefs 8
142*1687d771SAlexander Ziaeecommand will fail if a file
143*1687d771SAlexander Ziaee.Pa .sujournal
144*1687d771SAlexander Ziaeealready exists before enabling the soft updates journaling.
145*1687d771SAlexander Ziaee.El
146*1687d771SAlexander Ziaee.Ss File Ownership Inheritance
147*1687d771SAlexander Ziaee.Bl -tag -width 2n
148*1687d771SAlexander Ziaee.It Cd "options SUIDDIR"
149*1687d771SAlexander ZiaeeFor use in file sharing environments
150*1687d771SAlexander Ziaeeon networks including
151*1687d771SAlexander Ziaee.Tn "Microsoft Windows"
152*1687d771SAlexander Ziaeeand
153*1687d771SAlexander Ziaee.Tn "Apple Macintosh"
154*1687d771SAlexander Ziaeecomputers,
155*1687d771SAlexander Ziaeethis option allows files on file systems
156*1687d771SAlexander Ziaeemounted with the
157*1687d771SAlexander Ziaee.Cm suiddir
158*1687d771SAlexander Ziaeeoption
159*1687d771SAlexander Ziaeeto inherit the ownership of its directory,
160*1687d771SAlexander Ziaeei.e.,
161*1687d771SAlexander Ziaee.Dq "if it's my directory, it must be my file."
162*1687d771SAlexander Ziaee.El
163*1687d771SAlexander Ziaee.Ss Access Control Lists
164*1687d771SAlexander Ziaee.Bl -tag -width 2n
165*1687d771SAlexander Ziaee.It Cd "options UFS_ACL"
166*1687d771SAlexander ZiaeeAccess control lists allow the association of
167*1687d771SAlexander Ziaeefine-grained discretionary access control information
168*1687d771SAlexander Ziaeewith files and directories.
169*1687d771SAlexander ZiaeeThis option requires the presence of the
170*1687d771SAlexander Ziaee.Dv UFS_EXTATTR
171*1687d771SAlexander Ziaeeoption, and it is recommended that
172*1687d771SAlexander Ziaee.Dv UFS_EXTATTR_AUTOSTART
173*1687d771SAlexander Ziaeeis included as well,
174*1687d771SAlexander Ziaeeso that ACLs are enabled atomically upon mounting the file system.
175*1687d771SAlexander Ziaee.El
176*1687d771SAlexander Ziaee.Pp
177*1687d771SAlexander ZiaeeIn order to enable support for ACLs,
178*1687d771SAlexander Ziaeetwo extended attributes must be available in the
179*1687d771SAlexander Ziaee.Dv EXTATTR_NAMESPACE_SYSTEM
180*1687d771SAlexander Ziaeenamespace:
181*1687d771SAlexander Ziaee.Pa posix1e.acl_access ,
182*1687d771SAlexander Ziaeewhich holds the access ACL,
183*1687d771SAlexander Ziaeeand
184*1687d771SAlexander Ziaee.Pa posix1e.acl_default ,
185*1687d771SAlexander Ziaeewhich holds the default ACL for directories.
186*1687d771SAlexander ZiaeeIf you are using file system extended attributes,
187*1687d771SAlexander Ziaeethe following commands may be used to
188*1687d771SAlexander Ziaeeallocate space for and create the necessary EA backing files
189*1687d771SAlexander Ziaeefor ACLs in the root of each file system.
190*1687d771SAlexander ZiaeeIn these examples, the root file system is used;
191*1687d771SAlexander Ziaeesee
192*1687d771SAlexander Ziaee.Sx "Extended Attributes"
193*1687d771SAlexander Ziaeefor more details.
194*1687d771SAlexander Ziaee.Bd -literal -offset indent
195*1687d771SAlexander Ziaeemkdir -p /.attribute/system
196*1687d771SAlexander Ziaeecd /.attribute/system
197*1687d771SAlexander Ziaeeextattrctl initattr -p / 388 posix1e.acl_access
198*1687d771SAlexander Ziaeeextattrctl initattr -p / 388 posix1e.acl_default
199*1687d771SAlexander Ziaee.Ed
200*1687d771SAlexander Ziaee.Pp
201*1687d771SAlexander ZiaeeOn the next mount of the root file system,
202*1687d771SAlexander Ziaeethe attributes will be automatically started if
203*1687d771SAlexander Ziaee.Dv UFS_EXTATTR_AUTOSTART
204*1687d771SAlexander Ziaeeis included in the kernel configuration,
205*1687d771SAlexander Ziaeeand ACLs will be enabled.
206*1687d771SAlexander Ziaee.Ss Directory Hashing
207*1687d771SAlexander Ziaee.Bl -tag -width 2n
208*1687d771SAlexander Ziaee.It Cd "options UFS_DIRHASH"
209*1687d771SAlexander ZiaeeImplements a hash-based lookup scheme for directories
210*1687d771SAlexander Ziaeein order to speed up accesses to very large directories.
211*1687d771SAlexander Ziaee.El
212*1687d771SAlexander Ziaee.Ss Extended Attributes
213*1687d771SAlexander Ziaee.Bl -tag -width 2n
214*1687d771SAlexander Ziaee.It Cd "options UFS_EXTATTR"
215*1687d771SAlexander ZiaeeExtended attributes allow the association of
216*1687d771SAlexander Ziaeeadditional arbitrary metadata with files and directories,
217*1687d771SAlexander Ziaeewhich can be assigned and retrieved from userland
218*1687d771SAlexander Ziaeeas well as from within the kernel; see
219*1687d771SAlexander Ziaee.Xr extattrctl 8 .
220*1687d771SAlexander Ziaee.It Cd "options UFS_EXTATTR_AUTOSTART"
221*1687d771SAlexander ZiaeeIf this option is defined,
222*1687d771SAlexander Ziaee.Nm
223*1687d771SAlexander Ziaeewill search for a
224*1687d771SAlexander Ziaee.Pa .attribute
225*1687d771SAlexander Ziaeesubdirectory of the file system root during the mount operation.
226*1687d771SAlexander ZiaeeIf found, extended attribute support will be
227*1687d771SAlexander Ziaeeautomatically started for that file system.
228*1687d771SAlexander Ziaee.El
229*1687d771SAlexander Ziaee.Ss GEOM-based Journaling
230*1687d771SAlexander Ziaee.Bl -tag -width 2n
231*1687d771SAlexander Ziaee.It Cd "options UFS_GJOURNAL"
232*1687d771SAlexander ZiaeeImplements a block level journaling of a UFS file system,
233*1687d771SAlexander Ziaeewhich is for both data and metadata.
234*1687d771SAlexander ZiaeeTo enable this,
235*1687d771SAlexander Ziaeecreate a
236*1687d771SAlexander Ziaee.Xr gjournal 8
237*1687d771SAlexander ZiaeeGEOM provider for a block device by using the
238*1687d771SAlexander Ziaeefollowing command:
239*1687d771SAlexander Ziaee.Pp
240*1687d771SAlexander Ziaee.D1 Nm gjournal label Ar da0
241*1687d771SAlexander Ziaee.Pp
242*1687d771SAlexander ZiaeeIn this example,
243*1687d771SAlexander Ziaee.Pa /dev/da0
244*1687d771SAlexander Ziaeeis used as the target block device,
245*1687d771SAlexander Ziaeeand
246*1687d771SAlexander Ziaee.Pa /dev/da0.journal
247*1687d771SAlexander Ziaeeis created.
248*1687d771SAlexander ZiaeeThen create a new file system by using
249*1687d771SAlexander Ziaee.Xr newfs 8
250*1687d771SAlexander Ziaeewith the block level journaling flag and mount it:
251*1687d771SAlexander Ziaee.Pp
252*1687d771SAlexander Ziaee.D1 Nm newfs Fl J Ar /dev/da0.journal
253*1687d771SAlexander Ziaee.D1 Nm mount Fl o Cm async Ar /dev/da0.journal Ar /mnt
254*1687d771SAlexander Ziaee.Pp
255*1687d771SAlexander Ziaee.Cm async
256*1687d771SAlexander Ziaeeoption is not mandatory but recommended for better performance
257*1687d771SAlexander Ziaeebecause the journaling guarantees the consistency of an
258*1687d771SAlexander Ziaee.Cm async
259*1687d771SAlexander Ziaeemount.
260*1687d771SAlexander Ziaee.Pp
261*1687d771SAlexander ZiaeeIt is also possible to enable the block level journaling
262*1687d771SAlexander Ziaeeon an existing file system.
263*1687d771SAlexander ZiaeeTo do so,
264*1687d771SAlexander Ziaeeuse
265*1687d771SAlexander Ziaee.Xr gjournal 8
266*1687d771SAlexander Ziaeeutility to label the underlying block device and
267*1687d771SAlexander Ziaee.Xr tunefs 8
268*1687d771SAlexander Ziaeeutility to enable the block level journaling flag:
269*1687d771SAlexander Ziaee.Pp
270*1687d771SAlexander Ziaee.D1 Nm gjournal label Ar da0
271*1687d771SAlexander Ziaee.D1 Nm tunefs Fl J Cm enable Ar /dev/da0.journal
272*1687d771SAlexander Ziaee.D1 Nm mount Fl o Cm async Ar /dev/da0.journal Ar /mnt
273*1687d771SAlexander Ziaee.El
274*1687d771SAlexander Ziaee.Ss Xr sysctl 8 MIBs
275*1687d771SAlexander ZiaeeThe following
276*1687d771SAlexander Ziaee.Xr sysctl 8
277*1687d771SAlexander ZiaeeMIBs are defined for use with
278*1687d771SAlexander Ziaee.Nm :
279*1687d771SAlexander Ziaee.Bl -hang -width ".Va vfs.ffs.doreallocblk"
280*1687d771SAlexander Ziaee.It Va vfs.ffs.doasyncfree
281*1687d771SAlexander ZiaeeAsynchronously write out modified i-node and indirect blocks
282*1687d771SAlexander Ziaeeupon reallocating file system blocks to be contiguous.
283*1687d771SAlexander Ziaee.Pq Default: 1 .
284*1687d771SAlexander Ziaee.It Va vfs.ffs.doreallocblks
285*1687d771SAlexander ZiaeeEnable support for the rearrangement of blocks
286*1687d771SAlexander Ziaeeto be contiguous.
287*1687d771SAlexander Ziaee.Pq Default: 1 .
288*1687d771SAlexander Ziaee.El
289*1687d771SAlexander Ziaee.Sh HISTORY
290*1687d771SAlexander ZiaeeThe
291*1687d771SAlexander Ziaee.Nm
292*1687d771SAlexander Ziaeemanual page first appeared in
293*1687d771SAlexander Ziaee.Fx 4.5 .
294*1687d771SAlexander Ziaee.Sh SEE ALSO
295*1687d771SAlexander Ziaee.Xr quota 1 ,
296*1687d771SAlexander Ziaee.Xr acl 3 ,
297*1687d771SAlexander Ziaee.Xr extattr 3 ,
298*1687d771SAlexander Ziaee.Xr edquota 8 ,
299*1687d771SAlexander Ziaee.Xr extattrctl 8 ,
300*1687d771SAlexander Ziaee.Xr fsck_ffs 8 ,
301*1687d771SAlexander Ziaee.Xr sysctl 8 ,
302*1687d771SAlexander Ziaee.Xr tunefs 8
303*1687d771SAlexander Ziaee.Rs
304*1687d771SAlexander Ziaee.%A M. McKusick
305*1687d771SAlexander Ziaee.%A W. Joy
306*1687d771SAlexander Ziaee.%A S. Leffler
307*1687d771SAlexander Ziaee.%A R. Fabry
308*1687d771SAlexander Ziaee.%D August 1984
309*1687d771SAlexander Ziaee.%T "A Fast File System for UNIX"
310*1687d771SAlexander Ziaee.%J "ACM Transactions on Computer Systems"
311*1687d771SAlexander Ziaee.%N 2
312*1687d771SAlexander Ziaee.%V 3
313*1687d771SAlexander Ziaee.%P 181-197
314*1687d771SAlexander Ziaee.Re
315*1687d771SAlexander Ziaee.Rs
316*1687d771SAlexander Ziaee.%A M. McKusick
317*1687d771SAlexander Ziaee.%D June 2000
318*1687d771SAlexander Ziaee.%T "Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystem"
319*1687d771SAlexander Ziaee.%J "Proceedings of the Freenix Track at the 1999 Usenix Annual Technical Conference"
320*1687d771SAlexander Ziaee.%P 71-84
321*1687d771SAlexander Ziaee.Re
322*1687d771SAlexander Ziaee.Rs
323*1687d771SAlexander Ziaee.%A M. McKusick
324*1687d771SAlexander Ziaee.%A J. Roberson
325*1687d771SAlexander Ziaee.%D May 2010
326*1687d771SAlexander Ziaee.%T "Journaled Soft-updates"
327*1687d771SAlexander Ziaee.%J "BSD Canada Conference 2010 (BSDCan)"
328*1687d771SAlexander Ziaee.Re
329