如何使用“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,您需要确保要检查的分区未挂载。出于本文的目的,我将使用/dev/sdb
挂载在 中的第二个驱动器/mnt
。
如果我在分区已挂载时尝试运行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
标志会自动“yes”
对 fsck 的任何提示进行纠正错误。
类似地,您可以在所有文件系统上运行相同的操作(无需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 菜单。选择“高级选项”。
然后选择“恢复模式”。
在下一个菜单中选择“ fsck ”。
系统将询问您是否希望/
重新挂载文件系统。选择“yes”
。
您应该会看到与此类似的内容。
然后,您可以通过选择“恢复”来恢复正常启动。
结论
在本教程中,您学习了如何使用 fsck 并在不同的 Linux 文件系统上运行一致性检查。如果您对fsck有任何疑问,请随时在下面的评论部分中提交。