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