我在 KVM(虚拟机管理器 1.3.2)中拥有 Ubuntu 16.04 主机和 3 个 Ubuntu 17.10 来宾。
我将几个块设备从 2 个来宾导出到另一个来宾(我们称之为前端)通过targetcli
util 创建的 iSCSI 门户。导入它们后,我大量使用multipath
来查找相同的“物理”磁盘并md
创建 RAID 10(例如,mdadm --create --quiet --metadata=1.2 /dev/md1 --level=1 --raid-devices=2 /dev/dm-10 /dev/dm-1
)。然后我需要清除这些信息。
问题来了:它不擦拭。我执行通常的步骤(例如,清洁md1
):
1)mdadm -S /dev/md1
2)mdadm --zero-superblock /dev/md1
3)mdadm --zero-superblock /dev/mapper/md1
一切看起来都很好,直到我删除导入的磁盘并在一段时间后重新导入它们:它们随机地出现在 RAID 中。有时RAID组名称与最初创建的名称相差甚远(例如md126和md127,而我只创建了md1,md2,...md12)。这些僵尸 RAID 可以用 掩埋mdadm -S
,但下次导入块设备时它们会再次出现。
为什么--zero-superblock
无法完成其工作?
UPD:正如 @roaima 提到的,命令 2 和 3 等确实返回错误:
Couldn't open /dev/md1 for write - not zeroing
Couldn't open /dev/mapper for write - not zeroing
Couldn't open /dev/mapper/ for write - not zeroing
这与没有这样的设备的答案几乎相同 - 任何垃圾作为参数都会返回相同的错误。
UPD2:我使用了# cat /proc/mdstat
,它告诉我更多关于突袭的信息:
md124 : 无效 vdg[0](S) 5238784块超级1.2 md127 : 无效 vdb[1](S) 5238784块超级1.2
但是,我仍然无法擦拭/dev/vdg
(Couldn't open /dev/vdg for write - not zeroing
)和/dev/md124
(Unrecognised md component device - /dev/md124
)。
答案1
它失败了,因为以下命令:
mdadm --zero-superblock device
将device
参数视为磁盘,而不是阵列。
因此,例如,这是有效的并且适用于sda
驱动器:
mdadm --zero-superblock /dev/sda
或者
mdadm --zero-superblock /dev/sda1
取决于您如何设置 RAID。
像往常一样,不要忘记更新您的initramfs
:
update-initramfs -u