我有一个类似的问题旧线程但我并没有坚持 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 可能已降级(缺失),因此:
- 运行
watch cat /proc/mdstat
并密切关注它,直到没有重新同步或重塑活动。 - 跑步
mdadm --add /dev/md127 /dev/sdd
- 再次运行
watch cat /proc/mdstat
。
这应该能让重塑以不错的速度运行。
顺便说一句,每 2 秒运行cat /proc/mdstat
一次watch
不应该是一个很大的 CPU 负载,但是对于要运行几个小时的东西,您可能不需要 2 秒更新。每 10 或 30 秒更新一次就足够了,例如watch -n 30 cat /proc/mdstat
在上面的步骤 3 中使用。