Библиотека сайта 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. Знакомство с технологией резервирования каналов передачи данных |