问题:
# ls /dev/md*
/dev/md0 /dev/md1
# dd if=/dev/zero of=/dev/sdb3 bs=1M count=1
# dd if=/dev/zero of=/dev/sdd3 bs=1M count=1
# mdadm --zero-superblock /dev/sdb3
# mdadm --zero-superblock /dev/sdd3
# mdadm --create -l 1 -n 2 /dev/md2 /dev/sdb3 /dev/sdd3
mdadm: cannot open /dev/sdb3: Device or resource busy
# ls /dev/md*
/dev/md0 /dev/md1 /dev/md127 /dev/md2
# mdadm -D /dev/md127
mdadm: md device /dev/md127 does not appear to be active.
我没有要求它自动检测和组装任何东西。我也没有重启。
我在这些磁盘上多次移动分区以尝试不同的设置。所以很可能到处都有那些实验的痕迹。
sdb3 不忙。我刚刚像这样在几秒钟前创建了它:
swapoff -a
parted /dev/sdb rm 4 (my old raid10 + lvm)
parted /dev/sdb rm 3 (my old swap)
parted /dev/sdd unit s mkpart root4 503808 5860533118 (start here is same as swap start, and end is same as raid10+lvm end)
parted /dev/sdd set 3 raid on
另外,如果我创建了一个只有 /dev/sdd3 的设备,--create 命令也会打印:
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.
但它现在也打印出来,在“-l 1”再次工作之后,没有“设备或资源繁忙”消息。(并且该磁盘有一个 bios_grub 和引导 raid1 分区,其元数据为 0.90,但此 sdd3 与引导无关)。
虽然我现在无法重现这个...我尝试了几次并很好地重现了它,但是在尝试使用“-l 0”之后,它起作用了。“-l 10”与“-l 1”具有相同的效果。
问题:
为什么会出现md127?
如果创建失败,为什么还要使用 md2?
将来,除了使用:
- dd 将块设备的开始归零
- mdadm --zero-超级块
- 并使用“-l 0”创建(这是一个无意义的解决方案)
我还能做些什么来清理磁盘以为“--create”做准备?
很难
md127
从您发布在屏幕上的输出中解释为什么会出现。但是你下次可以做的是检查上面写的是什么cat /proc/mdstat
——它会告诉你它是否md127
真的是一个内核设备。如果不存在,您可以删除/dev/md127
.与此相关,并回答第二个问题,该
mdadm
工具将尝试在其下创建设备节点,/dev
但如果由于某种原因失败,它不会清除它们。回答第三个问题——确保磁盘确实没有被使用。
cat /proc/mdstat
,停止任何 md 设备mdadm --stop
,运行mdadm --zero-superblock
,然后通过运行确保没有 md 元数据mdadm --examine /dev/sd...
。md127 是您“裂脑”RAID1 阵列时的结果。内核开始对它们进行反向编号,以避免与现有配置的设备发生冲突。它将该备用磁盘计为未知 RAID1 阵列的成员。我不知道为什么它将另一个分配为 md2。这是一个谜。