iSCSI: как удалить зависшие сессии?
Постановка задачи
Необходимо было запустить ВМ, которая не хотела запускаться. Ошибка запуска связана с недоступностью диска на гипервизоре.
Обычно, в таком случае, первым делом смотрим свойства iSCSI-подключения всех дисков данной ВМ. Как правило, там могут быть ошибки двух типов:
- неверный идентификатор iSCSI (/etc/iscsi/cat /etc/iscsi/initiatorname.iscsi
например: InitiatorName=iqn.1993-08.org.debian:01:37fec792e6a3 , а должен быть InitiatorName=iqn.2024-05.ru.latl.iscsi:cmpt-c01z03-n3008
- неверные параметры CHAP-доступа с диску -
usernameилиpassword
Однако, в данном случае, все параметры подключения были правильные, но ВМ не запускалась.
Решение
Идем на гипервизор (initiator), на котором размещена наша ВМ и смотрим лог /var/log/nova/nova-compute.log :
2024-10-15 14:54:16.787 974369 ERROR nova.virt.block_device [instance: ed78fbe9-d18d-4b96-9def-7a1bb3a2348f] Stderr: 'iscsiadm: Could not logout of [sid: 131, target: iqn.2010-10.org.openstack:volume-4723e8f9-fdc7-4de8-92de-13f4fa74617d, portal: 100.111.254.231,3260].\niscsiadm: initiator reported error (32 - target likely not connected)\niscsiadm: Could not logout of all requested sessions\n'
Упомянутый здесь instance_uuid (ed78fbe9-d18d-4b96-9def-7a1bb3a2348f) - не наш проблемный инстанс! Однако, эта ошибка мешает нам стартовать нашу ВМ.
Смотрим, есть ли такой диск:
VOLID="4723e8f9-fdc7-4de8-92de-13f4fa74617d"
openstack volume show $VOLID
No volume with a name or ID of '4723e8f9-fdc7-4de8-92de-13f4fa74617d' exists.
Оказывается его нет. Пробуем разлогинить iSCSI-сессию на это диск, чтобы, в дальнейшем, удалить эту “зависшую” iSCSI-сессию:
iscsiadm --mode node --target iqn.2010-10.org.openstack:volume-${VOLID} --portal 100.111.254.231,3260 --logout
Logging out of session [sid: 131, target: iqn.2010-10.org.openstack:volume-${VOLID}, portal: 100.111.254.231,3260]
iscsiadm: Could not logout of [sid: 131, target: iqn.2010-10.org.openstack:volume-4723e8f9-fdc7-4de8-92de-13f4fa74617d, portal: 100.111.254.231,3260].
iscsiadm: initiator reported error (32 - target likely not connected)
Как видно из ответа - утилита iscsiadm не может этого сделать, ссылаясь на то, что данный таргет не подключен! Что же делать в такой “патовой” ситуации?
За ответом идем в СУБД cinder и смотрим свойства диска:
select * from volumes where id="$VOLID";
В выводе видим, что поле deleted установлено в значение 1 - это означает, что диск удален. Однако, его iSCSI-сессия при удалении по какой-то причине не удалилась и, более того, сам диск физически присутствует на сторадже:
root@strg-z03-01:/home/cloud# zfs list | grep $VOLID
tank/volume-4723e8f9-fdc7-4de8-92de-13f4fa74617d 108G 75.2T 25.7G
-
Сначала, выставим метку, что этот диск не удален:
update volumes set deleted=0 where id="$VOLID" -
Затем, разлогиним iSCSI-сессию, связанную с этим диском на инициаторе (гипервизоре):
На сей раз все проходит без ошибок.iscsiadm --mode node --target iqn.2010-10.org.openstack:volume-${VOLID} --portal 100.111.254.231,3260 --logout -
Далее удаляем ненужную теперь iSCSI-сессию:
## на инициаторе iscsiadm -m node -o delete -T iqn.2010-10.org.openstack:volume-${VOLID} ## на таргете cinder-rtstool delete iqn.2010-10.org.openstack:volume-${VOLID} -
И, наконец, удаляем штатно сам диск:
Диск удалился без ошибок.cinder reset-state --state available $VOLID openstack volume delete $VOLID -
Проверим, что диска нет на сторадже:
root@strg-z03-01:/home/cloud# zfs list | grep $VOLID -
Проверим лог
nova-computeна гипервизоре:Теперь ошибок быть не должно.tail -f /var/log/nova/nova-compute.log | grep -i error -
Запускаем нашу ВМ:
Видим, что на сей раз она успешно стартовала.openstack server start <instance_uuid> -
Проверим, остались ли ошибки iSCSI-сессий:
100.111.254.231 - IP-адрес нашего стораджа в сети хранения (VLAN 1499)iscsiadm -m discovery -t st -p 100.111.254.231 iscsiadm: This command will remove the record [iface: default, target: iqn.2010-10.org.openstack:volume-4723e8f9-fdc7-4de8-92de-13f4fa74617d, portal: 100.111.254.231,3260], but a session is using it. Logout session then rerun command to remove record.
Как-же так - сессию мы удалили, но она вновь откуда-то появилась?
- Чтобы окончательно удалить сессию, необходимо еще удалить запись о сессии из базы данных. Для этого на гипервизоре (инициаторе) выполним команду:
iscsiadm -m discoverydb -t sendtargets -p 100.111.254.231:3260 -o delete - Проверим еще раз:
iscsiadm -m discovery -t st -p 100.111.254.231 | grep $VOLID
В ответ получим пустой вывод. Вот теперь точно все в порядке.
Наконец, необходимо проверить файловую систему, чтобы убедиться, что Linux не попытается восстановить соединение при будущих операциях загрузки.
ls /var/lib/iscsi/nodes/<iqn>
targetcli и выборочно удалить объекты, связанные с недействительными IP-адресами.
Идентификация диска по имени его логического устройства
Иногда в логе nova-compute.log можно увидеть ошибку вида:
Command: blockdev --flushbufs /dev/sdab
Stderr: 'blockdev: cannot open /dev/sdab: No such device or address\n'
2024-10-14 22:09:23.692 3884301 ERROR nova.virt.block_device [instance: 55584f6b-f533-4c5b-8e7e-c364c501c8d8] Command: blockdev --flushbufs /dev/sdab
2024-10-14 22:09:23.692 3884301 ERROR nova.virt.block_device [instance: 55584f6b-f533-4c5b-8e7e-c364c501c8d8] Stderr: 'blockdev: cannot open /dev/sdab: No such device or address\n'
volume_uuid.Посмотреть параметры блочного устройства, подключенного по iSCSI можно командой:
# udevadm info --query=all --name=/dev/sdab | grep $VOLID
S: disk/by-path/ip-100.111.254.235:3260-iscsi-iqn.2010-10.org.openstack:volume-495edeac-4e35-4312-8c16-c8de53212876-lun-0
E: ID_PATH=ip-100.111.254.235:3260-iscsi-iqn.2010-10.org.openstack:volume-495edeac-4e35-4312-8c16-c8de53212876-lun-0
E: ID_PATH_TAG=ip-100_111_254_235_3260-iscsi-iqn_2010-10_org_openstack_volume-495edeac-4e35-4312-8c16-c8de53212876-lun-0
E: DEVLINKS=/dev/disk/by-id/scsi-36001405936fb404d305451497c4d718d /dev/disk/by-path/ip-100.111.254.235:3260-iscsi-iqn.2010-10.org.openstack:volume-495edeac-4e35-4312-8c16-c8de53212876-lun-0 /dev/disk/by-id/wwn-0x6001405936fb404d305451497c4d718d /dev/disk/by-uuid/5046d468-3478-423d-bf19-2f3820db157d
Опубликовано: 21.10.2024