报错:mdadm: Cannot open /dev/sda1: Device or resource busy

问题

尝试将设备重新添加到RAID时,我们会收到以下消息:

# mdadm /dev/md2 --add /dev/sda1
mdadm: Cannot open /dev/sda1: Device or resource busy

mdadm:无法打开 /dev/sda1:设备或者资源繁忙

而 mdstat 命令指示设备处于非活动状态。

# cat /proc/mdstat
Personalities :
md2 : inactive sda1[0](S)
      292928154 blocks super 1.2
unused devices: [none]

mdadm 无法创建软件 raid 设备,并显示设备或者资源忙错误消息。

欢迎 on it road

解决方案

预检

在我们继续之前,请确保分区是否是任何活动 FS 的一部分。

mdadm --detail /dev/md2
mdadm: md device /dev/md2 does not appear to be active.
mdadm --detail --scan >> /etc/mdadm.conf
mdadm: md device /dev/md2 does not appear to be active.
# ls -l /etc/mdadm.conf
-rw-r--r-- 1 root bin 0 Sep 18 21:17 /etc/mdadm.conf
# cat /etc/mdadm.conf

问题原因

此问题的原因可能是 device-mapper-multipath(或者其他 device-mapper 模块)可以控制此设备,因此 mdadm 无法访问它。
命令“dmsetup table”将显示该设备由设备映射器控制(有关更多详细信息,请参阅“man dmsetup”)

# dmsetup table

解决方法

作为解决方法,我们可以使用以下命令从设备映射表中删除设备。

# dmsetup remove [device id]

永久解决方案

作为一种解决方案,我们可以在没有某些设备映射器模块的情况下启动服务器,例如 dmraid,我们可以将“nodmraid”添加到 /etc/grub.conf 中的内核命令行,如下所示。

title Enterprise Linux Enterprise Linux Server (2.6.32-100.24.1.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-100.24.1.el5 ro root=/dev/vg00/lv00 console=tty0 nodmraid
        initrd /initrd-2.6.32-100.24.1.el5.img

或者如果 device-mapper-multipath 可以控制此设备,我们可以将其添加到 /etc/multipath.conf 中的黑名单部分

# vi /etc/multipath.conf
blacklist {
              wwid [your world-wide-id for this device]
}

重新加载 multipathd 以使更改生效:

# service multipathd reload
# multipath -v2

确保 multipath 不会在“multipath -ll”中为这些设备创建映射。

# multipath -ll

设备映射器不应在启动时进行控制。

检查确认

执行上述步骤后,我们应该能够创建软件 RAID。
验证:

# mdadm /dev/md2 --add /dev/sda1
日期:2020-09-17 00:14:45 来源:oir作者:oir