回到Linux基础系列文章大纲
回到Systemd系列文章大纲
回到Shell系列文章大纲


systemd时代的/etc/fstab

/etc/fstab文件用于指定在开机时自动挂载的分区、文件系统、远程文件系统或块设备,以及它们的挂载方式。此外,执行mount -a操作也可以重新挂载/etc/fstab中的所有挂载项。

通用格式大致如下:

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

使用systemd系统时,systemd接管了挂载/etc/fstab的任务。在系统启动的时候,systemd会读取/etc/fstab文件并通过systemd-fstab-generator工具将该文件转换为systemd unit来执行,从而完成挂载任务。

systemd扩展了fstab文件的定义方式,在/etc/fstab中可使用由systemd.mount提供的挂载选项,这些选项大多以x-systemd为前缀(并非所有选项都如此),合理使用这些systemd提供的选项,可以完美地解决以前使用/etc/fstab时一些痛点。

比如,systemd.mount可以让那些要求在网络可用时的文件系统在网络已经可用的情况下才去挂载,还可以定义等待网络可用的超时时间,从而避免在开机过程中长时间卡住。

再比如,systemd可以让某个挂载项自动开始挂载和自动卸载,而不是在开机时挂载后永久挂载在后台。

/etc/fstab文件格式回顾

以如下内容为例:

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

其中