65

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

 5 years ago
source link: http://os.51cto.com/art/201903/592810.htm?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

这可以通过名为fsck的系统实用程序( 文件系统一致性检查)完成。 此检查可在引导期间自动完成或手动运行。

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

何时在Linux中使用fsck

当您想要运行fsck时,有不同的场景。 以下是一些例子:

  • 系统无法启动。
  • 系统上的文件已损坏(通常您可能会看到输入/输出错误)。
  • 附加驱动器(包括闪存驱动器/ SD卡)无法正常工作。

fsck可用选项

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

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

如何运行fsck来修复Linux文件系统错误

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

如果我在安装分区时尝试运行fsck会发生什么。

# fsck /dev/sdb  

YRJRzeu.png!web

在已安装的分区上运行fsck

为避免这种情况,请使用卸载分区。

# umount /dev/sdb 

然后fsck可以安全地运行。

# fsck /dev/sdb  

aeMB7nU.png!web

在Linux分区上运行fsck

了解fsck退出代码

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

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

修复Linux文件系统错误

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

# fsck -y /dev/sdb 

-y标志, “yes”来自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菜单。 选择“ 高级选项 ”。

nUJZz2R.png!web

Grub Advance Options

然后选择“ 恢复模式 ”。

ZFRJFv7.png!web

选择Linux恢复模式

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

AZZ7nqi.png!web

选择fsck Utility

系统将询问您是否希望重新安装/ filesystem。 选择“yes” 。

me6JNjE.png!web

确认根文件系统

你应该看到类似的东西。

3qMVbuM.png!web

运行fsck文件系统检查

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

mIRFRzM.png!web

选择正常启动

结论

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK