Iscsi
Содержание
Конфигурирование iscsi
Предварительные требования
- Две виртуальная машины с сетевыми интерфейсами
- На виртуальную машину
vm-01
необходимо подключить второй неразмеченный диск примерно на 5Gb. - Установленные пакеты:
bash-completion
Общая информация и терминология
iSCSI - протокол передачи SCSI команд поверх TCP/IP, для управления устройствами хранения данных.
Терминология iSCSI во многом основывается на терминологии, использующейся в SCSI:
- initiator — тот, кто устанавливает соединение с целью(target). Чаще всего это узел (в общем случае) осуществляет ввод/вывод на блочные устройства.
- target — экспортируемый объект. В зависимости от контекста цель(target) называют или целиком экспортирующий узел, или только экспортируемый объект. Сам объект может делиться на lun’ы.
- Портал — группа целей(targets), которые анонсируются вместе. Чаще всего один узел хранения — один портал.
- IQN — полное имя участника взаимодействия. На практике существует iqn у инициатора и у цели(target).
- endpoint — уточнённое имя ресурса, чаще всего включает в себя iqn, номер LUN’а и указание на конкретный метод доступа к нему (например, номер соединения, LUN и IP-адрес, с которого следует получать доступ к устройству).
- LUN (Logical Unit Number) — номер объекта внутри цели(target). Ближайшим аналогом является раздел диска или отдельный том.
- ACL (Access Control List) — список доступа, основанный на iqn инициатора, позволяющий предоствить доступ к конкретной цели.
По iscsi можно подключить как отдельный неразмеченный диск, так и том LVM или даже файл, который будет выполнять
роль хранилища информации. Поэтому алгоритм действий следующий:
- Создаем хранилище
- Присваеваем iqn хранилищу и создаем группу порталов
- Конфигурируем acl для группы порталов
- Создаем lun'ы, через которые будем предоставлять доступ к хранилищу
- Создаем сетевой интерфейс, через который инициатор(ы) будут получать доступ к хранилищу
Настройка target'а
Установим пакет targetcli
и запустим сервис:
[root@vm-01 ~]# yum install -y targetcli
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Package targetcli-2.1.fb41-3.el7.noarch already installed and latest version
Nothing to do
[root@vm-01 ~]# systemctl enable target.service
Created symlink from /etc/systemd/system/multi-user.target.wants/target.service to /usr/lib/systemd/system/target.service.
[root@vm-01 ~]# systemctl start target.service
[root@vm-01 ~]#
Проверяем наличие диска в системе:
[root@vm-01 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 3.5G 0 rom
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 512M 0 part /boot
└─vda2 252:2 0 19.5G 0 part
└─rhel-root 253:0 0 19.5G 0 lvm /
vdb 252:16 0 5G 0 disk
[root@vm-01 ~]#
targetcli
- это оболочка с иерархической системой, в каждом иерархическом элементе которой
существует собственный набор команд (по смыслу похожа на оболочку Mikrotik). Однако, можно вводить команды не в интерактивном режиме.
Итак, нашим хранилищем будет устройство /dev/vdb
, которое следует создать:
[root@vm-01 ~]# targetcli --help
Usage: /usr/bin/targetcli [--version|--help|CMD]
--version Print version
--help Print this information
CMD Run targetcli shell command and exit
<nothing> Enter configuration shell
See man page for more information.
# targetcli 'backstores/block/ create vm-01-disk /dev/vdb'
Created block storage object vm-01-disk using /dev/vdb.
[root@vm-01 ~]#
Присваеваем iqn хранилищу и создаем группу порталов:
[root@vm-01 ~]# targetcli 'iscsi/ create iqn.2017-11.com.example:target1'
Created target iqn.2017-11.com.example:target1.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
[root@vm-01 ~]#
Создаем acl. Указываем имя клиента (initiator) которому можно подключаться к нашему серверу (target):
[root@vm-01 ~]# targetcli 'iscsi/iqn.2017-11.com.example:target1/tpg1/acls create iqn.2017-11.com.example:client1'
Created Node ACL for iqn.2017-11.com.example:client1
[root@vm-01 ~]#
Создаем lun. acl ему присваивается автоматически:
[root@vm-01 ~]# targetcli 'iscsi/iqn.2017-11.com.example:target1/tpg1/luns create storage_object=/backstores/block/vm-01-disk'
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2017-11.com.example:client1
[root@vm-01 ~]#
Удалим прослушиваение всех адресов iSCSI сервисом, и разрешим принимать соединение только на определенном интерфейсе:
[root@vm-01 ~]# targetcli 'iscsi/iqn.2017-11.com.example:target1/tpg1/portals delete ip_address=0.0.0.0 ip_port=3260'
Deleted network portal 0.0.0.0:3260
[root@vm-01 ~]# targetcli 'iscsi/iqn.2017-11.com.example:target1/tpg1/portals create ip_address=192.168.122.158 ip_port=3260'
Using default IP port 3260
Created network portal 192.168.122.158:3260.
[root@vm-01 ~]
Откроем соедниения по протоколу tcp для порта 3260:
[root@vm-01 ~]# firewall-cmd --add-port=3260/tcp --permanent
success
[root@vm-01 ~]# firewall-cmd --reload
success
[root@vm-01 ~]#
Настройка initiator'а
Устанавливаем пакет iscsi-initiator-utils
:
[root@vm-02 ~]# yum install -y iscsi-initiator-utils.x86_64