为了清除 md 中的软件错误,我使用以下命令将 RAID 的一半(RAID1 中的 /dev/sda1 和 /dev/sdb1)标记为错误:
mdadm /dev/md2 --fail /dev/sdb1
mdadm /dev/md2 --remove /dev/sdb1
但现在我想改用“失败”的一半。ie 而不是 using /dev/sda1
,我想使用/dev/sdb1
,但 mdadm 拒绝将其上线:
mdadm --stop /dev/md2
mdadm -A /dev/md2 /dev/sdb1 --run --force
这失败/dev/sdb1
了,因为它不再考虑“备用”而不是数组的实际成员。
您正在使用
-A
which is--assemble
,但您应该使用-a
which is--add
。如果我没记错的话,(重新)添加到现有阵列的设备总是作为备用设备添加,然后不久内核会发现该阵列已降级并且有备用设备,然后它将开始重新镜像。你可以看到这个
watch cat /proc/mdstat
。假设阵列未组装或运行(OP 显示为未运行),则应运行的整个命令是以下命令之一:
如果阵列未运行:
但是,如果阵列正在运行:
我认为取消标记分区的最简单方法是将其再次添加到数组中。顺便说一句,如果您需要进行测试,请不要从阵列中移除驱动器。将其标记为有故障,如果您重新启动,它将退回到另一个分区。