内核未挂载 rootfs ext4

内核未挂载 rootfs ext4

我有一台机器,它有一个 ext4 分区作为 rootfs。内核被放置在另一个分区中。一段时间后,内核打印出恐慌,因为 rootfs 已损坏。运行 fsck 后,它按预期启动。我的问题是为什么内核没有尝试恢复文件系统以及为什么会发生这种错误,尽管 ext4 具有电源弹性。 ext4损坏导致内核无法挂载rootfs的原因是什么?

谢谢!

答案1

内核没有尝试恢复文件系统,因为系统必须为此进行配置。在类 Unix 系统上,用户可能有不同的文件系统(luks、raid、btrfs、zfs 等),其配置和行为彼此显着不同。因此,许多发行版中的默认行为被配置为对磁盘上存储的数据无害。文件系统损坏的原因可能不同。最坏的情况是硬件故障。

在系统tune2fs命令中,可以使用 -c (max-mount-counts) 选项在每次重新启动时触发强制 fsck。此选项设置安装次数,之后将检查文件系统,因此将其设置为 1 将在每次计算机启动时运行 fsck。将其设置为 -1 或 0 会重置此值(e2fsck 和内核将忽略文件系统挂载的次数)。

sudo tune2fs -c 1 /dev/sdXY

为此,您需要确保要使用 fsck 检查和修复的分区的传递号设置大于 0 /etc/fstab(/etc/fstab 中的最后一列)。根分区应设置为 1(首先检查),而其他要检查的分区应设置为 2。

# /etc/fstab: static file system information.
/dev/sda1  /      ext4  errors=remount-ro  0  1
/dev/sda5  /home  ext4  defaults           0  2

此外,您还需要将fsck.repair=yes内核参数添加到引导加载程序配置中以启用自动 fs维修无需用户干预。

相关内容