Difference between revisions of "Fstab"

From ArchWiki
Jump to: navigation, search
m (Remote filesystem: - systemd.automount manpage)
m (drop Category:Configuration files, redirect /etc/fstab is now in that category)
 
(33 intermediate revisions by 11 users not shown)
Line 8: Line 8:
 
[[it:Fstab]]
 
[[it:Fstab]]
 
[[ja:Fstab]]
 
[[ja:Fstab]]
[[ro:Fstab]]
+
[[pl:Fstab]]
 
[[ru:Fstab]]
 
[[ru:Fstab]]
 
[[zh-hans:Fstab]]
 
[[zh-hans:Fstab]]
Line 21: Line 21:
 
The {{man|5|fstab}} file can be used to define how disk partitions, various other block devices, or remote filesystems should be mounted into the filesystem.
 
The {{man|5|fstab}} file can be used to define how disk partitions, various other block devices, or remote filesystems should be mounted into the filesystem.
  
Each filesystem is described in a separate line. These definitions will be converted into [[systemd]] mount units dynamically at boot, and when the configuration of the system manager is reloaded. The default setup will automatically [[fsck]] and mount filesystems before starting services that need them to be mounted. For example, systemd automatically makes sure that remote filesystem mounts like [[NFS]] or [[Samba]] are only started after the network has been set up. Therefore, local and remote filesystem mounts specified in {{ic|/etc/fstab}} should work out of the box. See {{man|5|systemd.mount}} for details.
+
Each filesystem is described in a separate line. These definitions will be converted into [[systemd]] mount units dynamically at boot, and when the configuration of the system manager is reloaded. The default setup will automatically [[fsck]] and mount filesystems before starting services that need them to be mounted. For example, systemd automatically makes sure that remote filesystem mounts like [[NFS]] or [[Samba]] are only started after the network has been set up. Therefore, local and remote filesystem mounts specified in {{ic|/etc/fstab}} should work out-of-the-box. See {{man|5|systemd.mount}} for details.
  
 
The {{ic|mount}} command will use fstab, if just one of either directory or device is given, to fill in the value for the other parameter. When doing so, mount options which are listed in fstab will also be used.
 
The {{ic|mount}} command will use fstab, if just one of either directory or device is given, to fill in the value for the other parameter. When doing so, mount options which are listed in fstab will also be used.
Line 30: Line 30:
  
 
{{hc|/etc/fstab|
 
{{hc|/etc/fstab|
# <device>             <dir>         <type>   <options>             <dump> <fsck>
+
# <device>       <dir>       <type>       <options>       <dump> <fsck>
/dev/sda1             /             ext4     defaults,noatime     0      1
+
/dev/sda1         /           ext4         noatime         0      1
/dev/sda2             none          swap      defaults             0      0
+
/dev/sda2         none         swap         defaults         0      0
/dev/sda3             /home         ext4     defaults,noatime     0      2}}
+
/dev/sda3         /home       ext4         noatime         0      2
 +
}}
  
 
* {{ic|<device>}} describes the block special device or remote filesystem to be mounted; see [[#Identifying filesystems]].
 
* {{ic|<device>}} describes the block special device or remote filesystem to be mounted; see [[#Identifying filesystems]].
* {{ic|<dir>}} describes the [[mount]] directory, {{ic|<type>}} the [[file system]] type, and {{ic|<options>}} the associated mount options; see {{man|8|mount|FILESYSTEM-INDEPENDENT_MOUNT_OPTIONS}}.
+
* {{ic|<dir>}} describes the [[mount]] directory, {{ic|<type>}} the [[file system]] type, and {{ic|<options>}} the associated mount options; see {{man|8|mount|FILESYSTEM-INDEPENDENT_MOUNT_OPTIONS}} and {{man|5|ext4|MOUNT_OPTIONS}}.
 
* {{ic|<dump>}} is checked by the {{man|8|dump|url=http://linux.die.net/man/8/dump}} utility. This field is usually set to {{ic|0}}, which disables the check.
 
* {{ic|<dump>}} is checked by the {{man|8|dump|url=http://linux.die.net/man/8/dump}} utility. This field is usually set to {{ic|0}}, which disables the check.
 
* {{ic|<fsck>}} sets the order for filesystem checks at boot time; see {{man|8|fsck}}. For the root device it should be {{ic|1}}. For other partitions it should be {{ic|2}}, or {{ic|0}} to disable checking.
 
* {{ic|<fsck>}} sets the order for filesystem checks at boot time; see {{man|8|fsck}}. For the root device it should be {{ic|1}}. For other partitions it should be {{ic|2}}, or {{ic|0}} to disable checking.
  
 
{{Tip|The {{ic|auto}} type lets the mount command guess what type of file system is used. This is useful for optical media (CD/DVD).}}
 
{{Tip|The {{ic|auto}} type lets the mount command guess what type of file system is used. This is useful for optical media (CD/DVD).}}
{{Note|If the root file system is [[btrfs]], the fsck order should be set to {{ic|0}} instead of {{ic|1}}.}}
+
 
 +
{{Note|{{Accuracy|1=There seem to be no clear upstream documentation which recommends against enabling it although multiple websites use {{ic|0}} as fsck property in their examples. Hence this note should either be removed or have a reference to some credible source. The change was initially introduced in [https://wiki.archlinux.org/index.php?title=Fstab&diff=268380&oldid=264033 this edit] without any explanation and was later reworded in [https://wiki.archlinux.org/index.php?title=Fstab&diff=444662&oldid=444260 this one].}}If the root file system is [[btrfs]], the fsck order should be set to {{ic|0}} instead of {{ic|1}}.}}
  
 
All specified devices within {{ic|/etc/fstab}} will be automatically mounted on startup and when the {{ic|-a}} flag is used with {{man|8|mount}} unless the {{ic|noauto}} option is specified. Devices that are listed and not present will result in an error unless the {{ic|nofail}} option is used.
 
All specified devices within {{ic|/etc/fstab}} will be automatically mounted on startup and when the {{ic|-a}} flag is used with {{man|8|mount}} unless the {{ic|noauto}} option is specified. Devices that are listed and not present will result in an error unless the {{ic|nofail}} option is used.
Line 60: Line 62:
  
 
{{hc|/etc/fstab|<nowiki>
 
{{hc|/etc/fstab|<nowiki>
# <device>     <dir> <type> <options>                                                                                           <dump> <fsck>
+
# <device>       <dir>       <type>       <options>       <dump> <fsck>
/dev/sda1       /boot vfat   rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro  0      2
+
/dev/sda1         /boot       vfat         defaults        0      2
/dev/sda2       /     ext4   rw,relatime,data=ordered                                                                              0      1
+
/dev/sda2         /           ext4         defaults        0      1
/dev/sda3       /home ext4   rw,relatime,data=ordered                                                                              0      2
+
/dev/sda3         /home       ext4         defaults        0      2
/dev/sda4       none swap   defaults                                                                                               0      0
+
/dev/sda4         none         swap         defaults         0      0
 
</nowiki>}}
 
</nowiki>}}
  
=== Labels ===
+
=== File system labels ===
  
 
Run {{ic|lsblk -f}} to list the partitions, and prefix the values in the ''LABEL'' column with {{ic|1=LABEL=}}:
 
Run {{ic|lsblk -f}} to list the partitions, and prefix the values in the ''LABEL'' column with {{ic|1=LABEL=}}:
  
 
{{hc|/etc/fstab|<nowiki>
 
{{hc|/etc/fstab|<nowiki>
# <device>     <dir> <type> <options>                                                                                           <dump> <fsck>
+
# <device>       <dir>       <type>       <options>       <dump> <fsck>
LABEL=EFI       /boot vfat   rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0      2
+
LABEL=EFI         /boot       vfat         defaults        0      2
LABEL=SYSTEM   /     ext4   rw,relatime,data=ordered                                                                    0      1
+
LABEL=SYSTEM     /           ext4         defaults        0      1
LABEL=DATA     /home ext4   rw,relatime,data=ordered                                                                    0      2
+
LABEL=DATA       /home       ext4         defaults        0      2
LABEL=SWAP     none swap   defaults                                                                                             0      0
+
LABEL=SWAP       none         swap         defaults         0      0
 
</nowiki>}}
 
</nowiki>}}
  
 
{{Note|If any of your fields contains spaces, see [[#Filepath spaces]].}}
 
{{Note|If any of your fields contains spaces, see [[#Filepath spaces]].}}
  
=== UUIDs ===
+
=== File system UUIDs ===
  
 
Run {{ic|lsblk -f}} to list the partitions, and prefix the values in the ''UUID'' column with {{ic|1=UUID=}}:
 
Run {{ic|lsblk -f}} to list the partitions, and prefix the values in the ''UUID'' column with {{ic|1=UUID=}}:
  
 
{{hc|/etc/fstab|<nowiki>
 
{{hc|/etc/fstab|<nowiki>
# <device>                                <dir> <type> <options>                                                                                           <dump> <fsck>
+
# <device>                                <dir> <type> <options> <dump> <fsck>
UUID=CBB6-24F2                            /boot vfat  rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0      2
+
UUID=CBB6-24F2                            /boot vfat  defaults  0      2
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 /    ext4  rw,relatime,data=ordered                                                                    0      1
+
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 /    ext4  defaults  0      1
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4  rw,relatime,data=ordered                                                                    0      2
+
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4  defaults  0      2
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none  swap  defaults                                                                                             0      0
+
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none  swap  defaults 0      0
 
</nowiki>}}
 
</nowiki>}}
  
 
{{Tip|If you would like to return just the UUID of a specific partition: {{ic|lsblk -no UUID /dev/sda2}}.}}
 
{{Tip|If you would like to return just the UUID of a specific partition: {{ic|lsblk -no UUID /dev/sda2}}.}}
  
=== GPT labels ===
+
=== GPT partition labels ===
 +
 
 
Run {{ic|blkid}} to list the partitions, and use the ''PARTLABEL'' values without the quotes:
 
Run {{ic|blkid}} to list the partitions, and use the ''PARTLABEL'' values without the quotes:
  
 
{{hc|/etc/fstab|<nowiki>
 
{{hc|/etc/fstab|<nowiki>
# <device>                          <dir> <type> <options>                                                                                           <dump> <fsck>
+
# <device>                          <dir> <type> <options> <dump> <fsck>
PARTLABEL=EFI\040SYSTEM\040PARTITION /boot vfat  rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0      2
+
PARTLABEL=EFI\040SYSTEM\040PARTITION /boot vfat  defaults  0      2
PARTLABEL=GNU/LINUX                  /    ext4  rw,relatime,data=ordered                                                                    0      1
+
PARTLABEL=GNU/LINUX                  /    ext4  defaults  0      1
PARTLABEL=HOME                      /home ext4  rw,relatime,data=ordered                                                                    0      2
+
PARTLABEL=HOME                      /home ext4  defaults  0      2
PARTLABEL=SWAP                      none  swap  defaults                                                                                             0      0
+
PARTLABEL=SWAP                      none  swap  defaults 0      0
 
</nowiki>}}
 
</nowiki>}}
  
 
{{Note|If any of your fields contains spaces, see [[#Filepath spaces]].}}
 
{{Note|If any of your fields contains spaces, see [[#Filepath spaces]].}}
  
=== GPT UUIDs ===
+
=== GPT partition UUIDs ===
  
 
Run {{ic|blkid}} to list the partitions, and use the ''PARTUUID'' values without the quotes:
 
Run {{ic|blkid}} to list the partitions, and use the ''PARTUUID'' values without the quotes:
  
 
{{hc|/etc/fstab|<nowiki>
 
{{hc|/etc/fstab|<nowiki>
# <device>                                    <dir> <type> <options>                                                                                           <dump> <fsck>
+
# <device>                                    <dir> <type> <options> <dump> <fsck>
PARTUUID=d0d0d110-0a71-4ed6-936a-304969ea36af /boot vfat  rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0      2
+
PARTUUID=d0d0d110-0a71-4ed6-936a-304969ea36af /boot vfat  defaults  0      2
PARTUUID=98a81274-10f7-40db-872a-03df048df366 /    ext4  rw,relatime,data=ordered                                                                    0      1
+
PARTUUID=98a81274-10f7-40db-872a-03df048df366 /    ext4  defaults  0      1
PARTUUID=7280201c-fc5d-40f2-a9b2-466611d3d49e /home ext4  rw,relatime,data=ordered                                                                    0      2
+
PARTUUID=7280201c-fc5d-40f2-a9b2-466611d3d49e /home ext4  defaults  0      2
PARTUUID=039b6c1c-7553-4455-9537-1befbc9fbc5b none  swap  defaults                                                                                             0      0
+
PARTUUID=039b6c1c-7553-4455-9537-1befbc9fbc5b none  swap  defaults 0      0
 
</nowiki>}}
 
</nowiki>}}
  
Line 123: Line 126:
  
 
=== Automount with systemd ===
 
=== Automount with systemd ===
Systemd Mount options {{man|5|systemd.mount}}
+
 
 +
See {{man|5|systemd.mount}} for all systemd mount options.
  
 
==== Local partition ====
 
==== Local partition ====
 +
 
In case of a large partition, it may be more efficient to allow services that do not depend on it to start while it is checked by ''fsck''. This can be achieved by adding the following options to the {{ic|/etc/fstab}} entry of the partition:
 
In case of a large partition, it may be more efficient to allow services that do not depend on it to start while it is checked by ''fsck''. This can be achieved by adding the following options to the {{ic|/etc/fstab}} entry of the partition:
  
Line 135: Line 140:
  
 
==== Remote filesystem ====
 
==== Remote filesystem ====
The same applies to remote filesystem mounts. If you want them to be mounted only upon access, you will need to use the {{ic|noauto,x-systemd.automount}} parameters.  See {{man|5|systemd.automount}}. In addition, you can use the {{ic|1=x-systemd.device-timeout=}} option to specify how long systemd should wait for the filesystem to show up. Also, the {{ic|_netdev}} option ensures systemd understands that the mount is network dependent and order it after the network is online.
+
 
 +
The same applies to remote filesystem mounts. If you want them to be mounted only upon access, you will need to use the {{ic|noauto,x-systemd.automount}} parameters. In addition, you can use the {{ic|1=x-systemd.device-timeout=}} option to specify how long systemd should wait for the filesystem to show up. Also, the {{ic|_netdev}} option ensures systemd understands that the mount is network dependent and order it after the network is online.
  
 
  noauto,x-systemd.automount,x-systemd.device-timeout=30,_netdev
 
  noauto,x-systemd.automount,x-systemd.device-timeout=30,_netdev
Line 142: Line 148:
  
 
==== Encrypted filesystem ====
 
==== Encrypted filesystem ====
 +
 
If you have encrypted filesystems with keyfiles, you can also add the {{ic|noauto}} parameter to the corresponding entries in {{ic|/etc/crypttab}}. ''systemd'' will then not open the encrypted device on boot, but instead wait until it is actually accessed and then automatically open it with the specified keyfile before mounting it. This might save a few seconds on boot if you are using an encrypted RAID device for example, because systemd does not have to wait for the device to become available. For example:
 
If you have encrypted filesystems with keyfiles, you can also add the {{ic|noauto}} parameter to the corresponding entries in {{ic|/etc/crypttab}}. ''systemd'' will then not open the encrypted device on boot, but instead wait until it is actually accessed and then automatically open it with the specified keyfile before mounting it. This might save a few seconds on boot if you are using an encrypted RAID device for example, because systemd does not have to wait for the device to become available. For example:
  
 
{{hc|/etc/crypttab|
 
{{hc|/etc/crypttab|
data /dev/md0 /root/key noauto}}
+
data /dev/md0 /root/key noauto
 +
}}
  
 
You may also specify an idle timeout for a mount with the {{ic|x-systemd.idle-timeout}} flag.  For example:
 
You may also specify an idle timeout for a mount with the {{ic|x-systemd.idle-timeout}} flag.  For example:
Line 158: Line 166:
  
 
{{hc|/etc/fstab|2=
 
{{hc|/etc/fstab|2=
/dev/sdg1        /media/backup    jfs    defaults,nofail,x-systemd.device-timeout=1    0  2}}
+
/dev/sdg1        /media/backup    jfs    nofail,x-systemd.device-timeout=1    0  2
 +
}}
  
 
The {{ic|nofail}} option is best combined with the {{ic|x-systemd.device-timeout}} option. This is because the default device timeout is 90 seconds, so a disconnected external device with only {{ic|nofail}} will make your boot take 90 seconds longer, unless you reconfigure the timeout as shown. Make sure not to set the timeout to 0, as this translates to infinite timeout.
 
The {{ic|nofail}} option is best combined with the {{ic|x-systemd.device-timeout}} option. This is because the default device timeout is 90 seconds, so a disconnected external device with only {{ic|nofail}} will make your boot take 90 seconds longer, unless you reconfigure the timeout as shown. Make sure not to set the timeout to 0, as this translates to infinite timeout.
  
If your external device requires another systemd unit to be loaded (for example the network for a network share) you can use {{ic|1=x-systemd.requires=x}} combined with {{ic|x-systemd.automount}}to postpone automounting until after the unit is available. For example:
+
If your external device requires another systemd unit to be loaded (for example the network for a network share) you can use {{ic|1=x-systemd.requires=x}} combined with {{ic|x-systemd.automount}} to postpone automounting until after the unit is available. For example:
  
 
{{hc|/etc/fstab|2=
 
{{hc|/etc/fstab|2=
//host/share       /net/share        cifs       noauto,nofail,x-systemd.automount,x-systemd.requires=network-online.target,x-systemd.device-timeout=10,workgroup=workgroup,credentials=/foo/credentials       0 0}}
+
//host/share   /net/share        cifs   noauto,nofail,x-systemd.automount,x-systemd.requires=network-online.target,x-systemd.device-timeout=10,workgroup=workgroup,credentials=/foo/credentials   0 0
 +
}}
  
However it is also possible to [[enable]] [[NetworkManager#Enable NetworkManager Wait Online|NetworkManager-wait-online]] or [[Systemd-networkd#Mount_services_at_boot_fail|systemd-networkd-wait-online]] instead.
+
{{Note|This is an alternative to [[NetworkManager#Enable NetworkManager Wait Online|NetworkManager-wait-online]] or [[systemd-networkd#Mount services at boot fail|systemd-networkd-wait-online]] and does not stall the boot process.}}
  
 
=== Filepath spaces ===
 
=== Filepath spaces ===
Line 174: Line 184:
  
 
{{hc|/etc/fstab|2=
 
{{hc|/etc/fstab|2=
UUID=47FA-4071    /home/username/Camera<font color="grey">\040</font>Pictures  vfat  defaults,noatime      0  0
+
UUID=47FA-4071    /home/username/Camera<font color="grey">\040</font>Pictures  vfat  noatime      0  0
/dev/sda7          /media/100<font color="grey">\040</font>GB<font color="grey">\040</font>(Storage)      ext4  defaults,noatime,user  0  2
+
/dev/sda7          /media/100<font color="grey">\040</font>GB<font color="grey">\040</font>(Storage)      ext4  noatime,user  0  2
 
}}
 
}}
  
Line 183: Line 193:
  
 
* The {{ic|strictatime}} option updates the access time of the files every time they are accessed. This is more purposeful when Linux is used for servers; it does not have much value for desktop use. The drawback about the {{ic|strictatime}} option is that even reading a file from the page cache (reading from memory instead of the drive) will still result in a write!
 
* The {{ic|strictatime}} option updates the access time of the files every time they are accessed. This is more purposeful when Linux is used for servers; it does not have much value for desktop use. The drawback about the {{ic|strictatime}} option is that even reading a file from the page cache (reading from memory instead of the drive) will still result in a write!
 
 
* The {{ic|noatime}} option fully disables writing file access times to the drive every time you read a file. This works well for almost all applications, except for those that need to know if a file has been read since the last time it was modified. The write time information to a file will continue to be updated anytime the file is written to with this option enabled.
 
* The {{ic|noatime}} option fully disables writing file access times to the drive every time you read a file. This works well for almost all applications, except for those that need to know if a file has been read since the last time it was modified. The write time information to a file will continue to be updated anytime the file is written to with this option enabled.
 
+
* The {{ic|nodiratime}} option disables the writing of file access times only for directories while other files still get access times written. {{Note|{{ic|noatime}} implies {{ic|nodiratime}}. [http://lwn.net/Articles/244941/ You do not need to specify both].}}
* The {{ic|nodiratime}} option disables the writing of file access times only for directories while other files still get access times written.
 
: {{Note|{{ic|noatime}} implies {{ic|nodiratime}}. [http://lwn.net/Articles/244941/ You do not need to specify both].}}
 
 
 
 
* {{ic|relatime}} updates the access time only if the previous access time was earlier than the current modify or change time. In addition, since Linux 2.6.30, the access time is always updated if the previous access time was more than 24 hours old. This option is used when the {{ic|defaults}} option, {{ic|atime}} option (which means to use the kernel default, which is {{ic|relatime}}; see {{man|8|mount}} and [[wikipedia:Stat (system call)#Criticism of atime]]) or no options at all are specified.
 
* {{ic|relatime}} updates the access time only if the previous access time was earlier than the current modify or change time. In addition, since Linux 2.6.30, the access time is always updated if the previous access time was more than 24 hours old. This option is used when the {{ic|defaults}} option, {{ic|atime}} option (which means to use the kernel default, which is {{ic|relatime}}; see {{man|8|mount}} and [[wikipedia:Stat (system call)#Criticism of atime]]) or no options at all are specified.
  
Line 205: Line 211:
  
 
  # mount -o remount,rw /
 
  # mount -o remount,rw /
 +
 +
=== GPT partition automounting ===
 +
 +
On a [[GPT]] partitioned disk it is possible to omit {{ic|/}}, {{ic|/home}}, {{ic|/srv}} and swap partitions from {{ic|/etc/fstab}} by partitioning according to the [https://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/ Discoverable Partitions Specification]. See [[systemd#GPT partition automounting]].
  
 
== See also ==
 
== See also ==
Line 211: Line 221:
 
* [http://www.pathname.com/fhs/2.2/index.html Filesystem Hierarchy Standard]
 
* [http://www.pathname.com/fhs/2.2/index.html Filesystem Hierarchy Standard]
 
* [https://www.askapache.com/optimize/super-speed-secrets/ 30x Faster Cache and Site Speed with TMPFS]
 
* [https://www.askapache.com/optimize/super-speed-secrets/ 30x Faster Cache and Site Speed with TMPFS]
* [[Samba#As_mount_entry|Adding Samba shares to /etc/fstab]]
 

Latest revision as of 06:25, 15 November 2018

The fstab(5) file can be used to define how disk partitions, various other block devices, or remote filesystems should be mounted into the filesystem.

Each filesystem is described in a separate line. These definitions will be converted into systemd mount units dynamically at boot, and when the configuration of the system manager is reloaded. The default setup will automatically fsck and mount filesystems before starting services that need them to be mounted. For example, systemd automatically makes sure that remote filesystem mounts like NFS or Samba are only started after the network has been set up. Therefore, local and remote filesystem mounts specified in /etc/fstab should work out-of-the-box. See systemd.mount(5) for details.

The mount command will use fstab, if just one of either directory or device is given, to fill in the value for the other parameter. When doing so, mount options which are listed in fstab will also be used.

Usage

A simple /etc/fstab, using kernel name descriptors:

/etc/fstab
# <device>        <dir>        <type>        <options>        <dump> <fsck>
/dev/sda1         /            ext4          noatime          0      1
/dev/sda2         none         swap          defaults         0      0
/dev/sda3         /home        ext4          noatime          0      2
  • <device> describes the block special device or remote filesystem to be mounted; see #Identifying filesystems.
  • <dir> describes the mount directory, <type> the file system type, and <options> the associated mount options; see mount(8) and ext4(5).
  • <dump> is checked by the dump(8) utility. This field is usually set to 0, which disables the check.
  • <fsck> sets the order for filesystem checks at boot time; see fsck(8). For the root device it should be 1. For other partitions it should be 2, or 0 to disable checking.
Tip: The auto type lets the mount command guess what type of file system is used. This is useful for optical media (CD/DVD).
Note:

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: There seem to be no clear upstream documentation which recommends against enabling it although multiple websites use 0 as fsck property in their examples. Hence this note should either be removed or have a reference to some credible source. The change was initially introduced in this edit without any explanation and was later reworded in this one. (Discuss in Talk:Fstab#)
If the root file system is btrfs, the fsck order should be set to 0 instead of 1.

All specified devices within /etc/fstab will be automatically mounted on startup and when the -a flag is used with mount(8) unless the noauto option is specified. Devices that are listed and not present will result in an error unless the nofail option is used.

See fstab(5) for details.

Identifying filesystems

There are different ways to identify filesystems that will be mounted in /etc/fstab: kernel name descriptor, label or UUID, and GPT labels and UUID for GPT disks. UUID must be privileged over kernel name descriptors and labels. See Persistent block device naming for more explanations. It is recommended to read that article first before continuing with this article.

In this section, we will describe how to mount filesystems using all the mount methods available via examples. The output of the commands lsblk -f and blkid used in the following examples are available in the article Persistent block device naming.

To use kernel name descriptors, use /dev/sdxy in the first column.

Kernel name descriptors

Run lsblk -f to list the partitions and prefix the values in the NAME column with /dev/.

/etc/fstab
# <device>        <dir>        <type>        <options>        <dump> <fsck>
/dev/sda1         /boot        vfat          defaults         0      2
/dev/sda2         /            ext4          defaults         0      1
/dev/sda3         /home        ext4          defaults         0      2
/dev/sda4         none         swap          defaults         0      0

File system labels

Run lsblk -f to list the partitions, and prefix the values in the LABEL column with LABEL=:

/etc/fstab
# <device>        <dir>        <type>        <options>        <dump> <fsck>
LABEL=EFI         /boot        vfat          defaults         0      2
LABEL=SYSTEM      /            ext4          defaults         0      1
LABEL=DATA        /home        ext4          defaults         0      2
LABEL=SWAP        none         swap          defaults         0      0
Note: If any of your fields contains spaces, see #Filepath spaces.

File system UUIDs

Run lsblk -f to list the partitions, and prefix the values in the UUID column with UUID=:

/etc/fstab
# <device>                                <dir> <type> <options> <dump> <fsck>
UUID=CBB6-24F2                            /boot vfat   defaults  0      2
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 /     ext4   defaults  0      1
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4   defaults  0      2
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none  swap   defaults  0      0
Tip: If you would like to return just the UUID of a specific partition: lsblk -no UUID /dev/sda2.

GPT partition labels

Run blkid to list the partitions, and use the PARTLABEL values without the quotes:

/etc/fstab
# <device>                           <dir> <type> <options> <dump> <fsck>
PARTLABEL=EFI\040SYSTEM\040PARTITION /boot vfat   defaults  0      2
PARTLABEL=GNU/LINUX                  /     ext4   defaults  0      1
PARTLABEL=HOME                       /home ext4   defaults  0      2
PARTLABEL=SWAP                       none  swap   defaults  0      0
Note: If any of your fields contains spaces, see #Filepath spaces.

GPT partition UUIDs

Run blkid to list the partitions, and use the PARTUUID values without the quotes:

/etc/fstab
# <device>                                    <dir> <type> <options> <dump> <fsck>
PARTUUID=d0d0d110-0a71-4ed6-936a-304969ea36af /boot vfat   defaults  0      2
PARTUUID=98a81274-10f7-40db-872a-03df048df366 /     ext4   defaults  0      1
PARTUUID=7280201c-fc5d-40f2-a9b2-466611d3d49e /home ext4   defaults  0      2
PARTUUID=039b6c1c-7553-4455-9537-1befbc9fbc5b none  swap   defaults  0      0

Tips and tricks

Automount with systemd

See systemd.mount(5) for all systemd mount options.

Local partition

In case of a large partition, it may be more efficient to allow services that do not depend on it to start while it is checked by fsck. This can be achieved by adding the following options to the /etc/fstab entry of the partition:

noauto,x-systemd.automount

This will fsck and mount the partition only when it is first accessed, and the kernel will buffer all file access to it until it is ready. This method can be relevant if one has, for example, a significantly large /home partition.

Note: This will make the filesystem type autofs which is ignored by mlocate by default.

Remote filesystem

The same applies to remote filesystem mounts. If you want them to be mounted only upon access, you will need to use the noauto,x-systemd.automount parameters. In addition, you can use the x-systemd.device-timeout= option to specify how long systemd should wait for the filesystem to show up. Also, the _netdev option ensures systemd understands that the mount is network dependent and order it after the network is online.

noauto,x-systemd.automount,x-systemd.device-timeout=30,_netdev
Note: If you intend to use the exec flag with automount, you should remove the user flag for it to work properly as found in the course of a Fedora Bug Report

Encrypted filesystem

If you have encrypted filesystems with keyfiles, you can also add the noauto parameter to the corresponding entries in /etc/crypttab. systemd will then not open the encrypted device on boot, but instead wait until it is actually accessed and then automatically open it with the specified keyfile before mounting it. This might save a few seconds on boot if you are using an encrypted RAID device for example, because systemd does not have to wait for the device to become available. For example:

/etc/crypttab
data /dev/md0 /root/key noauto

You may also specify an idle timeout for a mount with the x-systemd.idle-timeout flag. For example:

noauto,x-systemd.automount,x-systemd.idle-timeout=1min

This will make systemd unmount the mount after it has been idle for 1 minute.

External devices

External devices that are to be mounted when present but ignored if absent may require the nofail option. This prevents errors being reported at boot. For example:

/etc/fstab
/dev/sdg1        /media/backup    jfs    nofail,x-systemd.device-timeout=1    0  2

The nofail option is best combined with the x-systemd.device-timeout option. This is because the default device timeout is 90 seconds, so a disconnected external device with only nofail will make your boot take 90 seconds longer, unless you reconfigure the timeout as shown. Make sure not to set the timeout to 0, as this translates to infinite timeout.

If your external device requires another systemd unit to be loaded (for example the network for a network share) you can use x-systemd.requires=x combined with x-systemd.automount to postpone automounting until after the unit is available. For example:

/etc/fstab
//host/share    /net/share        cifs   noauto,nofail,x-systemd.automount,x-systemd.requires=network-online.target,x-systemd.device-timeout=10,workgroup=workgroup,credentials=/foo/credentials    0 0
Note: This is an alternative to NetworkManager-wait-online or systemd-networkd-wait-online and does not stall the boot process.

Filepath spaces

Since spaces are used in fstab to delimit fields, if any field (PARTLABEL, LABEL or the mount point) contains spaces, these spaces must be replaced by escape characters \ followed by the 3 digit octal code 040:

/etc/fstab
UUID=47FA-4071     /home/username/Camera\040Pictures   vfat  noatime       0  0
/dev/sda7          /media/100\040GB\040(Storage)       ext4  noatime,user  0  2

atime options

Below atime options can impact drive performance.

  • The strictatime option updates the access time of the files every time they are accessed. This is more purposeful when Linux is used for servers; it does not have much value for desktop use. The drawback about the strictatime option is that even reading a file from the page cache (reading from memory instead of the drive) will still result in a write!
  • The noatime option fully disables writing file access times to the drive every time you read a file. This works well for almost all applications, except for those that need to know if a file has been read since the last time it was modified. The write time information to a file will continue to be updated anytime the file is written to with this option enabled.
  • The nodiratime option disables the writing of file access times only for directories while other files still get access times written.
    Note: noatime implies nodiratime. You do not need to specify both.
  • relatime updates the access time only if the previous access time was earlier than the current modify or change time. In addition, since Linux 2.6.30, the access time is always updated if the previous access time was more than 24 hours old. This option is used when the defaults option, atime option (which means to use the kernel default, which is relatime; see mount(8) and wikipedia:Stat (system call)#Criticism of atime) or no options at all are specified.

When using Mutt or other applications that need to know if a file has been read since the last time it was modified, the noatime option should not be used; using the relatime option is acceptable and still provides a performance improvement.

Since kernel 4.0 there is another related option:

  • lazytime reduces writes to disk by maintaining changes to inode timestamps (access, modification and creation times) only in memory. The on-disk timestamps are updated only when either (1) the file inode needs to be updated for some change unrelated to file timestamps, (2) a sync to disk occurs, (3) an undeleted inode is evicted from memory or (4) if more than 24 hours passed since the the last time the in-memory copy was written to disk.
Warning: In the event of a system crash, the access and modification times on disk might be out of date by up to 24 hours.

Note that the lazytime option works in combination with the aforementioned *atime options, not as an alternative. That is relatime by default, but can be even strictatime with the same or less cost of disk writes as the plain relatime option.

Remounting the root partition

If for some reason the root partition has been improperly mounted read only, remount the root partition with read-write access with the following command:

# mount -o remount,rw /

GPT partition automounting

On a GPT partitioned disk it is possible to omit /, /home, /srv and swap partitions from /etc/fstab by partitioning according to the Discoverable Partitions Specification. See systemd#GPT partition automounting.

See also