Iscsi — различия между версиями
Andy (обсуждение | вклад) |
Andy (обсуждение | вклад) (→Ссылки) |
||
(не показано 9 промежуточных версий этого же участника) | |||
Строка 107: | Строка 107: | ||
== Настройка initiator'а == | == Настройка initiator'а == | ||
+ | Устанавливаем пакет <code>iscsi-initiator-utils</code>: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | [root@vm-02 ~]# yum install -y iscsi-initiator-utils.x86_64 | ||
+ | </syntaxhighlight> | ||
+ | Приводим файл <code>/etc/iscsi/initiatorname.iscsi</code> к следующему виду: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | [root@vm-02 ~]# cat /etc/iscsi/initiatorname.iscsi | ||
+ | InitiatorName=iqn.2017-11.com.example:client1 | ||
+ | [root@vm-02 ~]# | ||
+ | </syntaxhighlight> | ||
+ | Теперь поищем, есть ли доступные подключения к нашему таргету на виртуальной машине <code>vm-01</code>: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | [root@vm-02 ~]# iscsiadm -m discovery --type sendtargets --portal 192.168.122.158 --discover | ||
+ | 192.168.122.158:3260,1 iqn.2017-11.com.example:target1 | ||
+ | [root@vm-02 ~]# | ||
+ | </syntaxhighlight> | ||
+ | Подключаемся к таргету: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | [root@vm-02 ~]# iscsiadm --mode node --targetname iqn.2017-11.com.example:target1 --portal 192.168.122.158:3260 --login | ||
+ | Logging in to [iface: default, target: iqn.2017-11.com.example:target1, portal: 192.168.122.158,3260] (multiple) | ||
+ | Login to [iface: default, target: iqn.2017-11.com.example:target1, portal: 192.168.122.158,3260] successful. | ||
+ | [root@vm-02 ~]# | ||
+ | </syntaxhighlight> | ||
+ | Посмотрим информацию о соединении: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | [root@vm-02 ~]# iscsiadm --mode session -P 3 | ||
+ | iSCSI Transport Class version 2.0-870 | ||
+ | version 6.2.0.873-21 | ||
+ | Target: iqn.2017-11.com.example:target1 (non-flash) | ||
+ | Current Portal: 192.168.122.158:3260,1 | ||
+ | Persistent Portal: 192.168.122.158:3260,1 | ||
+ | ********** | ||
+ | Interface: | ||
+ | ********** | ||
+ | Iface Name: default | ||
+ | Iface Transport: tcp | ||
+ | Iface Initiatorname: iqn.2017-11.com.example:client1 | ||
+ | Iface IPaddress: 192.168.122.179 | ||
+ | Iface HWaddress: <empty> | ||
+ | Iface Netdev: <empty> | ||
+ | SID: 1 | ||
+ | iSCSI Connection State: LOGGED IN | ||
+ | iSCSI Session State: LOGGED_IN | ||
+ | Internal iscsid Session State: NO CHANGE | ||
+ | ********* | ||
+ | Timeouts: | ||
+ | ********* | ||
+ | Recovery Timeout: 120 | ||
+ | Target Reset Timeout: 30 | ||
+ | LUN Reset Timeout: 30 | ||
+ | Abort Timeout: 15 | ||
+ | ***** | ||
+ | CHAP: | ||
+ | ***** | ||
+ | username: <empty> | ||
+ | password: ******** | ||
+ | username_in: <empty> | ||
+ | password_in: ******** | ||
+ | ************************ | ||
+ | Negotiated iSCSI params: | ||
+ | ************************ | ||
+ | HeaderDigest: None | ||
+ | DataDigest: None | ||
+ | MaxRecvDataSegmentLength: 262144 | ||
+ | MaxXmitDataSegmentLength: 262144 | ||
+ | FirstBurstLength: 65536 | ||
+ | MaxBurstLength: 262144 | ||
+ | ImmediateData: Yes | ||
+ | InitialR2T: Yes | ||
+ | MaxOutstandingR2T: 1 | ||
+ | ************************ | ||
+ | Attached SCSI devices: | ||
+ | ************************ | ||
+ | Host Number: 8 State: running | ||
+ | scsi8 Channel 00 Id 0 Lun: 0 | ||
+ | Attached scsi disk sda State: running | ||
+ | [root@vm-02 ~]# | ||
+ | </syntaxhighlight> | ||
+ | Проверим блочные устройства, доступные на нашей виртуальной машине: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | [root@vm-02 ~]# lsblk --scsi -m | ||
+ | NAME HCTL TYPE VENDOR MODEL REV TRAN NAME SIZE OWNER GROUP MODE | ||
+ | sda 8:0:0:0 disk LIO-ORG vm-01-disk 4.0 iscsi sda 5G root disk brw-rw---- | ||
+ | sr0 2:0:0:0 rom QEMU QEMU DVD-ROM 2.5+ sata sr0 3.5G root cdrom brw-rw---- | ||
+ | [root@vm-02 ~]# | ||
+ | </syntaxhighlight> | ||
+ | Далее отформатируем устройство и прописываем монтирование в <code>/etc/fstab</code> | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | [root@vm-02 ~]# mkfs.xfs /dev/sda | ||
+ | meta-data=/dev/sda isize=256 agcount=8, agsize=163840 blks | ||
+ | = sectsz=512 attr=2, projid32bit=1 | ||
+ | = crc=0 | ||
+ | data = bsize=4096 blocks=1310720, imaxpct=25 | ||
+ | = sunit=0 swidth=0 blks | ||
+ | naming =version 2 bsize=4096 ascii-ci=0 ftype=0 | ||
+ | log =internal log bsize=4096 blocks=2560, version=2 | ||
+ | = sectsz=512 sunit=0 blks, lazy-count=1 | ||
+ | realtime =none extsz=4096 blocks=0, rtextents=0 | ||
+ | [root@vm-02 ~]# lsblk --scsi -o NAME,HCTL,TYPE,VENDOR,MODEL,REV,TRAN,SIZE,OWNER,GROUP,MODE,UUID | ||
+ | NAME HCTL TYPE VENDOR MODEL REV TRAN SIZE OWNER GROUP MODE UUID | ||
+ | sda 8:0:0:0 disk LIO-ORG vm-01-disk 4.0 iscsi 5G root disk brw-rw---- 2740f870-02c3-42e6-a808-0b6227e92ca5 | ||
+ | sr0 2:0:0:0 rom QEMU QEMU DVD-ROM 2.5+ sata 3.5G root cdrom brw-rw---- 2014-05-07-03-58-46-00 | ||
+ | [root@vm-02 ~]# cat /etc/fstab | ||
+ | |||
+ | # | ||
+ | # /etc/fstab | ||
+ | # Created by anaconda on Wed Nov 22 11:45:46 2017 | ||
+ | # | ||
+ | # Accessible filesystems, by reference, are maintained under '/dev/disk' | ||
+ | # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info | ||
+ | # | ||
+ | /dev/mapper/rhel-root / xfs defaults 1 1 | ||
+ | UUID=cc10fe05-aa22-42d6-a18e-39d1eb5ad338 /boot xfs defaults 1 2 | ||
+ | UUID=2740f870-02c3-42e6-a808-0b6227e92ca5 /media xfs _netdev 0 2 | ||
+ | [root@vm-02 ~]# | ||
+ | </syntaxhighlight> | ||
+ | Проверим, правильно ли мы заполнили <code>/etc/fstab</code> | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | [root@vm-02 ~]# mount -a | ||
+ | [root@vm-02 ~]# findmnt -A -t xfs | ||
+ | TARGET SOURCE FSTYPE OPTIONS | ||
+ | / /dev/mapper/rhel-root xfs rw,relatime,seclabel,attr2,inode64,noquota | ||
+ | ├─/boot /dev/vda1 xfs rw,relatime,seclabel,attr2,inode64,noquota | ||
+ | └─/media /dev/sda xfs rw,relatime,seclabel,attr2,inode64,noquota | ||
+ | [root@vm-02 ~]# | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Ссылки == | ||
+ | [https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/storage_administration_guide/online-storage-management Управление онлайн хранилищами] |
Текущая версия на 10:49, 4 декабря 2018
Содержание
Конфигурирование 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
Приводим файл /etc/iscsi/initiatorname.iscsi
к следующему виду:
[root@vm-02 ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2017-11.com.example:client1
[root@vm-02 ~]#
Теперь поищем, есть ли доступные подключения к нашему таргету на виртуальной машине vm-01
:
[root@vm-02 ~]# iscsiadm -m discovery --type sendtargets --portal 192.168.122.158 --discover
192.168.122.158:3260,1 iqn.2017-11.com.example:target1
[root@vm-02 ~]#
Подключаемся к таргету:
[root@vm-02 ~]# iscsiadm --mode node --targetname iqn.2017-11.com.example:target1 --portal 192.168.122.158:3260 --login
Logging in to [iface: default, target: iqn.2017-11.com.example:target1, portal: 192.168.122.158,3260] (multiple)
Login to [iface: default, target: iqn.2017-11.com.example:target1, portal: 192.168.122.158,3260] successful.
[root@vm-02 ~]#
Посмотрим информацию о соединении:
[root@vm-02 ~]# iscsiadm --mode session -P 3
iSCSI Transport Class version 2.0-870
version 6.2.0.873-21
Target: iqn.2017-11.com.example:target1 (non-flash)
Current Portal: 192.168.122.158:3260,1
Persistent Portal: 192.168.122.158:3260,1
**********
Interface:
**********
Iface Name: default
Iface Transport: tcp
Iface Initiatorname: iqn.2017-11.com.example:client1
Iface IPaddress: 192.168.122.179
Iface HWaddress: <empty>
Iface Netdev: <empty>
SID: 1
iSCSI Connection State: LOGGED IN
iSCSI Session State: LOGGED_IN
Internal iscsid Session State: NO CHANGE
*********
Timeouts:
*********
Recovery Timeout: 120
Target Reset Timeout: 30
LUN Reset Timeout: 30
Abort Timeout: 15
*****
CHAP:
*****
username: <empty>
password: ********
username_in: <empty>
password_in: ********
************************
Negotiated iSCSI params:
************************
HeaderDigest: None
DataDigest: None
MaxRecvDataSegmentLength: 262144
MaxXmitDataSegmentLength: 262144
FirstBurstLength: 65536
MaxBurstLength: 262144
ImmediateData: Yes
InitialR2T: Yes
MaxOutstandingR2T: 1
************************
Attached SCSI devices:
************************
Host Number: 8 State: running
scsi8 Channel 00 Id 0 Lun: 0
Attached scsi disk sda State: running
[root@vm-02 ~]#
Проверим блочные устройства, доступные на нашей виртуальной машине:
[root@vm-02 ~]# lsblk --scsi -m
NAME HCTL TYPE VENDOR MODEL REV TRAN NAME SIZE OWNER GROUP MODE
sda 8:0:0:0 disk LIO-ORG vm-01-disk 4.0 iscsi sda 5G root disk brw-rw----
sr0 2:0:0:0 rom QEMU QEMU DVD-ROM 2.5+ sata sr0 3.5G root cdrom brw-rw----
[root@vm-02 ~]#
Далее отформатируем устройство и прописываем монтирование в /etc/fstab
[root@vm-02 ~]# mkfs.xfs /dev/sda
meta-data=/dev/sda isize=256 agcount=8, agsize=163840 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=1310720, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@vm-02 ~]# lsblk --scsi -o NAME,HCTL,TYPE,VENDOR,MODEL,REV,TRAN,SIZE,OWNER,GROUP,MODE,UUID
NAME HCTL TYPE VENDOR MODEL REV TRAN SIZE OWNER GROUP MODE UUID
sda 8:0:0:0 disk LIO-ORG vm-01-disk 4.0 iscsi 5G root disk brw-rw---- 2740f870-02c3-42e6-a808-0b6227e92ca5
sr0 2:0:0:0 rom QEMU QEMU DVD-ROM 2.5+ sata 3.5G root cdrom brw-rw---- 2014-05-07-03-58-46-00
[root@vm-02 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Nov 22 11:45:46 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / xfs defaults 1 1
UUID=cc10fe05-aa22-42d6-a18e-39d1eb5ad338 /boot xfs defaults 1 2
UUID=2740f870-02c3-42e6-a808-0b6227e92ca5 /media xfs _netdev 0 2
[root@vm-02 ~]#
Проверим, правильно ли мы заполнили /etc/fstab
[root@vm-02 ~]# mount -a
[root@vm-02 ~]# findmnt -A -t xfs
TARGET SOURCE FSTYPE OPTIONS
/ /dev/mapper/rhel-root xfs rw,relatime,seclabel,attr2,inode64,noquota
├─/boot /dev/vda1 xfs rw,relatime,seclabel,attr2,inode64,noquota
└─/media /dev/sda xfs rw,relatime,seclabel,attr2,inode64,noquota
[root@vm-02 ~]#