奇怪的mdadm行为 – 无法创build时,md127出现与“设备或资源忙”在新创build的部分归零分区

问题:

# 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不忙。 我刚刚创build了几秒钟,像这样:

 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 

另外,如果我创build了只有/ 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和boot raid1分区,其元数据为0.90,但是这个sdd3与启动无关)。

我现在不能重现这个,虽然…我尝试了几次,并转载它很好,但尝试与“-l 0”,而不是,它的工作原理。 “-l 10”与“-l 1”具有相同的效果。

问题:

为什么md127出现?

为什么还没有创build它的MD2?

在未来,除了使用:

  • dd使块设备的启动为零
  • mdadm – 零超级块
  • 并用“-l 0”(这是一个无稽之谈的解决scheme)

还有什么我可以做的清理磁盘准备“–create”?

很难解释为什么md127只是从你在屏幕上发布的输出中出现。 但是你可以做的下一步是检查什么cat /proc/mdstat说 – 它会告诉你,如果md127真的是一个内核设备或没有。 如果不存在,则可以删除/dev/md127

与此相关,为了回答第二个问题, mdadm工具会尝试在/dev下创build设备节点,但是如果由于某种原因失败,它将不会清理它们。

要回答第三个问题 – 确保磁盘确实没有被使用。 cat /proc/mdstat ,使用mdadm --stop停止任何md设备mdadm --stop ,运行mdadm --zero-superblock ,然后通过运行mdadm --examine /dev/sd...确保没有md元数据。

md127是什么结果,当你“分裂大脑”一个RAID1arrays。 内核开始对它们进行反编号以避免与现有configuration的设备发生冲突。 它正在将该备用磁盘作为未知RAID1arrays的成员。 我不知道为什么把md2分配给另一个。 这是一个谜。