Download PDF
Download page Создание и настройка программной СХД (iSCSI-target) для тестового стенда.
Создание и настройка программной СХД (iSCSI-target) для тестового стенда
- Создать гостевую машину
iscsi-target
. Действия по созданию гостевой машины аналогичны действиям, описанным в статье Создание гостевой машины (за исключением пункта установки дополнительного оборудования — канал SPICE добавлять не нужно). При этом необходимо установить следующие параметры гостевой машины:- количество процессоров: 1;
- размер памяти (ОЗУ): 2 ГБ;
объем диска для размещения ОС: 12 ГБ.
Диски для эмуляции сетевых блочных устройств будет добавлены позже.
Для организации системы хранения в ПК СВ «Брест» требуется выделение как минимум двух сетевых блочных устройств.
В гостевой машине
iscsi-target
установить операционную систему специального назначения "Astra Linux Special Edition" РУСБ.10015-01. При этом следует учитывать следующие особенности установки:- на странице Установка базовой системы выбрать для установки ядро
linux-5.15-generic
; - на странице Выбор программного обеспечения выбрать пункт Средства удаленного подключения SSH;
- на странице Дополнительные настройки ОС выбрать Базовый уровень защищенности "Орел";
- на странице Дополнительные настройки ОС выбрать пункт Запрет автонастройки сети.
- на странице Установка базовой системы выбрать для установки ядро
- Настроить сетевое соединение:
в файл
/etc/network/interfaces
добавить следующие строки:auto eth0 iface eth0 inet static address 172.16.1.41 netmask 255.255.255.0 gateway 172.16.1.1
CODEзапустить в работу сетевой интерфейс командой:
sudo ifup eth0Далее можно подключиться к гостевой машине из хостовой ОС по SSH.файл
/etc/hosts
привести к следующему виду:127.0.0.1 localhost 172.16.1.41 iscsi-target
CODEзадать сетевое имя гостевой машине, выполнив команду:
sudo hostnamectl set-hostname iscsi-targetСообщение об ошибке вида:sudo: unable to resolve host <предыдущее_имя_гостевой_машины>: В соединении отказано
CODEможно игнорировать (перед тем как выполнить команду инструмент командной строки
sudo
обращается к файлу/etc/hosts
чтобы определить IP-адрес используя предыдущее имя гостевой машины).
- Выключить гостевую машину
iscsi-target
. - В окне программы Virt-manager на панели инструментов окна гостевой машины
iscsi-target
нажать на кнопку [Показать виртуальное оборудование]. - Подключить к гостевой машине
iscsi-target
первый диск для эмуляции сетевого блочного устройства:- в окне параметров гостевой машины нажать на кнопку [Добавить оборудование] в левом нижнем углу;
- в открывшемся окне Добавление виртуального оборудования:
в левом поле выбрать пункт Хранилище;
в правом поле установить флаг Создать образ диска для виртуальной машины;
- задать размер диска равным 24 ГБ;
нажать на кнопку [Готово].
- в окне параметров гостевой машины нажать на кнопку [Добавить оборудование] в левом нижнем углу;
- Аналогичным образом подключить к гостевой машине
iscsi-target
второй диск для эмуляции сетевого блочного устройства. - Подключить образ установочного носителя к гостевой машине
iscsi-target
(см. Подключение образа установочного носителя к гостевой машине). - Включить гостевую машину
iscsi-target
. В ОС гостевой машины
iscsi-target
вывести перечень блочных устройств:lsblkПример вывода после выполнения команды:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3,9G 0 rom vda 252:0 0 12G 0 disk ├─vda1 252:1 0 11G 0 part / ├─vda2 252:2 0 1K 0 part └─vda5 252:5 0 975M 0 part [SWAP] vdb 252:16 0 24G 0 disk vdc 252:32 0 24G 0 disk
CODEгде:
vda
– диск для размещения файлов ОС;vdb
иvdc
– диски для эмуляции сетевых блочных устройств.
В ОС гостевой машины
iscsi-target
установить консоль управления Linux-IO Target (пакетtargetcli-fb)
:sudo apt install targetcli-fbВойти в консоль управления Linux-IO Target командой:
sudo targetcliВ консоли управления вывести текущую конфигурацию командой:
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- vhost ............................... [Targets: 0] o- xen-pvscsi .......................... [Targets: 0]
CODEСоздать (зарегистрировать) блочное устройство
/dev/vdb
в разделе/backstores/block
, присвоив устройству наименование, например,storage01
:/backstores/block create storage01 /dev/vdbПример вывода после выполнения команды:Created block storage object storage01 using /dev/vdb.
CODEПроверить результат командой
ls
. Пример вывода после выполнения команды:/> ls o- / ............................................................... [...] o- backstores .................................................... [...] | o- block ........................................ [Storage Objects: 1] | | o- storage01 ........... [/dev/vdb (24.0GiB) write-thru deactivated] | | o- alua ......................................... [ALUA Groups: 1] | | o- default_tg_pt_gp ............. [ALUA state: Active/optimized] | o- fileio ....................................... [Storage Objects: 0] | o- pscsi ........................................ [Storage Objects: 0] | o- ramdisk ...................................... [Storage Objects: 0] o- iscsi .................................................. [Targets: 0] o- loopback ............................................... [Targets: 0] o- vhost .................................................. [Targets: 0] o- xen-pvscsi ............................................. [Targets: 0]
CODEСоздать цель (
target
) в разделе/iscsi
командой:/iscsi createПример вывода после выполнения команды:Created target iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260.
CODEПроверить результат командой
ls
. Пример вывода после выполнения команды:/> ls o- / ........................................................................... [...] o- backstores ................................................................ [...] | o- block .................................................... [Storage Objects: 1] | | o- storage01 ........................[/dev/vdb (24.0GiB) write-thru deactivated] | | o- alua ..................................................... [ALUA Groups: 1] | | o- default_tg_pt_gp ......................... [ALUA state: Active/optimized] | o- fileio ................................................... [Storage Objects: 0] | o- pscsi .................................................... [Storage Objects: 0] | o- ramdisk .................................................. [Storage Objects: 0] o- iscsi .............................................................. [Targets: 1] | o- iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1 ...... [TPGs: 1] | o- tpg1 ................................................. [no-gen-acls, no-auth] | o- acls ............................................................ [ACLs: 0] | o- luns ............................................................ [LUNs: 0] | o- portals ...................................................... [Portals: 1] | o- 0.0.0.0:3260 ....................................................... [OK] o- loopback ........................................................... [Targets: 0] o- vhost .............................................................. [Targets: 0] o- xen-pvscsi ......................................................... [Targets: 0]
CODEСоздать LUN на основе блочного устройства, зарегистрированного в разделе
/backstores/block
/iscsi/<идентификатор_цели>/tpg1/luns/ create /backstores/block/<наименование_устройства>где:- <наименование_устройства> – в рассматриваемом примере имеет значение
"storage01"
(см. шаг 14); - <идентификатор_цели> – в рассматриваемом примере имеет значение
"iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1"
(см. шаг 16).
Пример вывода после выполнения команды:
Created LUN 0
CODE- <наименование_устройства> – в рассматриваемом примере имеет значение
Проверить результат командой
ls
. Пример вывода после выполнения команды:/> ls o- / ........................................................................... [...] o- backstores ................................................................ [...] | o- block .................................................... [Storage Objects: 1] | | o- storage01 ........................[/dev/vdb (24.0GiB) write-thru deactivated] | | o- alua ..................................................... [ALUA Groups: 1] | | o- default_tg_pt_gp ......................... [ALUA state: Active/optimized] | o- fileio ................................................... [Storage Objects: 0] | o- pscsi .................................................... [Storage Objects: 0] | o- ramdisk .................................................. [Storage Objects: 0] o- iscsi .............................................................. [Targets: 1] | o- iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1 ...... [TPGs: 1] | o- tpg1 ................................................. [no-gen-acls, no-auth] | o- acls ............................................................ [ACLs: 0] | o- luns ............................................................ [LUNs: 0] | | o- lun0 .................... [block/storage01 (/dev/vdb) (default_tg_pt_gp)] | o- portals ...................................................... [Portals: 1] | o- 0.0.0.0:3260 ....................................................... [OK] o- loopback ........................................................... [Targets: 0] o- vhost .............................................................. [Targets: 0] o- xen-pvscsi ......................................................... [Targets: 0]
CODE- В рассматриваемом примере контроль доступа не требуется, поэтому его можно отключить:
переместиться на ветку
/iscsi/<идентификатор_цели>/tpg1
:cd /iscsi/<идентификатор_цели>/tpg1где <идентификатор_цели> – в рассматриваемом примере имеет значение"iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1"
(см. шаг 16).В консоли управления нажатие клавиши <Tab> автоматически дополняет текущую команду или путь к ветке дерева конфигурации, если возможен только один вариант.
отключить использования списков управления доступом (ACL) командой:
set attribute generate_node_acls=1Пример вывода после выполнения команды:Parameter generate_node_acls is now '1'.
CODEнастроить работу цели в demo-режиме (без аутентификации, видимым и доступным для всех) командой:
set attribute demo_mode_write_protect=0Пример вывода после выполнения команды:Parameter demo_mode_write_protect is now '0'.
CODE
- Повторить шаги 14 – 20 для блочного устройства
/dev/vdc
(при выполнении действий шага 14 присвоить устройству наименование, например,storage02
). Выполнить сохранение настроек:
/ saveconfigПример вывода после выполнения команды:Last 10 configs saved in /etc/rtslib-fb-target/backup. Configuration saved to /etc/rtslib-fb-target/saveconfig.json
CODEВыйти из консоли управления:
exit
В консоли управления Linux-IO Target, используемой в ПК СВ версии 3.2, введена система бэкапов конфигурации, и, в связи с этим, после перезагрузки сохраненная конфигурация не загружается автоматически.
На текущий момент после перезагрузки конфигурацию необходимо восстанавливать командой:
sudo targetcli restoreconfig
Пример вывода после выполнения команды:
Configuration restored from /etc/rtslib-fb-target/saveconfig.json
Для того чтобы автоматизировать восстановление конфигурации, необходимо выполнить действия, описанные ниже.
Создать службу
target
, сформировав unit-файл, например с помощью тестового редактораnano
, для этого выполнить команду:В открывшемся текстовом редакторе добавить следующие строки:sudo nano /lib/systemd/system/target.service
[Unit] Description=Restore LIO kernel target configuration Requires=sys-kernel-config.mount After=sys-kernel-config.mount network.target local-fs.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/targetctl restore ExecStop=/usr/bin/targetctl clear SyslogIdentifier=target [Install] WantedBy=multi-user.target
CODEПосле этого сохранить unit-файл и закрыть текстовый редактор.
Перезагрузить список служб командой:
sudo systemctl daemon-reloadДобавить службу
target
в автозагрузку командой:sudo systemctl enable targetПример вывода после выполнения команды:Created symlink /etc/systemd/system/multi-user.target.wants/target.service → /lib/systemd/system/target.service.
CODEДля проверки следует перезагрузить гостевую машину
iscsi-target
и вывести информацию о состоянии службыtarget
:sudo systemctl status targetПример вывода после выполнения команды:● target.service - Restore LIO kernel target configuration Loaded: loaded (/lib/systemd/system/target.service; enabled; vendor preset: enabled) Active: active (exited) since Mon 2023-03-20 16:28:26 MSK; 9min ago Process: 577 ExecStart=/usr/bin/targetctl restore (code=exited, status=0/SUCCESS) Main PID: 577 (code=exited, status=0/SUCCESS)
CODE