如何使用’fsck’修复Linux文件系统错误

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

这可以通过一个名为fsck文件系统一致性检查)的系统实用工具完成,在引导时自动检查根文件系统或手动运行。

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

何时使用 Linux 中的 fsck 命令

在以下不同情景下,您可能需要运行 fsck。以下是一些示例:

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

fsck 命令选项

需要以超级用户权限或 root 用户运行 fsck 命令。您可以使用不同的参数。其使用取决于您的特定情况。以下是一些更重要的选项:

  • -A – 用于检查所有文件系统。列表取自 /etc/fstab
  • -C – 显示进度条。
  • -l – 锁定设备以确保在检查期间没有其他程序会尝试使用分区。
  • -M – 不检查已挂载的文件系统。
  • -N – 仅显示将要执行的操作,不会实际进行任何更改。
  • -P – 如果要并行检查文件系统,包括根目录,请使用此选项。
  • -R – 不要检查根文件系统。仅当与‘-A‘一起使用时才有用。
  • -r – 提供正在检查的每个设备的统计信息。
  • -T – 不显示标题。
  • -t – 专门指定要检查的Linux文件系统类型。类型可以用逗号分隔的列表指定。
  • -V – 提供正在执行的操作的描述。

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

要运行 fsck,您需要确保要检查的分区未挂载。在本文中,我将使用我的第二个驱动器 /dev/sdb 挂载在 /mnt 中。

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

# fsck /dev/sdb
Run fsck on Mounted Partition

为了避免这种情况,卸载分区。

# umount /dev/sdb

然后可以安全地运行 fsck

# fsck /dev/sdb
Run fsck on Linux Partition

了解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

在某些情况下,您可能需要在系统的分区上运行fsck。由于不能在分区被挂载时运行fsck,您可以尝试以下其中一种选项:

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

我们将审查两种情况。

在系统启动时强制运行fsck

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

# touch /forcefsck

然后你可以简单地强制或安排一次系统重启。在下一次引导时,将执行fsck。如果停机时间很关键,建议仔细计划,因为如果系统上有许多已用inode,fsck可能需要额外的时间。

引导系统后,检查文件是否仍然存在:

# ls /forcefsck

如果存在,您可能希望删除它以避免在每次系统引导时执行fsck

在救援模式下运行fsck

救援模式下运行fsck需要一些额外的步骤。首先,准备好系统进行重启。停止任何关键服务,如MySQL/MariaDB等,然后键入。

# reboot

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

Grub Advanced Options

然后选择“恢复模式”。

Select Linux Recovery Mode

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

Select fsck Utility

系统将询问您是否希望重新挂载您的/文件系统。选择“是”

Confirm Root Filesystem

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

Running fsck Filesystem Check

您学会了如何在不同的Linux文件系统上使用fsck并运行一致性检查。如果您对fsck有任何问题,请不要犹豫在下方评论区提出。

Select Normal Boot
结论

Source:
https://www.tecmint.com/fsck-repair-file-system-errors-in-linux/