Le problème
Lorsque vous essayez de rajouter un appareil à un raid, vous obtenez le message suivant :
# mdadm /dev/md2 --add /dev/sda1 mdadm: Cannot open /dev/sda1: Device or resource busy
Alors que la commande mdstat indique que le périphérique est inactif.
# cat /proc/mdstat Personalities : md2 : inactive sda1[0](S) 292928154 blocks super 1.2 unused devices: [none]
mdadm ne parvient pas à créer un périphérique raid logiciel avec le message d'erreur Périphérique ou ressource occupée.
La solution
Vérifications préalables
Avant de continuer, assurez-vous que si les partitions faisaient partie d'un FS actif.
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
La cause du problème
La cause de ce problème peut être que le device-mapper-multipath (ou d'autres modules de mappeur de périphérique) a le contrôle sur ce périphérique, donc mdadm ne peut pas y accéder. La commande "dmsetup table" montrera que ce périphérique est contrôlé par le device-mapper (voir "man dmsetup" pour des informations plus détaillées)
# dmsetup table
Solution
Pour contourner le problème, vous pouvez supprimer l'appareil de la table de mappage d'appareils avec la commande ci-dessous.
# dmsetup remove [device id]
Solution permanente
Comme solution, vous pouvez soit démarrer votre serveur sans certains modules de mappage de périphériques, par exemple dmraid, vous pouvez ajouter "nodmraid" à la ligne de commande du noyau dans /etc/grub.conf comme indiqué ci-dessous.
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
ou si device-mapper-multipath a le contrôle sur ce périphérique, vous pouvez l'ajouter à la section liste noire dans /etc/multipath.conf
# vi /etc/multipath.conf blacklist { wwid [your world-wide-id for this device] }
Rechargez le multipathd pour que les modifications prennent effet :
# service multipathd reload # multipath -v2
Assurez-vous que multipath ne crée pas de cartes pour ces périphériques dans « multipath -ll ».
# multipath -ll
Le mappeur de périphériques ne doit pas prendre le contrôle au démarrage.
Vérifier
Une fois que vous avez effectué les étapes mentionnées ci-dessus, vous devriez être en mesure de créer le logiciel RAID. Pour vérifier :
# mdadm /dev/md2 --add /dev/sda1