FFS(4)
πΈ NAME πΈ
ffs, ufs β Berkeley fast file system. okay so yes bestie, this is the FFS(4) page from the kernel interfaces manual, and it is genuinely giving iconic filesystem main-character energy π
β¨
β¨ SYNOPSIS β¨
In the kernel configuration file, you drop these in:
options FFS
options QUOTA
options SOFTUPDATES
options SUIDDIR
options UFS_ACL
options UFS_DIRHASH
options UFS_EXTATTR
options UFS_EXTATTR_AUTOSTART
options UFS_GJOURNAL
And in fstab(5), it looks like this:
/dev/disk0a /mnt ufs rw 1 1
π DESCRIPTION π
The Berkeley fast file system provides facilities to store file system data onto a disk device. ffs has been optimized over the years for speed and reliability, and it is the default FreeBSD file system. slay, honestly π₯
π Quotas π
options QUOTAβ this option lets system administrators set limits on disk usage on a per-user basis. Quotas can be used only on file systems mounted with thequotaoption; seequota(1)andedquota(8).
π Soft Updates π
options SOFTUPDATESβ the soft updates feature tracks writes to the disk and enforces metadata update dependencies (e.g., updating free block maps) to ensure that the file system remains consistent.
To create a new file system with soft updates enabled, use the newfs(8) command:
newfs -U fs
fs can be either a mount point listed in fstab(5) (e.g., /usr), or a disk device (e.g., /dev/da0a).
It is possible to enable soft updates on an unmounted file system by using the tunefs(8) command:
tunefs -n enable fs
Soft updates can also add journaling that reduces the time spent by fsck_ffs(8) cleaning up a filesystem after a crash from several minutes to a few seconds. The journal is placed in an inode named .sujournal, and is kept as a circular log of segments containing records that describe metadata operations.
To create a new file system with both soft updates and soft updates journaling enabled, use the following command:
newfs -j fs
This runs tunefs(8) after newfs(8) with the -U flag enabled. It is possible to enable soft updates journaling on an unmounted file system by using the tunefs(8) command:
tunefs -j enable fs
This flag automatically enables the soft updates feature when it is not enabled.
bestie, heads up: thistunefs(8)command will fail if a file.sujournalalready exists before enabling the soft updates journaling. no cap, that's the rule π
π«Ά File Ownership Inheritance π«Ά
options SUIDDIRβ for use in file sharing environments on networks including Microsoft Windows and Apple Macintosh computers, this option allows files on file systems mounted with thesuiddiroption to inherit the ownership of its directory, i.e., βif it's my directory, it must be my file.β
π Access Control Lists π
options UFS_ACLβ access control lists allow the association of fine-grained discretionary access control information with files and directories. This option requires the presence of theUFS_EXTATTRoption, and it is recommended thatUFS_EXTATTR_AUTOSTARTis included as well, so that ACLs are enabled atomically upon mounting the file system.
In order to enable support for ACLs, two extended attributes must be available in the EXTATTR_NAMESPACE_SYSTEM namespace: posix1e.acl_access, which holds the access ACL, and posix1e.acl_default, which holds the default ACL for directories. If you are using file system extended attributes, the following commands may be used to allocate space for and create the necessary EA backing files for ACLs in the root of each file system. In these examples, the root file system is used; see βExtended Attributesβ for more details.
mkdir -p /.attribute/system
cd /.attribute/system
extattrctl initattr -p / 388 posix1e.acl_access
extattrctl initattr -p / 388 posix1e.acl_default
On the next mount of the root file system, the attributes will be automatically started if UFS_EXTATTR_AUTOSTART is included in the kernel configuration, and ACLs will be enabled. cute, automatic, iconic β¨
π§ Directory Hashing π§
options UFS_DIRHASHβ implements a hash-based lookup scheme for directories in order to speed up accesses to very large directories.
π§Έ Extended Attributes π§Έ
options UFS_EXTATTRβ extended attributes allow the association of additional arbitrary metadata with files and directories, which can be assigned and retrieved from userland as well as from within the kernel; seeextattrctl(8).options UFS_EXTATTR_AUTOSTARTβ if this option is defined,ffswill search for a.attributesubdirectory of the file system root during the mount operation. If found, extended attribute support will be automatically started for that file system.
π₯ GEOM-based Journaling π₯
options UFS_GJOURNALβ implements a block level journaling of a UFS file system, which is for both data and metadata. To enable this, create agjournal(8)GEOM provider for a block device by using the following command:
gjournal label da0
In this example, /dev/da0 is used as the target block device, and /dev/da0.journal is created. Then create a new file system by using newfs(8) with the block level journaling flag and mount it:
newfs -J /dev/da0.journal
mount -o async /dev/da0.journal /mnt
async option is not mandatory but recommended for better performance because the journaling guarantees the consistency of an async mount. lowkey a glow-up for performance π
It is also possible to enable the block level journaling on an existing file system. To do so, use gjournal(8) utility to label the underlying block device and tunefs(8) utility to enable the block level journaling flag:
gjournal label da0
tunefs -J enable /dev/da0.journal
mount -o async /dev/da0.journal /mnt
β sysctl(8) MIBs β
The following sysctl(8) MIBs are defined for use with ffs:
vfs.ffs.doasyncfreeβ Asynchronously write out modified i-node and indirect blocks upon reallocating file system blocks to be contiguous. (Default: 1).vfs.ffs.doreallocblksβ Enable support for the rearrangement of blocks to be contiguous. (Default: 1).vfs.ffs.prttimechgsβ Print a console message when timestamps for UFS1 filesystems are found to be in the future and are changed to be the present time. (Default: 0).
π HISTORY π
The ffs manual page first appeared in FreeBSD 4.5. vintage but still slaying π
π SEE ALSO π
quota(1), acl(3), extattr(3), edquota(8), extattrctl(8), fsck_ffs(8), sysctl(8), tunefs(8)
- M. McKusick, W. Joy, S. Leffler, and R. Fabry, βA Fast File System for UNIXβ, ACM Transactions on Computer Systems, 2, 3, 181-197, August 1984.
- M. McKusick, βSoft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystemβ, Proceedings of the Freenix Track at the 1999 Usenix Annual Technical Conference, 71-84, June 2000.
- M. McKusick and J. Roberson, βJournaled Soft-updatesβ, BSD Canada Conference 2010 (BSDCan), May 2010.
okay bestie, that's the whole iconic page β this one is from Debian, dated February 24, 2026, and it's FFS(4) ππ«Άβ¨
π¦ where this page comes from
- freebsd 15.1: base 15.1
- Copyright (c) 2001 Networks Associates Technology, Inc
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms