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
и смотрим свойства диска:
В выводе видим, что поле 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
-
Сначала, выставим метку, что этот диск не удален:
-
Затем, разлогиним iSCSI-сессию, связанную с этим диском на инициаторе (гипервизоре):
На сей раз все проходит без ошибок. -
Далее удаляем ненужную теперь iSCSI-сессию:
-
И, наконец, удаляем штатно сам диск:
Диск удалился без ошибок. -
Проверим, что диска нет на сторадже:
-
Проверим лог
Теперь ошибок быть не должно.nova-compute
на гипервизоре: -
Запускаем нашу ВМ:
Видим, что на сей раз она успешно стартовала. -
Проверим, остались ли ошибки iSCSI-сессий:
100.111.254.231 - IP-адрес нашего стораджа в сети хранения (VLAN 1499)
Как-же так - сессию мы удалили, но она вновь откуда-то появилась?
- Чтобы окончательно удалить сессию, необходимо еще удалить запись о сессии из базы данных. Для этого на гипервизоре (инициаторе) выполним команду:
- Проверим еще раз:
В ответ получим пустой вывод. Вот теперь точно все в порядке.
Наконец, необходимо проверить файловую систему, чтобы убедиться, что Linux не попытается восстановить соединение при будущих операциях загрузки.
Если iqn существует, его следует удалить. Может потребоваться отредактировать этот объект узла, чтобы удалить определенные IP-адреса из его списков без изменения самого узла, если клиент изменил IP-адреса своих целей ISCSI, но 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