第 12 章 文件系统检查
可以使用特定于文件系统的用户空间工具检查文件系统的一致性,并选择性地进行修复。这些工具通常被称为 fsck 工具,其中 fsck 是 文件系统检查 的简化版本。
注意
这些文件系统检查程序只保证跨文件系统的元数据的一致性;它们不知道文件系统中包含的实际数据,且不是数据恢复工具。
发生文件系统不一致的原因可能有多种,包括但不限于硬件错误、存储管理错误和软件 bug 。
在现代元数据日志文件系统变得常见之前,每当系统崩溃或断电时,都需要进行文件系统检查。这是因为文件系统更新可能已被中断,从而导致状态不一致。因此,通常会在启动时在
/etc/fstab
中列出的每个文件系统上运行文件系统检查。对于日志记录文件系统,这通常是一个非常短的操作,因为即使崩溃,文件系统的元数据日志也会确保一致性。
但是,有时可能会出现文件系统不一致或损坏,即使日志记录文件系统也是如此。发生这种情况时,必须使用文件系统检查程序来修复文件系统。以下提供了执行此流程时的最佳实践和其他有用信息。
重要
除非机器没有引导,否则红帽不推荐这样做,否则文件系统非常大,或者文件系统位于远程存储中。通过将
/etc/fstab
中的第六个字段设置为 0,可以在引导时禁用文件系统检查。
12.1. fsck 的最佳实践
通常,运行文件系统检查和修复工具至少可以自动修复发现的一些不一致问题。在某些情况下,如果无法修复严重损坏的 inode 或目录,可能会将它们丢弃。可能会对文件系统进行大量更改。要确保意外或不必要的更改不会永久发生,请执行以下预防步骤:
- 空运行
- 大多数文件系统检查程序都有一个操作模式,用于检查但不修复文件系统。在这个模式中,检查程序会输出它发现的任何错误以及它所执行的操作,而无需实际修改文件系统。注意稍后一致性检查阶段可能会打印额外的错误,因为在修复模式下运行时,它会发现可能在早期阶段已经修复了的不一致问题。
- 首先对文件系统镜像进行操作
- 大多数文件系统都支持创建 元数据镜像,这是仅包含元数据的文件系统的稀疏副本。由于文件系统检查程序仅在元数据上运行,因此此类镜像可用于对实际文件系统修复执行空运行,以评估实际要进行的更改。如果更改可以接受,则可以对文件系统本身进行修复。注意严重损坏的文件系统可能会导致元数据镜像创建出现问题。
- 保存文件系统镜像以进行支持调查
- 如果因为软件错误导致损坏,则预修复文件系统元数据镜像通常有助于支持调查。修复前镜像中存在的损坏模式可能有助于根本原因的分析。
- 仅在卸载的文件系统上运行
- 文件系统修复必须只在卸载的文件系统上运行。该工具必须具有对文件系统的唯一访问权限,或者可能导致进一步的损坏。大多数文件系统工具在修复模式下强制实施这个要求,虽然有些文件系统只支持在挂载的文件系统中只检查模式。如果在挂载的文件系统上运行只检查模式,则可能发现在卸载的文件系统上运行时未找到的错误。
- 磁盘错误
- 文件系统检查工具不能修复硬件问题。如果修复操作成功,文件系统必须是完全可读写的。如果文件系统因为硬件错误而损坏,则必须首先将文件系统移至良好磁盘,例如使用 dd (8) 工具。