网站搜索

如何使用“fsck”修复 Linux 中的文件系统错误


Linux 文件系统负责组织数据的存储和恢复方式。无论如何,随着时间的推移,文件系统可能会损坏,并且其某些部分可能无法访问。如果您的文件系统出现这种不一致,建议验证其完整性。

这可以通过名为fsck文件系统一致性检查)的系统实用程序来完成,该实用程序在启动时自动检查根文件系统或手动运行。

在本文中,我们将回顾 fsck 命令及其用法,以帮助您修复 Linux 磁盘错误。

何时在 Linux 中使用 fsck 命令

当您想要运行fsck时,有不同的情况。这里有一些例子:

  • 系统无法启动。
  • 系统上的文件被损坏(通常您可能会看到输入/输出错误)。
  • 连接的驱动器(包括闪存驱动器/SD 卡)未按预期工作。

fsck 命令选项

fsck 命令需要以超级用户权限或root 运行。您可以将它与不同的参数一起使用。它们的使用取决于您的具体情况。下面您将看到一些更重要的选项:

  • -A – 用于检查所有文件系统。该列表取自/etc/fstab
  • -C – 显示进度条。
  • -l – 锁定设备以保证在检查期间没有其他程序会尝试使用该分区。
  • -M – 不检查已安装的文件系统。
  • -N – 仅显示将要执行的操作 – 不进行实际更改。
  • -P – 如果您想并行检查文件系统,包括根。
  • -R – 不检查根文件系统。这仅对“-A”有用。
  • -r – 提供正在检查的每个设备的统计信息。
  • -T – 不显示标题。
  • -t – 专门指定要检查的 Linux 文件系统类型。类型可以是逗号分隔的列表。
  • -V – 提供正在执行的操作的描述。

运行 fsck 命令修复 Linux 文件系统错误

为了运行fsck,您需要确保您要检查的分区尚未安装。出于本文的目的,我将使用安装在 /mnt 中的第二个驱动器 /dev/sdb

如果我在安装分区时尝试运行fsck,则会发生以下情况。

fsck /dev/sdb

为了避免这种情况,请使用以下命令卸载分区。

umount /dev/sdb

然后fsck就可以安全地运行了。

fsck /dev/sdb

了解 fsck 退出代码

运行fsck后,它将返回退出代码。这些代码可以通过运行以下命令在 fsck 手册中查看:

man fsck

0      No errors
1      Filesystem errors corrected
2      System should be rebooted
4      Filesystem errors were left uncorrected
8      Operational error
16     Usage or syntax error
32     Checking canceled by user request
128    Shared-library error            

Fsck 修复 Linux 文件系统

有时,在一个文件系统上会发现多个错误。在这种情况下,您可能希望 fsck 自动尝试更正错误。这可以通过以下方式完成:

fsck -y /dev/sdb

-y 标志会自动对 fsck 的任何提示显示 “yes ” 以更正错误。

同样,您可以在所有文件系统上运行相同的命令(无需 root):

fsck -AR -y 

如何在 Linux 根分区上运行 fsck

在某些情况下,您可能需要在系统的root分区上运行fsck。由于在安装分区时无法运行 fsck,因此您可以尝试以下选项之一:

  • 系统启动时强制执行 fsck
  • 在救援模式下运行 fsck

我们将审查这两种情况。

系统启动时强制执行 fsck

这相对容易完成,您唯一需要做的就是在系统的根分区中创建一个名为 forcefsck 的文件。使用以下命令:

touch /forcefsck

然后您可以简单地强制或安排重新启动系统。在下次启动期间,将执行fsck。如果停机时间很重要,建议仔细计划,因为如果系统上有许多已使用的 inode,fsck 可能会花费一些额外的时间。

系统启动后,检查该文件是否仍然存在:

ls /forcefsck

如果确实如此,您可能需要将其删除,以避免每次系统启动时fsck

在救援模式下运行 fsck

救援模式下运行fsck需要更多步骤。首先,准备系统重新启动。停止任何关键服务,例如 MySQL/MariaDB 等,然后输入。

reboot

在引导过程中,按住 shift 键以显示 grub 菜单。选择“高级选项”。

然后选择“恢复模式”。

在下一个菜单中选择“fsck”。

系统会询问您是否希望重新安装 / 文件系统。选择“是”

您应该会看到与此类似的内容。

然后,您可以通过选择“恢复”来恢复正常启动。

结论

在本教程中,您学习了如何使用 fsck 并在不同的 Linux 文件系统上运行一致性检查。如果您对 fsck 有任何疑问,请随时在下面的评论部分提交。