Ключевые слова:iscsi, disk, san, nas, fedora, linux, (найти похожие документы)
From: Андрей Маркелов
Date: Mon, 15 Jan 2010 17:02:14 +0000 (UTC)
Subject: Настройка iSCSI target и initiator в RHEL/Fedora
Оригинал: http://markelov.blogspot.com/2008/11/iscsi-target-initiator-rhelfedora.html
Как известно, при использовании существующей сетевой инфраструктуры iSCSI представляет
собой недорогую альтернативу FC, а для целей обучения и тестирования вообще не заменим,
поскольку, в ряде случаев, можно обойтись без дорогостоящего оборудования. Безусловно,
существует и множество "боевых" конфигураций, когда по тем или иным причинам стоит отдать
предпочтение iSCSI. В этом посте я хочу кратко описать настройку iSCSI target и iSCSI
initiator в Red Hat Enterprise Linux и Fedora. Нужно отметить, что до версии RHEL 5.2
поддержка iSCSI target присутствовала в статусе Technology Preview. Поддержка же iSCSI
initiator присутствует в полном объеме еще с Red Hat Enterprise Linux 4.
Для тестов используем две машины: vm01, которая будет экспортировать раздел /dev/xvda5, и
vm02, на которой настроим инициатор.
Настройка iSCSI target
Для начала устанавливаем пакет scsi-target-utils и запускаем демон tgtd:
[root@vm01 ~]# yum install scsi-target-utils
...
[root@vm01 ~]# service tgtd start
[root@vm01 ~]# chkconfig tgtd on
Теперь создаем наше целевое устройство. В качестве имени я выбрал
iqn.2003-12.net.markelov:disk1
[root@vm01 ~]# tgtadm --lld iscsi --op new --mode target --tid 1 -T
iqn.2003-12.net.markelov:disk1
В моем случае я добавляю к целевому устройству свежесозданный раздел /dev/xvda5:
[root@vm01 ~]# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/xvda5
Теперь разрешим доступ хосту vm02 с IP-адресом 192.168.0.109:
[root@vm01 ~]# tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.0.109
Проверяем:
[root@vm01 ~]# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2003-12.net.markelov:disk1
System information:
Driver: iscsi
Status: running
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: deadbeaf1:0
SCSI SN: beaf10
Size: 0
Backing store: No backing store
LUN: 1
Type: disk
SCSI ID: deadbeaf1:1
SCSI SN: beaf11
Size: 964M
Backing store: /dev/xvda5
Account information:
ACL information:
192.168.0.109
[root@vm01 ~]#
Под конец не забудьте прорубить "дырку" в брандмауэре для порта 3260/tcp, который
используется по умолчанию.
Настройка iSCSI initiator
Устанавливаем пакет iscsi-initiator-utils и запускаем демон iscsi:
[root@vm02 ~]# yum install iscsi-initiator-utils
...
[root@vm02 ~]# service iscsi start
iscsid is stopped
Turning off network shutdown. Starting iSCSI daemon: [ OK ]
[ OK ]
Setting up iSCSI targets: iscsiadm: No records found!
[ OK ]
[root@vm02 ~]# chkconfig iscsi on
При запуске мы получаем совершенно справедливое сообщение, что не сконфигурирована ни одна
из целей. Запускаем процесс обзора для поиска целей на хосте vm01 c IP-адресом
192.168.0.100:
[root@vm02 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.0.100:3260
192.168.0.100:3260,1 iqn.2003-12.net.markelov:disk1
В итоге будут созданны две поддиректории с информацией о цели и хосте:
[root@vm02 ~]# ls /var/lib/iscsi/nodes/
iqn.2003-12.net.markelov:disk1
[root@vm02 ~]# ls /var/lib/iscsi/send_targets/
192.168.0.100,3260
Просмотреть информацию можно командой:
[root@vm02 ~]# iscsiadm -m node -T iqn.2003-12.net.markelov:disk1 -p 192.168.0.100:3260
node.name = iqn.2003-12.net.markelov:disk1
node.tpgt = 1
...
Теперь, используя содержимое /var/lib/iscsi/nodes/ и /var/lib/iscsi/send_targets/, демон
iscsi при каждом перезапуске будет подключать наши ранее обнаруженные цели. Также процессом
подключения/отключения можно управлять при помощи утилиты iscsiadm:
[root@vm02 ~]# iscsiadm -m node -T iqn.2003-12.net.markelov:disk1 -p 192.168.0.100:3260 -l
Login session [iface: default, target: iqn.2003-12.net.markelov:disk1, portal: 192.168.0.100,3260]
[root@vm02 ~]#
Теперь команда fdisk покажет наш раздел /dev/sda, экспортированный с vm01:
[root@vm02 ~]# fdisk -l
Disk /dev/xvda: 17.1 GB, 17179869184 bytes
255 heads, 63 sectors/track, 2088 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
...
Disk /dev/sda: 1011 MB, 1011677184 bytes
32 heads, 61 sectors/track, 1012 cylinders
Units = cylinders of 1952 * 512 = 999424 bytes
Disk /dev/sda doesn't contain a valid partition table
После команды
[root@vm02 ~]# iscsiadm -m node -T iqn.2003-12.net.markelov:disk1 -p 192.168.0.100:3260 -u
Logout session [sid: 2, target: iqn.2003-12.net.markelov:disk1, portal: 192.168.0.100,3260]
в выводе fdisk мы увидим только /dev/xvda. Однако, после рестарта демона iscsi, цель снова
появиться в списке устройств. Для удаления всей информации о цели воспользуйтесь командой:
[root@vm02 ~]# iscsiadm -m node -T iqn.2003-12.net.markelov:disk1 -p 192.168.0.100:3260 -o
delete
[root@vm02 ~]# ls /var/lib/iscsi/nodes/
[root@vm02 ~]#
Если у вас несколько целей, то вы не можете заранее знать, под каким именем после следующей
перезагрузки/рестарта сервиса будет доступна конкретная цель. Для того, чтобы каждая цель
всегда была доступна под одним и тем же именем устройства, вы можете написать
соответствующее правило udev или воспользоваться монтированием по метке и UUID файловой
системы ext3. При монтировании файловых систем не забывайте использовать опцию _netdev.
Для того, чтобы лучше понять лог выполненных команд, рекомендую ознакомиться со следующими
источниками:
* /usr/share/doc/scsi-target-utils-*
* tgtadm(8)
* iscsiadm(8)