我正在尝试处理一个非常罕见的极端情况,即我的系统在 ext4 文件系统中存在轻微损坏。这个触发器 systemd 的emergency.service
,我正在尝试改变它的行为以自动修复 fs。
无论如何,有没有办法稍微改变分区/文件系统以最小的数据丢失机会来诱导这种状态?我只需要fsck
返回有问题的地方。
我正在尝试处理一个非常罕见的极端情况,即我的系统在 ext4 文件系统中存在轻微损坏。这个触发器 systemd 的emergency.service
,我正在尝试改变它的行为以自动修复 fs。
无论如何,有没有办法稍微改变分区/文件系统以最小的数据丢失机会来诱导这种状态?我只需要fsck
返回有问题的地方。
如果 Emergency.service 运行,则 initrd 切换 root 或 fsck 已经尝试过但失败了。可以通过内核命令行参数 fsck.repair=yes 告诉 systemd-fsck-root.service 始终修复 (fsck -y)
对于 /etc/fstab(第 6 个字段)中 passno 值为 0 的任何文件系统,将跳过 fsck。在具有损坏历史的系统中可能是一个坏主意,但如果文件系统安装允许继续操作。
在 fstab 中使用 nofail 选项可以使 local-fs.target 不需要文件系统。但是,这不适用于 root fs。考虑在您怀疑包含问题文件的挂载点创建一个新文件系统,例如 /var/lib/whatever。使用 nofail 选项,即使挂载失败,也不会掉入紧急外壳。
备份是避免丢失重要数据的最后一道防线。不要依赖修复来解决问题,即使是在成熟的文件系统上也是如此。
e2fsprogs 测试套件中存在一些损坏的文件系统。实际使用起来很棘手,尤其是作为根 fs。使用它对您的块设备进行映像,将其扩展得更大,并从备份中恢复您的数据。