.\" Copyright (c) 1980, 1989, 1991 The Regents of the University of California.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"     @(#)fstab.5	6.5 (Berkeley) 5/10/91
.\"
.TH FSTAB 5 "February 2015" "util-linux" "File Formats"
.SH NAME
fstab \- static information about the filesystems
.SH SYNOPSIS
.I /etc/fstab
.SH DESCRIPTION
The file
.B fstab
contains descriptive information about the filesystems the system can mount.
.B fstab
is only read by programs, and not written; it is the duty of the system
administrator to properly create and maintain this file.  The order of records in
.B fstab
is important because
.BR fsck (8),
.BR mount (8),
and
.BR umount (8)
sequentially iterate through
.B fstab
doing their thing.

Each filesystem is described on a separate line.
Fields on each line are separated by tabs or spaces.
Lines starting with '#' are comments.  Blank lines are ignored.
.PP
The following is a typical example of an
.B fstab
entry:
.sp
.RS 7
LABEL=t-home2   /home      ext4    defaults,auto_da_alloc      0  2
.RE

.B The first field
.RI ( fs_spec ).
.RS
This field describes the block special device or
remote filesystem to be mounted.
.LP
For ordinary mounts, it will hold (a link to) a block special
device node (as created by
.BR mknod (8))
for the device to be mounted, like `/dev/cdrom' or `/dev/sdb7'.
For NFS mounts, this field is <host>:<dir>, e.g., `knuth.aeb.nl:/'.
For filesystems with no storage, any string can be used, and will show up in
.BR df (1)
output, for example.  Typical usage is `proc' for procfs; `mem', `none',
or `tmpfs' for tmpfs.  Other special filesystems, like udev and sysfs,
are typically not listed in
.BR fstab .
.LP
LABEL=<label> or UUID=<uuid> may be given instead of a device name.
This is the recommended method, as device names are often a coincidence
of hardware detection order, and can change when other disks are added or removed.
For example, `LABEL=Boot' or `UUID=3e6be9de\%-8139\%-11d1\%-9106\%-a43f08d823a6'.
(Use a filesystem-specific tool like
.BR e2label (8),
.BR xfs_admin (8),
or
.BR fatlabel (8)
to set LABELs on filesystems).

It's also possible to use PARTUUID= and PARTLABEL=. These partitions identifiers
are supported for example for GUID Partition Table (GPT).

See
.BR mount (8),
.BR blkid (8)
or
.BR lsblk (8)
for more details about device identifiers.

.LP
Note that
.BR mount (8)
uses UUIDs as strings. The string representation of the UUID should be based on
lower case characters.
.RE

.B The second field
.RI ( fs_file ).
.RS
This field describes the mount point (target) for the filesystem.  For swap partitions, this
field should be specified as `none'. If the name of the mount point
contains spaces or tabs these can be escaped as `\\040' and '\\011'
respectively.
.RE

.B The third field
.RI ( fs_vfstype ).
.RS
This field describes the type of the filesystem.  Linux supports many
filesystem types: ext4, xfs, btrfs, f2fs, vfat, ntfs, hfsplus,
tmpfs, sysfs, proc, iso9660, udf, squashfs, nfs, cifs, and many more.
For more details, see
.BR mount (8).

An entry
.I swap
denotes a file or partition to be used
for swapping, cf.\&
.BR swapon (8).
An entry
.I none
is useful for bind or move mounts.

More than one type may be specified in a comma-separated list.

.BR mount (8)
and
.BR umount (8)
support filesystem
.IR subtypes .
The subtype is defined by '.subtype' suffix.  For
example 'fuse.sshfs'. It's recommended to use subtype notation rather than add
any prefix to the first fstab field (for example 'sshfs#example.com' is
deprecated).
.RE

.B The fourth field
.RI ( fs_mntops ).
.RS
This field describes the mount options associated with the filesystem.

It is formatted as a comma-separated list of options.
It contains at least the type of mount
.RB ( ro
or
.BR rw ),
plus any additional options appropriate to the filesystem
type (including performance-tuning options).
For details, see
.BR mount (8)
or
.BR swapon (8).

Basic filesystem-independent options are:
.TP
.B defaults
use default options: rw, suid, dev, exec, auto, nouser, and async.
.TP
.B noauto
do not mount when "mount -a" is given (e.g., at boot time)
.TP
.B user
allow a user to mount
.TP
.B owner
allow device owner to mount
.TP
.B comment
or
.B x-<name>
for use by fstab-maintaining programs
.TP
.B nofail
do not report errors for this device if it does not exist.
.RE

.B The fifth field
.RI ( fs_freq ).
.RS
This field is used by
.BR dump (8)
to determine which filesystems need to be dumped.
Defaults to zero (don't dump) if not present.
.RE

.B The sixth field
.RI ( fs_passno ).
.RS
This field is used by
.BR fsck (8)
to determine the order in which filesystem checks are done at
boot time.  The root filesystem should be specified with a
.I fs_passno
of 1.  Other filesystems should have a
.I fs_passno
of 2.  Filesystems within a drive will be checked sequentially, but
filesystems on different drives will be checked at the same time to utilize
parallelism available in the hardware.
Defaults to zero (don't fsck) if not present.

.SH NOTES
The proper way to read records from
.B fstab
is to use the routines
.BR getmntent (3)
or
.BR libmount .

The keyword
.B ignore
as a filesystem type (3rd field) is no longer supported by the pure
libmount based mount utility (since util-linux v2.22).

.SH FILES
.IR /etc/fstab ,
.I <fstab.h>
.SH "SEE ALSO"
.BR getmntent (3),
.BR fs (5),
.BR findmnt (8),
.BR mount (8),
.BR swapon (8)
.SH HISTORY
The ancestor of this
.B fstab
file format appeared in 4.0BSD.
.\" But without comment convention, and options and vfs_type.
.\" Instead there was a type rw/ro/rq/sw/xx, where xx is the present 'ignore'.
.SH AVAILABILITY
This man page is part of the util-linux package and is available from
https://www.kernel.org/pub/linux/utils/util-linux/.
