从 raid-5 恢复到 raid-6 重塑和崩溃,mdadm 报告 0K/秒重建

从 raid-5 恢复到 raid-6 重塑和崩溃,mdadm 报告 0K/秒重建

我有一个类似的问题旧线程但我并没有坚持 100% CPU 使用率。

我在 5x3TB raid-5 阵列中添加了一个磁盘 (sdd1),并将其升级到 raid-6,一切都很顺利,直到电源背板出现故障并且服务器在写入过程中崩溃。

mdadm --assemble 需要一个临时文件,我在升级时指定了该临时文件,并使用 --assemble --temporary-file= 将数组设置为活动状态并重塑。问题是,它正在以 0K/秒的速度重塑,并且无法完成。

顺便说一下,临时文件是零字节。

我有什么选择?我现在可以访问我的文件,因此如果我能找到 7 TB 的存储空间,我可以花几天时间复制所有内容、失败并从头开始重建阵列,但是有更简单的选择吗?

我是否可以使 sdd1(我尝试添加的新驱动器)失败并重新启动新的五磁盘 raid-5 到六磁盘 raid-6 阵列重建?或者这会扰乱假设的 raid-6 阵列,但实际上主要是 raid-5,因为它没有完成 raid-5 -> raid-6 重塑?

cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md127 : active raid6 sdd[0] sdb1[6] sdf[5] sde[3] sda[2] sdc[1]
      11721060352 blocks super 1.2 level 6, 512k chunk, algorithm 18 [6/5] [UUUUU_]
      [=>...................]  reshape =  8.4% (247529472/2930265088) finish=3353419520.0min speed=0K/sec

unused devices: <none>

答案1

尝试:

echo frozen > /sys/block/md127/md/sync_action
echo reshape > /sys/block/md127/md/sync_action

/dev/sdd此时您的 RAID-6 可能已降级(缺失),因此:

  1. 运行watch cat /proc/mdstat并密切关注它,直到没有重新同步或重塑活动。
  2. 跑步mdadm --add /dev/md127 /dev/sdd
  3. 再次运行watch cat /proc/mdstat

这应该能让重塑以不错的速度运行。

顺便说一句,每 2 秒运行cat /proc/mdstat一次watch不应该是一个很大的 CPU 负载,但是对于要运行几个小时的东西,您可能不需要 2 秒更新。每 10 或 30 秒更新一次就足够了,例如watch -n 30 cat /proc/mdstat在上面的步骤 3 中使用。

相关内容