Ошибки удаления LUN
1. Проблема
Иногда после удаления LUN из хранилищ - остаётся некоторое количество остаточных данных multipath и lvm, что выражается в ошибках в файле /var/log/messages хоста виртуализации вида:
Mar 10 03:23:02 zvirt-srv2 multipathd: 36d039ea0002e6292000001a761b0ae75: sdgr - rdac checker reports path is down: lun not connected
Mar 10 03:23:04 zvirt-srv2 multipathd: sded: Could not synchronize with kernel state
Mar 10 03:23:04 zvirt-srv2 multipathd: 36d039ea0002e62920000018461675d0b: sded - rdac checker reports path is down: lun not connected
Mar 10 03:23:04 zvirt-srv2 multipathd: sdcj: Could not synchronize with kernel state
Mar 10 03:23:04 zvirt-srv2 multipathd: 36d039ea0002e53d60000047d61657418: sdcj - rdac checker reports path is down: lun not connected
Mar 10 03:23:04 zvirt-srv2 multipathd: sddv: Could not synchronize with kernel state
Mar 10 03:23:04 zvirt-srv2 multipathd: 36d039ea0002e53d60000047e6165741f: sddv - rdac checker reports path is down: lun not connected
Mar 10 03:23:04 zvirt-srv2 multipathd: sdam: Could not synchronize with kernel state
Mar 10 03:23:04 zvirt-srv2 multipathd: 36d039ea0002e62920000018461675d0b: sdam - rdac checker reports path is down: lun not connected
Mar 10 03:23:04 zvirt-srv2 multipathd: sdw: Could not synchronize with kernel state
2. Решение
После удаления LUN из хранилищ, вывод всех хостов по одному в режим обслуживания и их перезагрузка.
Попытка автоматизации данного процесса (не рекомендовано к использованию):
#!/bin/bash
errors=0
for f in /dev/dm-*
do
dd if=$f of=/dev/null count=1
if [ $? -ne 0 ]
then
dmsetup remove $f
errors=1
fi
done
for f in /sys/block/sd*
do
s=`cat $f/size`
if [ "$s" == "0" ]
then
echo $f
echo 1 >$f/device/delete
fi
done
if [ $errors -eq 1 ]
then
exec $0
fi
systemctl restart multipathd
exit 0