Home Menu Search

Saqwel

IT and other things blog

Настройка 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
  2. Сделать доступным демона (службу) target и запустить его
  3. Открыть targetcli и посмотреть иерархию, в виде которой представлен таргет, почитать помощь. Помощь можно вызывать в любом разделе внутри targetcli, везде будут свои команды.
  4. Создать блочное устройство в бэксторе. В первом случае создано устройство на основе непосредственно жесткого диска, затем добавлено устройство на основе LVM, что гораздо удобнее в эксплуатации.

  5. Создать iSCSI таргет


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

  7. Указать iqn имя инициатора, который будет иметь право подключаться к таргету.

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

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

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

2 comments

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

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

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

/backstores/block help

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

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

Leave a Reply