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

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

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

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

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

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

答案1

正如所提到的佐藤桂e2fsck以“强制”模式运行:

e2fsck -f /dev/sda2

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

e2fsck -vf /dev/sda2

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

答案2

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

来自手册

-yyes假设所有问题 的答案都是;允许e2fsck非交互地使用。

因此扩展答案(因为我还不能发表评论)@佐藤- 你可以运行:

e2fsck -vfy /dev/sda2

答案3

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

sudo touch /forcefsck
sudo reboot

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

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

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

答案4

你也可以使用调2fs为此,例如以下命令将在 2 个月或 100 次安装后检查磁盘:

tune2fs -c 100 -i 2m /dev/sda1

相关内容