fstab 的工作原理 - Linux 上的 /etc/fstab 文件介绍
/etc/fstab 文件是基于 Linux 的系统中最重要的文件之一,因为它存储有关文件系统、其安装点和安装选项的静态信息。在本教程中,我们将学习详细了解其结构,以及可用于指定文件中每个条目的语法。
在本教程中您将学习:
如何使用 fstab 文件提供静态文件系统信息
fstab 文件的结构如何
文件中每个输入字段的用途是什么
fstab的作用
Fstab 字段
fstab 文件中的每个条目行包含六个字段,每个字段都描述有关文件系统的特定信息。
第一个字段——块设备
每个 fstab 条目中的第一个字段保存有关应安装的本地或远程块设备的信息。引用块设备的最典型方法是使用 /dev
目录中的节点,因此例如要引用 sda
块设备的第一个分区,我们使用 /dev/sda1
作为值。
引用块设备的替代方法是使用其 LABEL
或 UUID
(通用唯一标识符)。后者是绝对首选的方法,因为正如其名称所示,它保证唯一地引用文件系统。在 GPT 分区磁盘上,还可以使用 PARTUUID 或 PARTLABEL 来引用文件系统。
要获取有关文件系统的信息,我们可以运行 lsblk 命令,最终使用 -o 选项来指定我们想要检索的字段,或者使用 -fs 一,相当于使用 -o
并提供 NAME、FSTYPE、LABEL、UUID、MOUNTPOINT
作为参数。默认情况下,程序将显示有关所有现有文件系统的信息。为了避免这种行为,必须将文件系统引用作为参数传递:
$ lsblk -d -fs /dev/sdb1
NAME FSTYPE LABEL UUID FSAVAIL FSUSE%
MOUNTPOINT
sdb1 ext4 80b496fa-ce2d-4dcf-9afc-bcaa731a67f1 13.3G 1%
/mnt/example
在上面的示例中,我们还使用了 lsblk
(--nodeps
的缩写)的 -d
选项,从输出中隐藏文件系统结构树。现在我们收集了有关文件系统的信息,我们可以在 fstab 中为其创建一个条目。在条目的第一个字段中,要引用 /dev/sdb1
,我们将使用其 UUID
:
UUID=80b496fa-ce2d-4dcf-9afc-bcaa731a67f1
第二个字段 – 挂载点
在每个 fstab 条目中,第二个字段指定文件系统的挂载点:应使用系统中的哪个目录来访问其内容。应始终提供此信息,除非我们引用的块设备用作交换。在这种情况下,应该使用“none”
。假设我们想将文件系统挂载到“/mnt/example”;我们会写:
UUID=80b496fa-ce2d-4dcf-9afc-bcaa731a67f1 /mnt/example
第三个字段 – 文件系统类型
fstab 条目的第三个字段指定原始块设备或分区上使用的文件系统的类型。文件系统必须是操作系统支持的文件系统,例如 ext4、xfs 等。如果文件系统是远程文件系统,我们可以使用例如 cifs
作为此字段的值如果通过网络文件系统共享,则通过 samba 或 nfs 共享。在我们的示例中,我们知道 sdb1 设备使用 ext4 文件系统进行格式化,因此我们的 fstab 条目变为:
UUID=80b496fa-ce2d-4dcf-9afc-bcaa731a67f1 /mnt/example ext4
第四个字段 – 安装选项
fstab 文件中每个条目的第四个字段用于提供挂载文件系统时要使用的选项列表。要使用默认的安装选项集,我们将 default
指定为值。默认选项是:
rw
(读写);suid
(尊重 setuid 和 setgid 位);dev
(解释文件系统上的字符和块设备);exec
(允许执行二进制文件和脚本);auto
(使用mount命令的-a选项时挂载文件系统);nouser
(使标准用户无法安装文件系统);async
(在文件系统上异步执行 I/O 操作)。
要查看可用选项的列表,我们可以查阅mount
手册:
$ man mount
此时,我们的条目变为:
UUID=80b496fa-ce2d-4dcf-9afc-bcaa731a67f1 /mnt/example ext4 defaults
第五个字段 – 文件系统是否应该被转储?
每个条目中的第五个字段可以是 0 或 1。转储备份程序(如果已安装)使用该值来了解应转储哪个文件系统。通常我们的条目会变成:
UUID=80b496fa-ce2d-4dcf-9afc-bcaa731a67f1 /mnt/example ext4 defaults 0
第六字段 – Fsck 命令
第六个字段用于确定另一个实用程序 fsck 在启动时检查文件系统的顺序。 1
的值必须始终用于根文件系统;对于所有其他我们可以使用2
。如果未提供此值,则默认为 0,并且不会检查文件系统。通过最后一个字段,我们的示例条目终于完成了:
UUID=80b496fa-ce2d-4dcf-9afc-bcaa731a67f1 /mnt/example ext4 defaults 0 2
结论
在本教程中,我们了解了 /etc/fstab(Linux 操作系统中最重要的文件之一)的结构。我们了解到它包含有关文件系统的静态信息,并且我们看到文件中的每个条目都由六个字段组成,每个字段都有我们检查的特定用途。