在本指南中,我们将了解什么是 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 文件由六列(部分)组成。
- 文件系统 – 已分区并在其上创建文件系统的块设备。
- 安装点 – 文件系统安装在系统中的位置。
- 类型 – 文件系统类型(Ext4、Ext3、swap、Xfs 等)
- 选项 – 这决定了挂载文件系统时要考虑的挂载参数
- 倾倒 – 这是用于备份的目的
dump
效用。 将其设置为零意味着禁用备份,而设置为零意味着启用对给定设备/介质的备份。 - 经过 – 引导时文件系统检查由
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,您可以安装文件系统,如下图所示。
2. 挂载点
在第二列中,您必须指定挂载点目录。 挂载点是指文件系统中将挂载分区驱动器的目录。
如下图所示,每个分区都安装在不同的目录下。 例如,分区 /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
– 任何相关的操作suid
和sgid
将允许通过此选项。dev
– 它将解释文件系统上的字符和块设备。 如果您不想解释字符和块设备,您可以显式使用 nodev 选项。exec
– 从文件系统中,您可以通过设置 exec 选项来执行二进制文件。 与此相反,您可以使用noexec
不从文件系统执行二进制文件的选项。auto
– 此选项负责在引导期间或从终端运行 mount -a 命令时自动挂载文件系统。 与此相反,有noauto
仅允许单独挂载文件系统的选项。nouser
– 只有超级用户才能挂载文件系统。 您还可以使用“user”和“users”选项来设置普通用户挂载和卸载文件系统。async
– 所有的 IO 操作都应该异步完成。 如果您使用“同步”选项,则 IO 操作将同步完成。
根据要求,您可能需要使用不同的选项。 如果您的环境中有任何现有的生产服务器,我建议您查看 fstab 文件,它可以让您很好地了解所使用的挂载选项。
5. 转储
此列专门用于备份目的。 当它设置为 1 时,转储实用程序将进行备份。 现在这是一个过时的功能,因为它最初设计用于在磁带中为旧文件系统进行备份。
这是 建议将其设置为零.
6.通过
在启动期间 fsck
实用程序将根据我们在第六列中提供的值进行文件系统检查。 如果将值设置为 零 或离开它 空的,文件系统检查将被禁用。
根文件系统应始终指定为值 1. 对于其他文件系统,您可以将值设置为 2. 由于我使用 VM 进行演示,因此我已将所有值设置为零。
修复与 Fstab 文件相关的启动问题
如果您在 fstab 文件中犯了任何错误,并且当您重新启动机器时,它将进入 应急模式. 在紧急模式下,将没有网络接口,因此您必须直接在控制台中进行调试。
您必须输入 root
进入紧急模式的密码。 运行以下命令并慢慢滚动以查看错误消息。 就我而言,我故意删除了分隔符(/) /dev/sdb1
.
在紧急模式下,如果文件系统以只读模式挂载,那么您必须挂载到 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 文件的内容。
这 /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 文件中出现错误时会发生什么。
资源:
- https://www.redhat.com/sysadmin/etc-fstab
- https://wiki.archlinux.org/title/Fstab
/etc/fstab 文件/etc/mtab 文件文件系统表LinuxLinux 管理Linux 基础Linux 命令Linux 文件系统表Linux 文件系统Linux howtoLinux 故障排除mtab