Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Администрирование систем Linux. Устройства iSCSI

Оригинал: iSCSI devices
Автор: Paul Cobbaut
Дата публикации: 12 марта 2015 г.
Перевод: A. Панин
Дата перевода: 30 марта 2015 г.

Глава 12. Устройства iSCSI

По прочтении данной главы вы научитесь настраивать сервер, являющийся целевым сервером iSCSI (iSCSI target), и клиент, являющийся инициатором iSCSI (iSCSI initiator).

12.1. Терминология iSCSI

iSCSI является протоколом, который позволяет передавать команды SCSI посредством протокола IP. Это означает, что вы можете использовать локальные файлы устройств SCSI (такие, как /dev/sdb) в условиях отсутствия представленных ими дисковых накопителей в локальном компьютере.

Компьютер, в котором установлены физические устройства для хранения данных, называется целевым сервером iSCSI (iSCSI Target). Каждое отдельное адресуемое устройство iSCSI на целевом сервере получает индивидуальный номер LUN.

Компьютер-клиент iSCSI, который взаимодействует с целевым сервером называется инициатором (iSCSI Initiator). Инициатор отправляет команды SCSI по протоколу IP вместо непосредственного взаимодействия с аппаратным устройством. Инициатор должен соединяться с целевым сервером посредством сети.

12.2. Целевой сервер iSCSI в дистрибутиве RHEL/CentOS

В данном разделе описана методика настройки целевого сервера iSCSI в дистрибутивах RHEL6, RHEL7 и CentOS.

Настройку следует начинать с установки пакета с программными компонентами, выполняющими функции целевого сервера iSCSI.

yum install scsi-target-utils

В данном примере в файле /etc/tgt/targets.conf указаны пути к файлам устройств, представляющим три локальных диска, которым должны быть присвоены номера LUN.

<target iqn.2008-09.com.example:server.target2>
    direct-store /dev/sdb
    direct-store /dev/sdc
    direct-store /dev/sdd
    incominguser paul hunter2
</target>

Перезапуск службы:

[root@centos65 ~]# service tgtd start
Starting SCSI target daemon:                                [ OK ]

Стандартным локальным портом целевого сервера iSCSI должен являться порт номер 3260, причем при необходимости вы можете удостовериться в этом с помощью утилиты netstat.

[root@server1 tgt]# netstat -ntpl | grep tgt
tcp    0   0 0.0.0.0:3260       0.0.0.0:*          LISTEN      1670/tgtd
tcp    0   0 :::3260            :::*               LISTEN      1670/tgtd

Теперь при использовании команды tgt-admin -s вы можете получить подробную информацию об устройствах с тремя номерам LUN (а также о контроллере с номером LUN 0).

[root@server1 tgt]# tgt-admin -s
Target 1: iqn.2014-04.be.linux-training:server1.target1
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET 00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET 00010001
            SCSI SN: VB9f23197b-af6cfb60 
            Size: 1074 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/sdb
            Backing store flags: 
        LUN: 2
            Type: disk
            SCSI ID: IET 00010002
            SCSI SN: VB8f554351-a1410828 
            Size: 1074 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/sdc
            Backing store flags: 
        LUN: 3
            Type: disk
            SCSI ID: IET 00010003
            SCSI SN: VB1035d2f0-7ae90b49 
            Size: 1074 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/sdd
            Backing store flags: 
    Account information:
    ACL information:
        ALL

12.3. Инициатор iSCSI в дистрибутиве RHEL/CentOS

В данном разделе описана методика настройки инициатора iSCSI в дистрибутивах RHEL6, RHEL7 и CentOS.

Настройку следует начинать с установки пакета с программными компонентами, выполняющими функции инициатора iSCSI.

[root@server2 ~]# yum install iscsi-initiator-utils

После этого необходимо запросить у целевого сервера iSCSI список идентификаторов всех целевых серверов.

[root@server2 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.1.95:3260
Starting iscsid: [ OK ]
192.168.1.95:3260,1 iqn.2014-04.be.linux-training:centos65.target1

Мы получили информацию о целевом сервере с идентификатором iqn.2014-04.be.linux-training:centos65.target1.

Используем этот идентификатор iqn для указания имени пользователя и пароля (paul и hunter2 соответственно), которые были ранее установлены нами на целевом сервере.

[root@server2 iscsi]# iscsiadm -m node --targetname iqn.2014-04.be.linux-tra\
ining:centos65.target1 --portal "192.168.1.95:3260" --op=update --name node.\
session.auth.username --value=paul
[root@server2 iscsi]# iscsiadm -m node --targetname iqn.2014-04.be.linux-tra\
ining:centos65.target1 --portal "192.168.1.95:3260" --op=update --name node.\
session.auth.password --value=hunter2
[root@server2 iscsi]# iscsiadm -m node --targetname iqn.2014-04.be.linux-tra\
ining:centos65.target1 --portal "192.168.1.95:3260" --op=update --name node.\
session.auth.authmethod --value=CHAP

В дистрибутивах RHEL и CentOS эта информация хранится в файлах из директории /var/lib/iscsi/nodes/.

[root@server2 iscsi]# grep auth /var/lib/iscsi/nodes/iqn.2014-04.be.linux-tr\
aining\:centos65.target1/192.168.1.95\,3260\,1/default 
node.session.auth.authmethod = CHAP
node.session.auth.username = paul
node.session.auth.password = hunter2
node.conn[0].timeo.auth_timeout = 45
[root@server2 iscsi]# 

После перезапуска службы iscsi в нашей системе появятся три новых устройства.

[root@server2 iscsi]# fdisk -l | grep Disk
Disk /dev/sda: 42.9 GB, 42949672960 bytes
Disk identifier: 0x0004f229
Disk /dev/sdb: 1073 MB, 1073741824 bytes
Disk identifier: 0x00000000
Disk /dev/sdc: 1073 MB, 1073741824 bytes
Disk identifier: 0x00000000
Disk /dev/sdd: 1073 MB, 1073741824 bytes
Disk identifier: 0x00000000
Disk /dev/sde: 2147 MB, 2147483648 bytes
Disk identifier: 0x00000000
Disk /dev/sdf: 2147 MB, 2147483648 bytes
Disk identifier: 0x00000000
Disk /dev/sdg: 2147 MB, 2147483648 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/VolGroup-lv_root: 41.4 GB, 41448112128 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/VolGroup-lv_swap: 973 MB, 973078528 bytes
Disk identifier: 0x00000000
[root@server2 iscsi]# service iscsi restart
Stopping iscsi: [ OK ]
Starting iscsi: [ OK ]
[root@server2 iscsi]# fdisk -l | grep Disk
Disk /dev/sda: 42.9 GB, 42949672960 bytes
Disk identifier: 0x0004f229
Disk /dev/sdb: 1073 MB, 1073741824 bytes
Disk identifier: 0x00000000
Disk /dev/sdc: 1073 MB, 1073741824 bytes
Disk identifier: 0x00000000
Disk /dev/sdd: 1073 MB, 1073741824 bytes
Disk identifier: 0x00000000
Disk /dev/sde: 2147 MB, 2147483648 bytes
Disk identifier: 0x00000000
Disk /dev/sdf: 2147 MB, 2147483648 bytes
Disk identifier: 0x00000000
Disk /dev/sdg: 2147 MB, 2147483648 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/VolGroup-lv_root: 41.4 GB, 41448112128 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/VolGroup-lv_swap: 973 MB, 973078528 bytes
Disk identifier: 0x00000000
Disk /dev/sdh: 1073 MB, 1073741824 bytes
Disk identifier: 0x00000000
Disk /dev/sdi: 1073 MB, 1073741824 bytes
Disk identifier: 0x00000000
Disk /dev/sdj: 1073 MB, 1073741824 bytes
Disk identifier: 0x00000000

Вы можете получить информацию о состоянии службы iscsi, воспользовавшись следующей командой:

service iscsi status

12.4. Целевой сервер iSCSI в дистрибутиве Debian

Процесс подготовки программного обеспечения для целевого сервера в дистрибутивах Ubuntu и Debian заключается в установке пакета программного обеспечения iscsitarget в обоих дистрибутивах, а также в установке дополнительного пакета программного обеспечения iscsitarget-dkms для сборки модулей ядра ОС исключительно в дистрибутиве Debian.

root@debby6:~# aptitude install iscsitarget
Следующие НОВЫЕ пакеты будут установлены:
  iscsitarget 
0 пакетов обновлено, 1 установлено новых, 0 пакетов отмечено для удаления, и 0 пакетов не обновлено.
Необходимо получить 69.4 kB  архивов. После распаковки 262 kB будет занято.
Получить: 1 http://ftp.belnet.be/debian/ squeeze/main iscsitarget i386 1.4.20.2-1\
  [69.4 kB]
Получено 69.4 kБ in 0с (415 kБ/с)
Выбор ранее не выбранного пакета iscsitarget.
(Чтение базы данных ... на данный момент установлено 36441 файлов и каталогов.)
Распаковывается iscsitarget (from .../iscsitarget_1.4.20.2-1_i386.deb) ...
Обрабатываются триггеры для man-db ...
Настраивается пакет iscsitarget (1.4.20.2-1) ...
iscsitarget not enabled in "/etc/default/iscsitarget", not starting...(warning).

При работе с дистрибутивом Debian 6 вам также придется выполнить команду aptitude install iscsitarget-dkms для установки программных компонентов, предназначенных для сборки модулей ядра ОС. В случае дистрибутива Debian 5 аналогичная команда будет выглядеть следующим образом: aptitude install iscsitarget-modules-`uname -a`. В дистрибутиве Ubuntu все необходимые модули ядра ОС включены в состав основного пакета программного обеспечения.

Целевой сервер iSCSI по умолчанию деактивирован, поэтому нам придется активировать его.

root@debby6:~# cat /etc/default/iscsitarget 
ISCSITARGET_ENABLE=false
root@debby6:~# vi /etc/default/iscsitarget 
root@debby6:~# cat /etc/default/iscsitarget 
ISCSITARGET_ENABLE=true

12.5. Использование технологии iSCSI для доступа к файлам, созданным с помощью утилиты dd

Вы можете использовать тома LVM (/dev/md0/lvol0), физические разделы дисков (/dev/sda), устройства RAID (/dev/md0), а также обычные файлы в качестве источников данных. В данном примере мы будем использовать файлы, созданные с помощью утилиты dd.

Ниже показана методика создания трех файлов небольших размеров (100 МБ, 200 МБ и 300 МБ).

root@debby6:~# mkdir /iscsi
root@debby6:~# dd if=/dev/zero of=/iscsi/lun1.img bs=1M count=100
100+0 записей получено
100+0 записей отправлено
 скопировано 104857600 байт (105 MB), 0.315825 c, 332 MB/c
root@debby6:~# dd if=/dev/zero of=/iscsi/lun2.img bs=1M count=200
200+0 записей получено
200+0 записей отправлено
 скопировано 209715200 байт (210 MB), 1.08342 c, 194 MB/c
root@debby6:~# dd if=/dev/zero of=/iscsi/lun3.img bs=1M count=300
300+0 записей получено
300+0 записей отправлено
 скопировано 314572800 байт (315 MB), 1.36209 c, 231 MB/c

Мы должны объявить эти три файла источниками данных для целевого сервера iSCSI в файле /etc/iet/ietd.conf (в некоторых случаях расположенном по пути /etc/ietd.conf).

root@debby6:/etc/iet# cp ietd.conf ietd.conf.original
root@debby6:/etc/iet# > ietd.conf
root@debby6:/etc/iet# vi ietd.conf
root@debby6:/etc/iet# cat ietd.conf
Target iqn.2010-02.be.linux-training:storage.lun1
	IncomingUser isuser hunter2
	OutgoingUser
	Lun 0 Path=/iscsi/lun1.img,Type=fileio
	Alias LUN1

Target iqn.2010-02.be.linux-training:storage.lun2
	IncomingUser isuser hunter2
	OutgoingUser
	Lun 0 Path=/iscsi/lun2.img,Type=fileio
	Alias LUN2

Target iqn.2010-02.be.linux-training:storage.lun3
	IncomingUser isuser hunter2
	OutgoingUser
	Lun 0 Path=/iscsi/lun3.img,Type=fileio
	Alias LUN3 

Нам также необходимо добавить информацию о наших устройствах в файл /etc/initiators.allow.

root@debby6:/etc/iet# cp initiators.allow initiators.allow.original
root@debby6:/etc/iet# >initiators.allow
root@debby6:/etc/iet# vi initiators.allow
root@debby6:/etc/iet# cat initiators.allow
iqn.2010-02.be.linux-training:storage.lun1
iqn.2010-02.be.linux-training:storage.lun2
iqn.2010-02.be.linux-training:storage.lun3

Самое время запустить настроенный сервер:

root@debby6:/etc/iet# /etc/init.d/iscsitarget start
Starting iSCSI enterprise target service:.
.
root@debby6:/etc/iet#

Для проверки корректности активации устройств для хранения данных можно прочитать содержимое файлов из директории /proc/net/iet:

root@debby6:/etc/iet# cat /proc/net/iet/volume 
tid:3 name:iqn.2010-02.be.linux-training:storage.lun3
 lun:0 state:0 iotype:fileio iomode:wt blocks:614400 blocksize:\
512 path:/iscsi/lun3.img
tid:2 name:iqn.2010-02.be.linux-training:storage.lun2
 lun:0 state:0 iotype:fileio iomode:wt blocks:409600 blocksize:\
512 path:/iscsi/lun2.img
tid:1 name:iqn.2010-02.be.linux-training:storage.lun1
 lun:0 state:0 iotype:fileio iomode:wt blocks:204800 blocksize:\
512 path:/iscsi/lun1.img
root@debby6:/etc/iet# cat /proc/net/iet/session 
tid:3 name:iqn.2010-02.be.linux-training:storage.lun3
tid:2 name:iqn.2010-02.be.linux-training:storage.lun2
tid:1 name:iqn.2010-02.be.linux-training:storage.lun1

12.6. Инициатор iSCSI в дистрибутиве Ubuntu

В первую очередь мы должны установить клиентское программное обеспечение iSCSI (разумеется, не на том компьютере, который будет выполнять роль целевого сервера).

root@ubu1104:~# aptitude install open-iscsi
Чтение списков пакетов...
Построение дерева зависимостей...
Чтение информации о состоянии...
Чтение информации о расширенных состояниях...
Инициализация состояний пакетов...
Следующие НОВЫЕ пакеты будут установлены:
  open-iscsi open-iscsi-utils{a}

После этого мы изменим настройки клиентского программного обеспечения iSCSI для его автоматического запуска.

root@ubu1104:/etc/iscsi# cp iscsid.conf iscsid.conf.original
root@ubu1104:/etc/iscsi# vi iscsid.conf
root@ubu1104:/etc/iscsi# grep ^node.startup iscsid.conf
node.startup = automatic

Или же, вы можете осуществить запуск этого клиентского программного обеспечения в ручном режиме.

root@ubu1104:/etc/iscsi/nodes# /etc/init.d/open-iscsi start
 * Starting iSCSI initiator service iscsid [ OK ] 
 * Setting up iSCSI targets [ OK ] 
root@ubu1104:/etc/iscsi/nodes#

Теперь мы можем соединиться с целевым сервером и использовать утилиту iscsiadm для получения информации об устройствах, к которым он предоставляет доступ.

root@ubu1104:/etc/iscsi# iscsiadm -m discovery -t st -p 192.168.1.31

192.168.1.31:3260,1 iqn.2010-02.be.linux-training:storage.lun2

192.168.1.31:3260,1 iqn.2010-02.be.linux-training:storage.lun1

192.168.1.31:3260,1 iqn.2010-02.be.linux-training:storage.lun3

Эта же утилита iscsiadm может использоваться и для редактирования файлов из директории /etc/iscsi/nodes/.

root@ubu1104:/etc/iscsi# iscsiadm -m node --targetname "iqn.2010-02.be.linu\
x-training:storage.lun1" --portal "192.168.1.31:3260" --op=update --name no\
de.session.auth.authmethod --value=CHAP
root@ubu1104:/etc/iscsi# iscsiadm -m node --targetname "iqn.2010-02.be.linu\
x-training:storage.lun1" --portal "192.168.1.31:3260" --op=update --name no\
de.session.auth.username --value=isuser
root@ubu1104:/etc/iscsi# iscsiadm -m node --targetname "iqn.2010-02.be.linu\
x-training:storage.lun1" --portal "192.168.1.31:3260" --op=update --name no\
de.session.auth.password --value=hunter2

Описанные выше действия следует повторить и для двух других устройств.

После этого необходимо перезапустить системную службу инициатора для соединения с целевым сервером.

root@ubu1104:/etc/iscsi/nodes# /etc/init.d/open-iscsi restart
 * Disconnecting iSCSI targets                                      [ OK ]
 * Stopping iSCSI initiator service                                 [ OK ]
 * Starting iSCSI initiator service iscsid                          [ OK ]
 * Setting up iSCSI targets 

Используйте команду fdisk -i для получения информации о трех новых устройствах iSCSI.

root@ubu1104:/etc/iscsi/nodes# fdisk -l 2> /dev/null | grep Disk
Disk /dev/sda: 17.2 GB, 17179869184 bytes
Disk identifier: 0x0001983f
Disk /dev/sdb: 209 MB, 209715200 bytes
Disk identifier: 0x00000000
Disk /dev/sdd: 314 MB, 314572800 bytes
Disk identifier: 0x00000000
Disk /dev/sdc: 104 MB, 104857600 bytes
Disk identifier: 0x00000000 

После этого на стороне целевого сервера может быть получена информация об активных сессиях.

root@debby6:/etc/iet# cat /proc/net/iet/session 
tid:3 name:iqn.2010-02.be.linux-training:storage.lun3
	sid:5348024611832320 initiator:iqn.1993-08.org.debian:01:8983ed2d770
		cid:0 ip:192.168.1.35 state:active hd:none dd:none
tid:2 name:iqn.2010-02.be.linux-training:storage.lun2
	sid:4785074624856576 initiator:iqn.1993-08.org.debian:01:8983ed2d770
		cid:0 ip:192.168.1.35 state:active hd:none dd:none
tid:1 name:iqn.2010-02.be.linux-training:storage.lun1
	sid:5066549618344448 initiator:iqn.1993-08.org.debian:01:8983ed2d770
		cid:0 ip:192.168.1.35 state:active hd:none dd:none
root@debby6:/etc/iet# 

12.7. Использование устройств iSCSI

Между устройствами SCSI и iSCSI не существует принципиальных различий после их корректного соединения с системой: поверхность дисковых устройств должна разделяться на разделы, в этих разделах должны создаваться файловые системы, после чего созданные файловые системы должны монтироваться.

root@ubu1104:/etc/iscsi/nodes# history | tail -13
   94 fdisk /dev/sdc
   95 fdisk /dev/sdd
   96 fdisk /dev/sdb
   97 mke2fs /dev/sdb1
   98 mke2fs -j /dev/sdc1
   99 mkfs.ext4 /dev/sdd1
  100 mkdir /mnt/is1
  101 mkdir /mnt/is2
  102 mkdir /mnt/is3
  103 mount /dev/sdb1 /mnt/is1
  104 mount /dev/sdc1 /mnt/is2
  105 mount /dev/sdd1 /mnt/is3
  106 history | tail -13
root@ubu1104:/etc/iscsi/nodes# mount | grep is
/dev/sdb1 on /mnt/is1 type ext2 (rw)
/dev/sdc1 on /mnt/is2 type ext3 (rw)
/dev/sdd1 on /mnt/is3 type ext4 (rw)

12.8. Практическое задание: устройства iSCSI

1. Настройте целевые серверы (используя устройства LVM и SCSI в качестве источников данных) и инициатор, который будет соединяться с обоими серверами.

12.9. Корректная процедура выполнения практического задания: устройства iSCSI

1. Настройте целевые серверы (используя устройства LVM и SCSI в качестве источников данных) и инициатор, который будет соединяться с обоими серверами.

Данная методика применима в случае работы с дистрибутивами Debian/Ubuntu/Mint. Для ознакомления с нюансами, которые могут возникнуть в случае работы с дистрибутивами RHEL/CentOS, следует обратиться к разделам с теоретической информацией.

Договоритесь (с сидящим рядом студентом) о том, какой из компьютеров будет выполнять функции целевого сервера, а какой - инициатора.

Действия, которые должны быть выполнены на компьютере, выполняющем роль целевого сервера:

В первую очередь с помощью стандартных инструментов вашего дистрибутива для установки программного обеспечения следует установить пакет программного обеспечения iscsitarget. После этого вы должны использовать знания, полученные в ходе чтения предыдущей главы, для настройки логического тома (/dev/vg/lvol0), а также главы, посвященной технологии RAID, для настройки устройства RAID, которое будет представлено файлом устройства /dev/md0. Далее вы должны выполнить следующую команду для модификации файла конфигурации:

vi /etc/default/iscsitarget (Установите значение true для параметра enable)

Добавьте информацию о ваших устройствах в файл конфигурации /etc/iet/ietf.conf:

root@debby6:/etc/iet# cat ietd.conf
Target iqn.2010-02.be.linux-training:storage.lun1
 IncomingUser isuser hunter2
 OutgoingUser
 Lun 0 Path=/dev/vg/lvol0,Type=fileio
 Alias LUN1
Target iqn.2010-02.be.linux-training:storage.lun2
 IncomingUser isuser hunter2
 OutgoingUser
 Lun 0 Path=/dev/md0,Type=fileio
 Alias LUN2

Добавьте идентификаторы обоих устройств в файл конфигурации /etc/iet/initiators.allow:

root@debby6:/etc/iet# cat initiators.allow
iqn.2010-02.be.linux-training:storage.lun1
iqn.2010-02.be.linux-training:storage.lun2

Действия, которые должны быть выполнены на компьютере, выполняющим роль инициатора:

Установите пакет программного обеспечения open-iscsi и запустите соответствующий демон.

После этого используйте команду iscsiadm -m discovery -t st 'целевой-ip' для получения информации об устройствах iSCSI на целевом сервере.

Отредактируйте файлы из директории /etc/iscsi/nodes/ таким образом, как было описано в разделах теоретической части главы. После этого перезапустите демон iSCSI и выполните команду fdisk -i для получения информации об используемых устройствах iSCSI.


Предыдущий раздел: Оглавление Следующий раздел:
Глава 11. Управление логическими томами   Глава 13. Знакомство с технологией резервирования каналов передачи данных