当前位置: 首页>>技术教程>>正文


在Linux上,如何在系统重新引导后强制fsck检查文件系统

, , ,
本文将说明有关如何强制fsck在下次系统重新引导时执行文件系统检查,或如何强制文件系统检查是否有系统重新引导次数(无论是根安装点还是非根安装点)的过程。

让我们从讨论一些工具开始,这些工具可用于获取文件系统信息以及在系统重新引导后控制文件系统检查的配置。我们要讨论的工具是tune2fs文件系统管理实用程序。使用tune2fs我们可以导出与文件系统运行状况检查相关的一些重要信息。下列linux命令会告诉文件系统何时是最后一次/dev/sdX已检查:


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

可以通过以下方式获取的其他有用信息tune2fs命令涉及我们多少次/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 2015。自上次检查以来,已挂载此文件系统157下一次文件系统fsck检查之前的安装次数和最大装载量。在上述情况下,值-1表示已禁用fsck。



现在,我们已经了解了一些tune2fs基础知识,让我们讨论一下PASS系统配置选项/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

我们已经使用blkid命令检索给定分区的UUID,然后使用检索到的分区UUID获取与以下内容有关的相关信息:/dev/sdb1/etc/fstbab。 fsck使用最后一个列(即列6)(也称为fsck PASS列)来确定fsck是否应在挂载文件系统之前检查文件系统以及给定分区的顺序/etc/fstab应该检查一下。 fstab PASS列的可能条目为0,1和2。

  1. 0-禁用,即不检查文件系统
  2. 1-具有此PASS值的分区具有更高的优先级,请首先检查。此值通常设置为root/划分
  3. 2-具有此PASS值的分区将最后检查

fstab PASS值,上次检查的值和安装数之间的关系如下:
在系统引导过程中,检查的第一个值是fstab PASS值。如果此值为0,则不检查其他值(豁免。请参见下面的“对根分区强制使用fsck”),然后fsck将不执行文件系统检查。如果在/etc/fstab是0以外的任何值,即1或2,然后检查最大安装次数和总安装次数。如果最大安装数的值大于或等于安装总数的值,则将执行fsck的文件系统检查。几个例子:


FSCK DISABLED
fstab PASS: 1
Maximum mount count:      -1
Mount count:              157
----
FSCK DISABLED
fstab PASS: 0
Maximum mount count:      -1
Mount count:              157
----
FSCK ON NEXT REBOOT
fstab PASS: 1 or 2
Maximum mount count:      1
Mount count:              157
----
FSCK DISABLED
fstab PASS: 0
Maximum mount count:      1
Mount count:              1
----
FSCK ON NEXT REBOOT
fstab PASS: 1 or 2
Maximum mount count:      1
Mount count:              1
----
NO FSCK ON NEXT REBOOT
fstab PASS: 1 or 2
Maximum mount count:      200
Mount count:              157


强制fsck进行根分区

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


# touch /forcefsck

此空文件将临时覆盖任何其他设置并强制执行fsck在下次系统重新引导时检查文件系统。检查文件系统后,forcefsck文件将被删除,因此下次重新启动文件系统时将不再进行检查。为了启用更永久的解决方案并在每次重新引导时强制检查文件系统,我们需要操纵文件系统的“最大安装计数”参数。下列linux命令将确保该文件系统/dev/sdb1每次重新引导Linux系统时都会检查该选项。请注意,为此,fsck的PASS值/etc/fstab如上所述,必须将其设置为正整数。


# tune2fs -c 1 /dev/sdb1

或者,我们可以在每10次重启后设置fsck:


# tune2fs -c 10 /dev/sdb1

对所有其他非根分区强制使用fsck

与根分区相反,创建空forcefsck文件将不会在重启时触发分区检查。强制在所有其他非根分区上使用fsck的唯一方法是在以下范围内操纵文件系统的“最大安装计数”参数和PASS值/etc/fstab配置文件。要强制在非根分区上检查文件系统,请在以下位置更改fsck的PASS值/etc/fstab值2。例如:


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

然后将最大安装文件系统参数更改为正整数,具体取决于您希望允许不检查而挂载指定文件系统的次数。每次重新启动时强制fsck:


# tune2fs -c 1 /dev/sdb1

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


# tune2fs -c 5 /dev/sdb1

要禁用fsck运行:


# tune2fs -c 0 /dev/sdb1
OR
# tune2fs -c -1 /dev/sdb1

它将文件系统的“最大安装数”参数设置为-1

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7790.html,未经允许,请勿转载。