Categories: Linux

Настройка 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.

Fileio – файл.

PSCSI (SCSI pass-through) – любое устройство для хранения информации, поддерживающее SCSI команды напрямую, то есть без эмуляции SCSI. Этот бэкстор не нужно использовать, так как может привести к повреждениям железа.

Ramdisk – RAM-диск.

iSCSI – это fabric module, видимая снаружи часть iSCSI таргета. Он содержит список таргетов, лунов, права доступа и т.п. Список всего этого добра появится после настройки.

Loopback – ещё один fabric module, который дает доступ к таргету локально.

Создание iSCSI таргета на linux с помощью targetcli

  1. Для начала необходимо установить targetcli
    yum install targetcli
  2. Сделать доступным демона (службу) target и запустить его
    systemctl enable target
    systemctl start target
  3. Открыть targetcli и посмотреть иерархию, в виде которой представлен таргет, почитать помощь. Помощь можно вызывать в любом разделе внутри targetcli, везде будут свои команды.
     targetcli ls help
  4. Создать блочное устройство в бэксторе. В первом случае создано устройство на основе непосредственно жесткого диска, затем добавлено устройство на основе LVM, что гораздо удобнее в эксплуатации.
    /backstores/block create storage01 /dev/sdb
    /backstores/block create storage02 /dev/vg01/lv01 
    ls
    

  5. Создать iSCSI таргет
    /iscsi create ls
    


    Внутри iscsi можно видеть структуру. Первый элемент – имя таргета. Ниже по иерархии tpg1 расшифровывается как Target Portal Group – список IP-адресов и TCP портов, которые будет слушать этот таргет. Дальше идут acl – список адресов, с которых можно будет подключиться к таргету, luns – список лунов, portals – список IP-адресов и портов, которые будет слушать таргет.

  6. Перейти в иерархии targetcli на уровень tpg1 и установить параметры авторизации
    cd
    -- используя стрелки для навигации по иерархии, переместиться на уровень tpg1 -- 
    set parameter AuthMethod=None 
    set attribute authentication=0 
    

  7. Указать iqn имя инициатора, который будет иметь право подключаться к таргету.
    acls/ create iqn.1991-05.com.microsoft:hypervisor
    

    В случае, если инициатором будет другой компьютер под управлением Linux, то для получения имени инициатора необходимо прочитать файл /etc/iscsi/initiatorname.iscsi. В этом же файле можно и изменить имя iSCSI инициатора. Для получения имени iSCSI инициатора под Windows необходимо открыть Панель управления -> Администрирование -> iSCSI инициатор. В окне с настройками иницатора выбрать последнюю вкладку Конфигурация. Прочитать поле имя инициатора.

  8. Создать LUN на основе объекта хранилища в бэксторе
    luns/ create /backstores/block/storage02
    
  9. Указать IP-адрес, который будет слушать таргет. Проще говоря адрес на сетевом интерфейсе самого сервера. Можно выполнить команду без указания IP-адреса, в этом случае таргет будет принимать подключения на любом сетевом интерфейсе
    portals/ create 192.168.10.5
    

  10. Сохранить конфигурацию, хотя по умолчанию она сохраняется автоматически при выходе из targetcli
    cd / ls saveconfig
    

На этом таргет готов к использованию. Остается только подключиться инициатором к таргету и использовать LUN как локальный жесткий диск.

Saqwel

View Comments

  • Хорошо написали, спасибо.

    А как можно удалить конфиг, если неправильно что-то сделал?

  • Если необходимо удалить какую-то часть иерархии, то можно почитать help для конкретного объекта иерархии.

    /backstores/block help

    Под рукой нет Linux, не могу проверить, но, наверняка, там должна быть команда типа delete.

    Если хочется уничтожить полностью конфиги, то они находятся в /etc/target. Только делайте копии перед удалением.

Share
Published by
Saqwel

Recent Posts

Azure App Configuration and access to Key Vault references

We decided to use an Azure App Configuration to store configs of backend. App Configuration…

2023-08-24

Azure cli az acr login hangs

I have encountered an issue with az acr login --name <acr_name> command. It hanged and…

2023-08-23

Error: Unable to read Docker image into resource: unable to find or pull image nginx:latest

I have tried to learn terraform from scratch and found pretty simple tutorial for beginners.…

2022-09-09

Скрыть поле модели от Swagger (Hide field of model from Swagger)

При внедрении Swagger в проекте .Net Core Web API потребовалось скрыть одно поле из примера,…

2020-04-24

Прогноз цен на акции

Около года назад я решил попробовать заработать на фондовой бирже, покупая и продавая акции. Изучая…

2019-07-20

Installation failed with error code: (0x00000490), “Element not found. “

Во время установки .NET Framework столкнулся с ошибкой Installation failed with error code: (0x00000490), "Element…

2018-12-20