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