Linux 中的 Fstab 是什么? Linux /etc/fstab 文件介绍

在本指南中,我们将了解什么是 fstab 在Linux中,有什么用途 fstab 文件,结构 /etc/fstab 文件,最后怎样调试 fstab 问题。 最后,我们还将讨论一个简单的介绍 文件,它的用法以及 mtab 与 fstab 的区别。

什么是 fstab?

作为服务器管理员或 Linux 桌面用户或任何刚接触 Linux 的人,了解 /etc/fstab Linux 中的文件以及怎样调试 fstab 问题非常重要。

Fstab 是一个 F文件 s系统 标签内核在引导期间用于挂载文件系统的文件。 简而言之,您将在硬盘驱动器上创建一个或多个分区,并在 fstab 中为每个分区创建一个条目,该条目将在启动时由内核读取,并且文件系统将自动挂载。

默认情况下,您在操作系统安装期间创建的任何分区都将自动添加到 fstab 文件中。 让我们深入了解 fstab 的结构以及怎样使用 fstab。

笔记 : 在编辑 fstab 文件之前,最好备份文件。 如果万一出现问题,您可以恢复备份副本。

/etc/fstab 文件的结构

Fstab 位于 /etc/ 目录并归根用户所有。 所以你应该使用编辑文件 sudo 特权或作为 root 用户。

通过运行以下命令来显示 fstab 文件以了解其结构。

$ cat /etc/fstab
$ cat /etc/fstab | grep -i -v "^#" | column -t # Skip comments and format
fstab 文件的内容

Fstab 文件由六列(部分)组成。

  1. 文件系统 – 已分区并在其上创建文件系统的块设备。
  2. 安装点 – 文件系统安装在系统中的位置。
  3. 类型 – 文件系统类型(Ext4、Ext3、swap、Xfs 等)
  4. 选项 – 这决定了挂载文件系统时要考虑的挂载参数
  5. 倾倒 – 这是用于备份的目的 dump 效用。 将其设置为零意味着禁用备份,而设置为零意味着启用对给定设备/介质的备份。
  6. 经过 – 引导时文件系统检查由 fsck 效用。 零将禁用文件系统检查,对于根文件系统,它应该设置为 1,对于其他分区,它应该设置为 2。

每个文件系统都在单独的行上进行描述。 每行的字段由制表符或空格分隔。

让我们详细了解这六个参数。

1.文件系统

在 fstab 的第一列中,您需要指出要挂载的分区。 您可以使用块设备名称,例如 /dev/sda* 或使用 UUID。

当您使用 mkfs 命令将为该特定分区创建一个 UUID。

假设您创建了一个新分区,它是 sdb1. 在这种情况下,您的 fstab 将如下所示。

/dev/sdb1 /home ext4 defaults 0 0
使用名称挂载

要获取任何文件系统的块 ID,请运行以下命令。

$ blkid                # Print info about all fs.
$ blkid /dev/sdb1      # Print info about given fs alone.

现在使用此块 ID,您可以安装文件系统,如下图所示。

使用 UUID 挂载使用 UUID 挂载

2. 挂载点

在第二列中,您必须指定挂载点目录。 挂载点是指文件系统中将挂载分区驱动器的目录。

如下图所示,每个分区都安装在不同的目录下。 为了 example分区 /dev/sdb1 专用于主目录并安装在 /home.

挂载点挂载点

假设您创建了一个大小为 100GB 并使用 EXT4 作为分区类型的新分区。 fstab 条目将如下所示。 这里 /mnt/data1 是挂载点。

UUID=xxxx-xxx-xxx /mnt/data1/ ext4 defaults 0 0

要么

/dev/sdb2 /mnt/data1/ ext4 defaults 0 0

3.文件系统类型

在这里您将提到文件系统类型(EXT2、EXT3、EXT4、XFS、VFAT、SWAP 等)。 如果你想知道 文件系统类型 对于块设备,使用 blkid 要么 lsblk 命令。

$ lsblk -f /dev/sdb1
NAME FSTYPE LABEL UUID                                 MOUNTPOINT
sdb1 ext4         365c64d7-4d65-4cdf-8ce1-0def8bb41997 /home
$ blkid /dev/sdb1
/dev/sdb1: UUID="365c64d7-4d65-4cdf-8ce1-0def8bb41997" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="8f174339-01"
文件系统类型文件系统类型

4. 安装选项

这是一个重要的列,您将在其中传递文件系统的挂载选项。 有很多挂载选项可以使用。 对于正常使用,使用默认选项就足够了。 选项默认指向七的组合(rw, suid, dev, exec, auto, nouser, 和 async) 选项。

让我们看看默认选项的作用。

  • rw – 这告诉文件系统以读写模式挂载。 发生错误时,您可以使用选项使文件系统以只读模式挂载 errors=remount-ro.
  • suid – 任何相关的操作 suidsgid 将允许通过此选项。
  • dev – 它将解释文件系统上的字符和块设备。 如果您不想解释字符和块设备,您可以显式使用 nodev 选项。
  • exec – 从文件系统中,您可以通过设置 exec 选项来执行二进制文件。 与此相反,您可以使用 noexec 不从文件系统执行二进制文件的选项。
  • auto – 此选项负责在引导期间或从终端运行 mount -a 命令时自动挂载文件系统。 与此相反,有 noauto 仅允许单独挂载文件系统的选项。
  • nouser – 只有超级用户才能挂载文件系统。 您还可以使用“user”和“users”选项来设置普通用户挂载和卸载文件系统。
  • async – 所有的 IO 操作都应该异步完成。 如果您使用“同步”选项,则 IO 操作将同步完成。

根据要求,您可能需要使用不同的选项。 如果您的环境中有任何现有的生产服务器,我建议您查看 fstab 文件,它可以让您很好地了解所使用的挂载选项。

安装选项安装选项

5. 转储

此列专门用于备份目的。 当它设置为 1 时,转储实用程序将进行备份。 现在这是一个过时的功能,因为它最初设计用于在磁带中为旧文件系统进行备份。

它是 建议将其设置为零.

转储 fstab 中的列转储 fstab 中的列

6.通过

在启动期间 fsck 实用程序将根据我们在第六列中提供的值进行文件系统检查。 如果将值设置为 或离开它 空的,文件系统检查将被禁用。

根文件系统应始终指定为值 1. 对于其他文件系统,您可以将值设置为 2. 由于我使用 VM 进行演示,因此我已将所有值设置为零。

fstab 中的传递列fstab 中的传递列

如果您在 fstab 文件中犯了任何错误,并且当您重新启动机器时,它将进入 紧急模式. 在紧急模式下,将没有网络接口,因此您必须直接在控制台中进行调试。

紧急模式启动进入紧急模式

您必须输入 root 进入紧急模式的密码。 运行以下命令并慢慢滚动以查看错误消息。 就我而言,我故意删除了分隔符(/) /dev/sdb1.

修复与 Fstab 文件相关的启动问题修复与 Fstab 文件相关的启动问题

在紧急模式下,如果文件系统以只读模式挂载,那么您必须挂载到 rw 模式和编辑 fstab 文件来解决问题。 重新挂载文件系统 rw 模式运行以下命令。

$ mount -o rw,remount /

现在编辑 fstab 以修复错误并重新启动机器。 现在你的机器应该可以正常启动了。

$ reboot

为避免在启动时出现问题,您可以运行 mount 添加后的命令 fstab 条目。

看看下面的图片,我在其中添加了一个新条目 /dev/sdb2. 我没有指定文件系统类型,所以当我运行时它会抛出一个错误 mount 命令。

文件系统类型错误文件系统类型错误
$ mount -a
mount: /mnt: unknown filesystem type 'defaults'.

什么是 Mtab 文件?

当您运行 mount 命令而不传递任何参数时,它会打印已安装文件系统的列表。

$ mount

还有一个文件叫 在里面 /etc/ 目录。 当你看 /etc/mtab,它将与输出完全相同 mount 命令。

让我们看看手册页中关于 mtab 文件的内容。

什么是mtab文件什么是mtab文件

/etc/mtab 文件符号链接到安装在 proc 文件系统。 如果你运行 mount 要么 umount 命令结果将在安装中更新。

$ ls -ln /etc/mtab
lrwxrwxrwx 1 0 0 19 Jan 9 17:45 /etc/mtab -> ../proc/self/mounts

总结一下 fstab 和 mtab 的区别,fstab 用于在引导时挂载文件系统,而 mtab 用于显示挂载的文件系统列表。

如果 /etc/mtab 文件被意外损坏或删除,您可以使用以下命令重新生成它。

$ sudo sh -c 'grep -v rootfs /proc/mounts > /etc/mtab'

结论

在本文中,我们讨论了什么是 fstab 和 mtab,以及系统在启动时存储和读取分区信息的重要性。 我们还讨论了当 fstab 文件中出现错误时会发生什么。

资源: