Iscsi

Материал из pNp Wiki
Перейти к: навигация, поиск

Конфигурирование iscsi

Предварительные требования

  • Две виртуальная машины с сетевыми интерфейсами
  • На виртуальную машину vm-01 необходимо подключить второй неразмеченный диск примерно на 2Gb.
  • Установленные пакеты: 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 - это оболочка с иерархической системой, в каждом иерархическом элементе которой существует собственный набор команд. Однако, можно вводить команды не в интерактивном режиме. Итак, нашим хранилищем будет устройство /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.
[root@vm-01 ~]# targetcli backstores/block/ create vm-01-disk /dev/vdb 
Created block storage object vm-01-disk using /dev/vdb.