Как удалить wwn targetcli
Устанавливаем пакеты и запускаем службу
yum install targetcli scsi-target-utils -y systemctl enable target.service systemctl start target.service
Открываем порт сервиса
firewall-cmd --permanent --zone=public --add-port=3260/tcp
Если необходимо удалить старую конфигурацию
targetcli clearconfig confirm=true
targetcli cd /backstores/block/ create data /dev/ cd /iscsi create wwn=iqn.XX-X-XX cd /iscsi//tpg1/portals delete 0.0.0.0 3260 create xxx.xxx.xxx.xx ip_port=3260 cd /iscsi//tpg1/luns create /backstores/block/ lun= cd /iscsi//tpg1 set attribute authentication=0 set attribute generate_node_acls=1 set attribute demo_mode_write_protect=0 #set attribute MaxBurstLength cd /iscsi//tpg1/acls create wwn=
Формат IQN имеет вид iqn.yyyy-mm.naming-author:unique-name , где:
yyyy-mm - год и месяц. naming-Authority - это обычно обратный синтаксис имени домена в Интернете организации. unique-name - это любое имя, которое вы хотите использовать, например, имя вашего хоста. iqn.2020-01.ru.tx0.iscsi:dss-1
2020-2023 | Tixo | info@tx0.ru | Погрузитесь в с Тиксо!
Как удалить wwn targetcli
Материал из ALT Linux Wiki
# targetcli Warning: Could not load preferences file /root/.targetcli/prefs.bin. targetcli shell version 2.1.fb35 Copyright 2011-2013 by Datera, Inc and others. For help on commands, type 'help'. /> qla2xxx/ info Fabric module name: qla2xxx ConfigFS path: /sys/kernel/config/target/qla2xxx Allowed WWN types: naa Allowed WWNs list: naa.5001438004c39414, naa.5001438004c39416 Fabric module features: acls Corresponding kernel module: tcm_qla2xxx /> ls o- / . [. ] o- backstores . [. ] | o- block . [Storage Objects: 0] | o- fileio . [Storage Objects: 0] | o- pscsi . [Storage Objects: 0] | o- ramdisk . [Storage Objects: 0] o- iscsi . [Targets: 0] o- loopback . [Targets: 0] o- qla2xxx . [Targets: 0] o- vhost . [Targets: 0] /> qla2xxx/ create naa.5001438004c39416 Created target naa.5001438004c39416. /> ls o- / . [. ] o- backstores . [. ] | o- block . [Storage Objects: 0] | o- fileio . [Storage Objects: 0] | o- pscsi . [Storage Objects: 0] | o- ramdisk . [Storage Objects: 0] o- iscsi . [Targets: 0] o- loopback . [Targets: 0] o- qla2xxx . [Targets: 1] | o- naa.5001438004c39416 . [gen-acls] | o- acls . [ACLs: 0] | o- luns . [LUNs: 0] o- vhost . [Targets: 0] /> qla2xxx/ create naa.5001438004c39414 Created target naa.5001438004c39414. /># echo "- - -" > /sys/class/scsi_host/host*/scanLinux SCSI Target [1] SCST [2] HOWTO [3]
Ошибка targetcli "WWN not valid as: naa" при попытке добавления в ACL конфигурации Linux-IO FC Target хостов FC Initiator с WWPN от виртуальных машин Hyper-V Gen2
В одной из прошлых заметок мы уже упоминали о такой штуке, как Linux-IO (LIO) и показывали пример пакетного использования утилиты targetcli, которая используется для управления конфигурацией FC Target. Использование этой утилиты в типичном сценарии, когда хосты, выступающие в роли FC Initiator, являются физическими и имеют физические адаптеры FC HBA, не вызывает проблем. Однако, если в качестве Initiator мы попробуем добавить в конфигурацию LIO вместо физических FC HBA, виртуальные HBA из виртуальных машин Hyper-V, то здесь нам targetcli может выдать ошибку " WWN not valid as: naa ". В этой заметке мы поговорим о том, почему возникает такая ошибка и как её обойти.
Итак, предположим, у нас есть некая виртуальная машина Hyper-V Gen2, подключённая через технологию NPIV, к сети FC SAN. На эту виртуальную машину мы хотим пробросить какое-то блочное устройство с физического сервера на базе Linux с помощью LIO FC Target. Для этого на стороне Linux-сервера с помощью утилиты targetcli в конфигурации LIO мы пытаемся прописать в лист доступа (ACL) идентификаторы vHBA WWPN виртуальной машины. Делаем это командой типа:
# targetcli /qla2xxx/naa.50014380062e3204/acls create C003FF9BFEE40008В этом примере идентификатор " C003FF9BFEE40008 " это WWPN vHBA нашей виртуальной машины. И здесь то мы и получим от targetcli ошибку несоответствия указанного идентификатора типу WWN:
При этом попытки использовать разный регистр и разделители при указании WWPN в этой ситуации нас не спасут.
Исследование проблемы показало, что код исполняемого скрипта /usr/lib/python3/dist-packages/rtslib_fb/utils.py , поставляемого в пакете python3-rtslib-fb и используемого утилитой targetcli, содержит вызов функции normalize_wwn. В этой функции имеется код, определяющий валидность идентификаторов разного типа. В нашем случае эта функция выполняет проверку в соответствии со строкой вида:
'naa': lambda wwn: re.match(r"naa\.[125][0-9a-fA-F]$", wwn),То есть если указанный нами идентификатор WWN/WWPN будет начинаться с цифровых символов "1","2" или "5", то, скорее всего, мы не столкнёмся с описанной ошибкой. В нашем же случае идентификаторы WWPN vHBA виртуальной машины Hyper-V начинаются с буквенного символа "С", что и вызывает "негодование" targetcli.
Правильным решением в этой ситуации будет обращение к разработчикам targetcli и исправление этой проблемы на глобальном уровне. Однако, вспоминая свои попытки получить отклик в мейл-группе LIO, можно предположить, что занятие это будет не интересное.
Чтобы решить эту проблему "здесь и сейчас" нам достаточно будет внести небольшую правку в выше обозначенную строчку скрипта utils.py , чтобы она приняла, например, следующий вид:
'naa': lambda wwn: re.match(r"naa\.[0-9a-fA-F]$", wwn),
После правки, нужно перезапустить сеанс работы с утилитой targetcli.
При повторной попытке добавления в ACL идентификатора WWPN с виртуальной машины Hyper-V с выше обозначенной ошибкой мы уже не столкнёмся.
На самом деле с описанной проблемой скрипта utils.py я столкнулся ещё примерно полтора года назад при использовании пакета python3-rtslib-fb из репозиториев Debian 9, но отложил написание этой заметки "на потом". Но чуда за это время не произошло и "болячка не рассосалась".
Настройка Linux iSCSI посредством targetcli
Хотел поделиться опытом создания iSCSI таргета на CentOS 7 посредством targetcli. Targetcli – это оболочка для управления Linux-IO Target (LIO™). LIO™ – это реализация SCSI таргета с открытым исходным кодом. LIO™ была включена в ядро Linux в версии 2.6.38.
Немного теории
Targetcli на CentOS 7 представляет таргет в виде иерархически построенной структуры. И делит таргет на back-end и front-end части. Backstores – это back-end, fabric module – это front-end. Backstores это всегда один раздел в иерархии targetcli, внутри которого отображаются хранилища в виде объектов, в то время, как fabric module может быть не один, в нём содержатся различные настройки видимой снаружи части таргета. Существует несколько типов fabric module: Fibre Channel over Ethernet (FCoE), Fibre Channel, IEEE 1394, iSCSI, iSCSI Extensions for RDMA (iSER), SCSI RDMA Protocol (SRP), USB Gadget, Loopback. Ниже можно видеть как выглядит структура таргета с точки зрения targetcli:
Теперь по порядку по элементам
Backstores – это раздел, в котором отображаются объекты-хранилища. Backstores не видимая снаружи часть iSCSI таргета.
Block –жесткий диск, символические ссылки на диск или LVM.
PSCSI (SCSI pass-through) – любое устройство для хранения информации, поддерживающее SCSI команды напрямую, то есть без эмуляции SCSI. Этот бэкстор не нужно использовать, так как может привести к повреждениям железа.
iSCSI – это fabric module, видимая снаружи часть iSCSI таргета. Он содержит список таргетов, лунов, права доступа и т.п. Список всего этого добра появится после настройки.
Loopback – ещё один fabric module, который дает доступ к таргету локально.
Создание iSCSI таргета на linux с помощью targetcli
- Для начала необходимо установить targetcli
yum install targetclisystemctl enable target systemctl start targettargetcli ls help/backstores/block create storage01 /dev/sdb /backstores/block create storage02 /dev/vg01/lv01 ls
Создать iSCSI таргет
/iscsi create ls
Внутри iscsi можно видеть структуру. Первый элемент – имя таргета. Ниже по иерархии tpg1 расшифровывается как Target Portal Group – список IP-адресов и TCP портов, которые будет слушать этот таргет. Дальше идут acl – список адресов, с которых можно будет подключиться к таргету, luns – список лунов, portals – список IP-адресов и портов, которые будет слушать таргет.
Перейти в иерархии targetcli на уровень tpg1 и установить параметры авторизацииcd -- используя стрелки для навигации по иерархии, переместиться на уровень tpg1 -- set parameter AuthMethod=None set attribute authentication=0
Указать iqn имя инициатора, который будет иметь право подключаться к таргету.
acls/ create iqn.1991-05.com.microsoft:hypervisorluns/ create /backstores/block/storage02portals/ create 192.168.10.5
Сохранить конфигурацию, хотя по умолчанию она сохраняется автоматически при выходе из targetcli
cd / ls saveconfig
![]()
На этом таргет готов к использованию. Остается только подключиться инициатором к таргету и использовать LUN как локальный жесткий диск.







