Хотел поделиться опытом создания 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
- Для начала необходимо установить targetcli
yum install targetcli
- Сделать доступным демона (службу) target и запустить его
systemctl enable target systemctl start target
- Открыть targetcli и посмотреть иерархию, в виде которой представлен таргет, почитать помощь. Помощь можно вызывать в любом разделе внутри targetcli, везде будут свои команды.
targetcli ls help
- Создать блочное устройство в бэксторе. В первом случае создано устройство на основе непосредственно жесткого диска, затем добавлено устройство на основе LVM, что гораздо удобнее в эксплуатации.
/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:hypervisor
В случае, если инициатором будет другой компьютер под управлением Linux, то для получения имени инициатора необходимо прочитать файл /etc/iscsi/initiatorname.iscsi. В этом же файле можно и изменить имя iSCSI инициатора. Для получения имени iSCSI инициатора под Windows необходимо открыть Панель управления -> Администрирование -> iSCSI инициатор. В окне с настройками иницатора выбрать последнюю вкладку Конфигурация. Прочитать поле имя инициатора.
- Создать LUN на основе объекта хранилища в бэксторе
luns/ create /backstores/block/storage02
- Указать IP-адрес, который будет слушать таргет. Проще говоря адрес на сетевом интерфейсе самого сервера. Можно выполнить команду без указания IP-адреса, в этом случае таргет будет принимать подключения на любом сетевом интерфейсе
portals/ create 192.168.10.5
- Сохранить конфигурацию, хотя по умолчанию она сохраняется автоматически при выходе из targetcli
cd / ls saveconfig
На этом таргет готов к использованию. Остается только подключиться инициатором к таргету и использовать LUN как локальный жесткий диск.
Хорошо написали, спасибо.
А как можно удалить конфиг, если неправильно что-то сделал?
Если необходимо удалить какую-то часть иерархии, то можно почитать help для конкретного объекта иерархии.
/backstores/block help
Под рукой нет Linux, не могу проверить, но, наверняка, там должна быть команда типа delete.
Если хочется уничтожить полностью конфиги, то они находятся в /etc/target. Только делайте копии перед удалением.
Благодарю. Да, delete есть.