如何对 ext4 文件系统结构进行全面检查?

Ego*_*off 31 partition debian fsck

我有 2TB ext4 分区,上面有 50 万个文件。
我想检查这个分区是否包含任何错误。
我不想搜索坏块,只应该检查逻辑结构。

我已卸载分区并运行fsck /dev/sda2,但 fsck 立即返回退出代码 0,而无需实际检查整个文件系统。
我预计完整的分区检查需要几个小时才能完成。
我已阅读man fsck但没有找到“彻底测试”的选项。

我担心我的分区可能有一些扇区被垃圾数据意外覆盖。
我的硬盘以前连接到另一个操作系统,ext4 分区可能会因该操作系统的错误行为而受到损害。
这就是为什么我要确保整个树结构是完全正确的。

换句话说,我想执行类似于实用程序chkdsk.exe在 Windows 上所做的检查。
我应该在 Debian 上使用什么来完全检查 ext4 文件系统?

Ste*_*itt 34

正如周六提到的?Katsura,e2fsck以“强制”模式运行:

e2fsck -f /dev/sda2
Run Code Online (Sandbox Code Playgroud)

即使系统认为文件系统是干净的,这也会强制检查。“详细”选项也很有帮助:

e2fsck -vf /dev/sda2
Run Code Online (Sandbox Code Playgroud)

作为旁注,不适用于您的情况,但如果您使用 LVM 作为您的存储,您可以使用简洁的小lvcheck工具在已挂载的文件系统上运行“离线”文件系统检查(它使用 LVM 快照和更新文件系统元数据(如果检查未发现任何错误)。


小智 8

此外,您可以添加-y标志以避免回答问题。

从手册:

-y 假设yes所有问题的答案都是 ;允许e2fsck以非交互方式使用。

所以从@Sato扩展答案(因为我还不能评论)- 你可以运行:

e2fsck -vfy /dev/sda2
Run Code Online (Sandbox Code Playgroud)

  • 但这可能是有风险的,因为您事先不知道可能会被问到什么问题,并且在最坏的情况下强制对所有问题都给出肯定的答案可能会导致其他可恢复数据的丢失。 (7认同)

the*_*ng2 5

在启动过程中,Linux 系统将检查fstabforcefsck或设备根目录中指定的文件是否存在。如果 fstab 中挂载行的最后一个数字是,0则将在引导期间检查设备。要创建该文件,forcefsck请使用这些命令。

sudo touch /forcefsck
sudo reboot
Run Code Online (Sandbox Code Playgroud)

将此文件放在根目录中,无论 fstab 中的内容如何,​​在(重新)引导期间都会检查相同的卷。

缺点是在 fsck 期间系统不可用,并且不会响应通过 ssh 等远程请求。

(根据@kusalananda 评论进行编辑)

  • 尽管可能是正确的,但这个答案缺乏任何形式的解释。您能否描述您的命令的作用、它们的结果是什么,以及问题中的用户可能在哪里阅读更多相关内容(如果他们找到正确的手册,则可能在哪里了解到这一点等)? (6认同)