我如何可能反复损坏 RAID1 上的超级块
在过去六个月中,我曾两次因超级块问题而导致 RAID1 根阵列变得不可用。不幸的是,第一次我没有记好笔记,但有超级块和糟糕的魔法的问题。就像最近发生的情况一样,当主机冻结时,我关闭了一些 KVM 虚拟机,强制硬重启,之后我启动到了带有超级块魔法错误的 intramfs 提示符。
我准备放弃尝试恢复我的安装并返回到对我有用的地方(镜像 LVM 上的 Arch),但我想知道为什么会发生这种情况。我是否以错误的方式配置了分区?我是否应该假设没有硬件 RAID,任何崩溃或强制重启都会导致超级块损坏?这是错误的结果吗?如果是的话,它可能是在 mdadm、发行版、KVM 中,还是在没有详尽测试的情况下无法猜测?
在当前的崩溃中,相关错误似乎是:
md1: invalid bitmap file for superblock: bad magic
md1: failed to create bitmap (-22)
当我使用 Gparted 救援盘启动时,没有 md1,但有一个 md125(三者中最小的 ID 号)。它对 gparted 应用程序不可见,但我可以在 /dev/md125 下看到它,如果我运行,sudo mdadm --detail /dev/md125
我会得到指示它处于活动状态、失败且未启动的输出。另外,“超级块是一致的”
我也尝试过:
e2fsck -b 8193 /dev/sda2
e2fsck -b 8193 /dev/sdb2
e2fsck -b 32768 /dev/sda2
e2fsck -b 32768 /dev/sdb2
每次我得到关于“超级块中的坏幻数”的输出
这是否表明损坏已在阵列中复制? 如果是这样,我可以防止这种情况发生吗?
细节:
- 这种情况发生在两对不同的驱动器上,每对单独购买。
- 在第一次损坏事件发生后的几个月内,驱动器在 LVM 下表现良好。当我拆掉那个系统(Arch)时,并不是因为任何问题,我只是想再次尝试 Ubuntu Server 和 RAID1。
- 计算机连接有 UPS,以防止电源波动,这一点我确实得到了。不幸的是,电源没有接地,但我的理解是,这对于电涌很重要,在我那里这并不是一个大问题。
- Ubuntu Server 18.04.2 出现了问题,在此期间我在同一驱动器上使用带有 LVM 的 Arch,没有出现任何问题。
- 我已经运行了几遍 memtest 并且没有出现错误
- 我有 ECC RAM(无缓冲)
- 系统是 x399 Taichi 主板上的 Ryzen Threadripper 1950x。
我的全部观点是通过提供针对驱动器故障的恢复能力来最大限度地延长正常运行时间,但相反,我似乎减少了正常运行时间,因为尽管驱动器物理上可能没有问题,但 RAID1 超级块不知何故被损坏了。这是从 RAID1 启动的固有风险吗?
编辑:如果我运行mdadm --detail /dev/mdX
,我会得到以下信息:
Edit2:另外,在 initramfs 中, /etc/mdadm/mdadm.conf 看起来像这样:
Edit3:这个问题似乎是间歇性的。我启动到 Gparted 并能够一次看到有问题的 md 设备,并且它恢复正常,但重新启动后再次降级。
Edit4:看来我可以通过在 gparted 中停止阵列然后重新启动到 gparted 来使设备恢复并显示健康(但如果我尝试启动我的安装,仍然会损坏)
Edit5:以上是误报。只是md125现在是我的健康分区之一,而有问题的分区已经变成md126并且仍然降级。
Edit6:如果我停下来组装我得到的数组mdadm: failed to RUN_ARRAY /dev/md126: Invalid argument