在Linux上如何强制FSCK重新启动后检查文件系统

我们将要讨论的工具是“tune2fs”文件系统管理实用程序。使用“tune2fs”,我们可以导出一些与文件系统健康检查相关的重要信息。

最后一次检查文件系统/dev/sdx是什么时候?

# tune2fs -l /dev/sdbX | grep Last\ c
Last checked:             Sun Dec 13 09:14:22 2014

我们的/dev/sdX文件系统已经安装了多少次:

# tune2fs -l /dev/sdbX | grep Mount
Mount count:              157

在强制文件系统检查之前允许挂载多少次:

# tune2fs -l /dev/sdbX | grep Max
Maximum mount count:      -1

根据以上输出,我们可以建立以下信息摘要。上次检查“/dev/sdbX”文件系统是在“Sun Dec 13 09:14:22 2014”。自上次检查以来,在下一次文件系统fsck检查之前,此文件系统已装载“157”次,最大挂载次数值为“-1”表示禁用fsck。

让我们讨论一下在/etc/fstab文件中找到的系统配置选项,该文件包含所有启动时可装载的分区及其相关装载选项。

# blkid | grep sdb1
/dev/sdb1: UUID="c6e22f63-e63c-40ed-bf9b-bb4a10f2db66" TYPE="ext2"
# grep c6e22f63-e63c-40ed-bf9b-bb4a10f2db66 /etc/fstab
UUID=c6e22f63-e63c-40ed-bf9b-bb4a10f2db66 /mnt            ext2    errors=remount-ro 0      0

最后一列是第6列,也称为fsck PASS列,fsck使用该列确定fsck是否应在安装文件系统之前检查文件系统,以及检查“/etc/fstab”中给定分区的顺序。fstab PASS列的可能条目为0、1和2。

  • 0 - 已禁用,即不检查文件系统
  • 1 - 具有此传递值的分区具有更高的优先级并首先检查。此值通常设置为根/partition
  • 2 - 将最后检查具有此通行值的分区

对root分区强制fsck

强制对根分区(如“/dev/sda1”)执行fsck文件系统检查的最简单方法是:
在分区的根目录中创建一个名为“forcefsck”的空文件。

# touch /forcefsck

此空文件将临时覆盖任何其他设置,并在下次系统重新启动时强制“fsck”检查文件系统。

检查文件系统后,“forcefsck”文件将被删除,因此下次重新启动文件系统时不会再次检查文件系统。

为了每次重新启动时强制检查文件系统,我们需要操纵文件系统的“Maximum mount count 最大挂载计数”参数。

下面的linux命令将确保每次linux系统重新启动时都检查文件系统“/dev/sdb1”:

# tune2fs -c 1 /dev/sdb1

或者,我们可以在每10次重新启动后执行FSCK:

# tune2fs -c 10 /dev/sdb1

对其他非root分区强制FSCK

对所有其他非根分区强制FSCK的唯一方法是操纵文件系统的“Maximum mount count最大挂载计数”参数,
并在“/etc/fstab”配置文件中设置PASS值。

例如:

UUID=c6e22f63-e63c-40ed-bf9b-bb4a10f2db66 /mnt            ext2    errors=remount-ro 0      2

并将maximum mounts filesystem参数更改为正整数,具体取决于您希望允许在不检查的情况下挂载指定文件系统的次数。

每次重新启动时强制fsck:

# tune2fs -c 1 /dev/sdb1

或者,我们可以将FSCK设置为在每5次重新启动后检查文件系统:

# tune2fs -c 5 /dev/sdb1

要禁用fsck:

# tune2fs -c 0 /dev/sdb1
或者
# tune2fs -c -1 /dev/sdb1

它将把文件系统的“Maximum mount count最大挂载计数”参数设置为“-1”。

日期:2020-07-07 20:56:19 来源:oir作者:oir