Suppression de disque ISCSI avec Multimap
Voici la procédure :
# multipath -ll
36000d3100d11ca000000000000000003 dm-79 COMPELNT,Compellent Vol
size=10G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=enabled
|- 16:0:0:1 sdf 8:80 failed faulty running
|- 17:0:0:1 sdk 8:160 failed faulty running
|- 19:0:0:1 sdcd 69:16 failed faulty running
|- 20:0:0:1 sdcb 68:240 failed faulty running
`- 23:0:0:1 sdcc 69:0 failed faulty running
On va donc supprimer complètement le wwid 36000d3100d11ca000000000000000003.
multipath -f 36000d3100d11ca000000000000000003
Jun 24 09:56:02 | 36000d3100d11ca000000000000000003: map in use
lsof /dev/mapper/36000d3100d11ca000000000000000003
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vgdisplay 8405 root 43r BLK 253,62 0t0 990 /dev/mapper/../dm-62
vgs 24472 root 43r BLK 253,62 0t0 990 /dev/mapper/../dm-62
pvs 28494 root 44r BLK 253,62 0t0 990 /dev/mapper/../dm-62
vgs 31868 root 43r BLK 253,62 0t0 990 /dev/mapper/../dm-62
C'est donc le LVM qui est connecté dessus, on peut continuer.dmsetup suspend /dev/mapper/36000d3100d11ca000000000000000003
dmsetup info /dev/mapper/36000d3100d11ca000000000000000003
Name: 36000d3100d11ca000000000000000003
State: SUSPENDED <<<<==== YES
Read Ahead: 256
Tables present: LIVE
Open count: 5
Event number: 17
Major, minor: 253, 62
Number of targets: 1
UUID: mpath-36000d3100d11ca000000000000000003
dmsetup clear /dev/mapper/36000d3100d11ca000000000000000003
dmsetup wipe_table /dev/mapper/36000d3100d11ca000000000000000003
multipath -f 36000d3100d11ca000000000000000003
La suppression a dû se dérouler sans erreur.
On peut blacklister l'entrée afin qu'elle ne réapparaîsse pas /etc/multipath.conf :
blacklist {
wwid 36000d3100d11ca000000000000000003
}
service multipathd reloadOn peut ensuite supprimer les devices inutilisés (le device est affiché dans le résultat de la première commande) (Adapter le sdXX) :
echo 1 > /sys/block/sdXX/device/delete
sinon, le message d'erreur suivant apparaît :
sd 5:0:0:1: [sdam] Unit Not Ready sd 5:0:0:1: [sdam] Sense Key : Illegal Request [current] sd 5:0:0:1: [sdam] Add. Sense: Logical unit not supported sd 5:0:0:1: [sdam] Read Capacity(16) failed: Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Cette procédure est à reproduire sur tous les noeuds du cluster Proxmox. Une fois tous les noeuds purgés, le volume est inutilisé, il peut donc être supprimé.
En script destroyVolume :
#!/bin/bash
set -e
if [ ! $1 ]; then
echo "Manque le device à supprimer (sans /dev/mapper)"
exit
fi
if [ ! -e /dev/mapper/$1 ]; then
echo "Device /dev/mapper/$1 inexistant"
exit
fi
DISKS=`multipath -ll $1 | grep "running" | awk '{print $3}'`
dmsetup suspend /dev/mapper/$1
dmsetup info /dev/mapper/$1
dmsetup clear /dev/mapper/$1
dmsetup wipe_table /dev/mapper/$1
multipath -f $1
IFS=$'\n'
for file in $DISKS; do
echo 1 > /sys/block/$file/device/delete
done
