如何在 Linux 上系统重启后强制 fsck 检查文件系统如何在 Linux 上系统重启后强制 fsck 检查文件系统如何在 Linux 上系统重启后强制 fsck 检查文件系统如何在 Linux 上系统重启后强制 fsck 检查文件系统
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

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

检查文件系统是否有错误是 Linux 系统管理的重要组成部分。当遇到读写时间性能不佳或文件系统错误时,这是一个很好的故障排除步骤。在本教程中,我们将解释如何强制 fsck 在下次系统重新启动时执行文件系统检查,或在任意所需次数的系统重新启动时强制执行文件系统检查,无论是 root 系统或非根安装点。

在本教程中您将学习:

  • 如何查看 fsck 最后一次检查文件系统的时间

  • 如何查看和修改/etc/fstab文件中的PASS值

  • 如何对根分区和非根分区强制执行 fsck

查看 fsck 最后一次检查文件系统的时间

让我们首先讨论一些可用于获取文件系统信息的工具以及在系统重启后控制文件系统检查的配置。我们要讨论的工具是tune2fs 文件系统管理实用程序。使用tune2fs我们可以导出一些与文件系统健康检查相关的重要信息。

  1. 以下 Linux 命令将告诉我们最后一次检查文件系统 /dev/sdX 是什么时候:

    
    $ sudo tune2fs -l /dev/sdX | grep Last\ c
    Last checked:             Thu May 12 20:28:34 2022
    
  2. 可以通过tune2fs命令检索的另一个有用信息与我们的/dev/sdX文件系统被安装的次数有关:

    
    $ sudo tune2fs -l /dev/sdX | grep Mount
    Mount count:              157
    
  3. 最后,在强制进行文件系统检查之前允许通过多少个挂载:

    
    $ sudo tune2fs -l /dev/sdX | grep Max
    Maximum mount count:      -1
    

从上面的输出我们可以建立以下信息摘要。 /dev/sdX 文件系统上次检查时间为 2022 年 5 月 12 日星期四 20:28:34。自上次检查以来,此文件系统已挂载 157 次,并且在下一次文件系统 fsck 检查之前达到了最大挂载量。在上述情况下,值 -1 表示 fsck 已禁用。

查看和修改/etc/fstab中的PASS值

现在我们已经了解了一些 tune2fs 基础知识,让我们讨论一下 /etc/fstab 文件中包含启动时所有内容的 PASS 系统配置选项可安装的分区及其相关的安装选项。

首先,使用 blkid 命令找出要检查的文件系统的 UUID 值。


$ blkid /dev/sda3
/dev/sda3: UUID="c020d4d8-c104-4140-aafc-24f7f89f8629" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="22ada8f4-5222-4049-b0fe-a3274516754d"

然后,在 /etc/fstab 文件中 grep 查找该 UUID。


$ grep c020d4d8-c104-4140-aafc-24f7f89f8629 /etc/fstab 
UUID=c020d4d8-c104-4140-aafc-24f7f89f8629 /               ext4    errors=remount-ro 0       0

最后一列(列号 6)是 fsck PASS 列。 fsck 使用它来确定 fsck 是否应在安装文件系统之前检查文件系统,以及应按什么顺序检查 /etc/fstab 中的给定分区。 fstab PASS 列的可能条目为 0、1 和 2。以下是每个数字的含义。

  • 0 – 禁用,即不检查文件系统

  • 1 – 具有此 PASS 值的分区具有更高的优先级并首先检查。该值通常设置为根/分区

  • 2 – 具有此 PASS 值的分区将最后检查

fstab PASS值、最后检查值、挂载次数值之间的关系如下:

在系统启动期间,检查的第一个值是 fstab PASS 值。如果该值为 0,则不会检查其他值,并且 fsck 将不会执行文件系统检查。但是,如果在 /etc/fstab 中找到的 PASS 值不是 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

要强制对分区进行文件系统检查,我们必须首先将 /etc/fstab 中 fsck 的 PASS 值更改为值 2。例如:


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

进行此更改后,请参阅下面的命令示例以完成强制 fsck 运行。

  1. 为了确保在下次重新启动时检查您的文件系统,我们需要操作文件系统的“最大安装计数”参数。以下 tune2fs 命令将确保每次 Linux 系统重新启动时检查文件系统 /dev/sdX。请注意,要发生这种情况,/etc/fstab 中的 fsck 的 PASS 值必须设置为正整数,如上所述。

    
    $ sudo tune2fs -c 1 /dev/sdX
    

    请注意,这将在每次系统重新引导后继续强制执行 fsck,直到您恢复设置。

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

    
    $ sudo tune2fs -c 10 /dev/sdX
    
  3. 或者要禁用该设置,请使用值-1。

    
    $ sudo tune2fs -c -1 /dev/sdX
    OR
    $ sudo tune2fs -c 0 /dev/sdX
    

结束语

在本教程中,我们了解了如何强制 fsck 检查 Linux 系统上根分区或非根分区的文件系统。这可以通过对 /etc/fstab 文件进行必要的编辑以及使用 tune2fs 命令来实现。建议让 fsck 偶尔检查文件系统是否有错误,这可以提醒您硬件故障、提高性能并最大程度地减少数据丢失的可能性。

©2015-2025 艾丽卡 support@alaica.com