Более приятно конечно иметь полнофункциональное устройство вроде Dell/EMC, но увы не всегда мы можем позволить себе подобное оборудование. Поэтому в очередной раз в ход пускается бюджетное решение iSCSI-taget на Linux-сервере.

1. Сборка iSCSI-target

Обязательно обновляем установленные пакеты и перезапускам систему. В данному случае важно соответствие версий установленного ядра и его исходников.

[root@localhost ~]# yum update
[root@localhost ~]# reboot

Устанавливаем необходимые для сборки пакеты

yum install make gcc kernel-devel patch

Скачиваем последнюю версию исходников с http://sourceforge.net/projects/iscsitarget/files/

На момент написание статьи актуальная версия 1.4.20.2

[root@localhost ~]# wget http://downloads.sourceforge.net/project/iscsitarget/
iscsitarget/1.4.20.2/iscsitarget-1.4.20.2.tar.gz

Распаковываем и переходим в каталог с исходниками.

[root@localhost ~]# tar vxf iscsitarget-1.4.20.2.tar.gz
[root@localhost ~]# cd iscsitarget-1.4.20.2

Собираем и устанавливаем

[root@localhost iscsitarget-1.4.20.2]# make
[root@localhost iscsitarget-1.4.20.2]# make install

2. Настройка iSCSI-target

Здесь можно рассмотреть два варианта настройки: данные находятся в некотором файле и данные находятся на отдельном диске или разделе.

Создаем пустой файл для размещения раздела iSCSI

[root@localhost data]# dd if=/dev/zero of=/data/Lun0.img bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.04374 seconds, 266 MB/s

Открываем для редактирования /etc/iet/ietd.conf и добавляем туда следующие строчки:

# Согласно стандартам iSCSI тагет должен иметь уникальное квалифицированное
# iSCSI-имя ("iSCSI Qualified Name") следующего формата:
# iqn.yyyy-mm.<имя домена в обратном порядке>:<идентификатор раздела>
 
# Если данные находятся в файле
Target iqn.2010-09.com.domain:storage.disk1
    Lun 0 Path=/data/Lun0.img,Type=fileio
 
# Если данные расположены на диске, LVM или RAID
Target iqn.2010-09.com.domain:storage.disk2
    Lun 0 Path=/dev/sdb,Type=blockio

Если необходимо использовать CHAP аутентификацию добавляем после каждого тагета следующие строки

# Согласно стандартам пароль должен быть не менее 12 символов.
IncomingUser user 123456123456
OutgoingUser user 123456123456

Остальные параметры не плохо работают оставленные по-умолчанию, однако их можно подредактировать для совместимости с некоторыми типами инициаторов и увеличения производительности.

Открываем для редактирования файл /etc/iet/initiators.allow и задаем список доступа к тагетам.

# Формат записи <IQN тагета> <Список IP адресов или имен инициаторов через запятую>
# На время отладки оставляем
ALL ALL     # Доступ ко всем тагетам со всех инициаторов

Добавляем сервис iscsi-target в автозагругзку и запускаем

[root@localhost iet]# chkconfig --add iscsi-target
[root@localhost iet]# chkconfig iscsi-target on
[root@localhost iet]# service iscsi-target start

Проверяем доступные разделы:

[root@localhost iet]# cat /proc/net/iet/volume
tid:2 name:iqn.2010-09.com.domain:storage.disk2
        lun:0 state:0 iotype:fileio iomode:wt blocks:159383552 blocksize:512
        path:/dev/sdb
tid:1 name:iqn.2010-09.com.domain:storage.disk1
        lun:0 state:0 iotype:fileio iomode:wt blocks:2097152 blocksize:512
        path:/data/Lun0.img

Таким же образом можно проверить и активные подключения:

[root@localhost iet]# cat /proc/net/iet/session
tid:2 name:iqn.2010-09.com.domain:storage.disk2
        sid:2533274811171328 initiator:iqn.2010-09.com.domain:9ea395cf
                cid:0 ip:192.168.1.55 state:active hd:none dd:none
        sid:2251799834460672 initiator:iqn.2010-09.com.domain:64d5e5ed
                cid:0 ip:192.168.1.50 state:active hd:none dd:none

9 Коммент. : “Установка iSCSI-target на CentOS”

  1. Артур пишет:

    Спасибо!

  2. nr пишет:

    а чем это лучше стандартного open-iscsi?
    и тем-более, чем это лучше пересобранного OFED’ом open-iscsi с поддержкой протокола iSER?

  3. Alsigned пишет:

    Ни чем не лучше. На мой взгляд – это один из вариантов реализации iscsi-target на CentOS.

    Пришел я к нему крайне случайно – вышла из строя дисковая полка EMC CLARiiON AX 150i ее нужно было на время чем-то заменить. Точно помню в FreeBsd был такой порт iscsi-target, значит и в CentOS должно быть что-то похожее. yum list | grep iscsi – пусто. Значит нужно собирать )

    После этого месяца через 3 наткнулся на пакет scsi-target-utils… Но как говориться было уже поздно.

  4. PK пишет:

    @nr
    Поумничать решил, речь не шла о том, что лучше, а что хуже. Ну напиши статью как пересобрать «OFED’ом open-iscsi с поддержкой протокола iSER?» Я думаю, что у тех, кто так понтуется не в тему, кишка тонка изложить хотя бы что-то реально полезное. Ещё скажи, что ты не будешь ничего разжёвывать, потому, что ты такой умный.

  5. PK пишет:

    Спасибо за статью.

  6. Алексей пишет:

    Добрый день.
    Спасибо за статью, но есть один вопрос:
    предположим у нас уже запущен iscsi-target с несколькими лунами, но мы добавляем еще один. для применения настроек необходимо перезапустить iscsi-target, но при перезапуске оборвется соединение с уже подключенными iscsi-клиентами. Как перезапустить iscsi-target, чтобы не обрывать уже существующие подключения?
    Заранее спасибо за ответ.

  7. Олег пишет:

    А для этого есть ietadm. Например, у нас есть уже четыре таргета, запускаем пятый:

    adm@server~$ ietadm –op new –tid=5 –params Name=iqn.
    adm@server~$ ietadm –op new –tid=5 –lun=0 –params Path=

  8. Олег пишет:

    Ой. Сурово тут с командной строкой движок обходится. Следует читать: (перед op, tid, params, lun – двойные дефисы)

    adm@server~$ ietadm –op new –tid=5 –params Name=имя-таргета
    adm@server~$ ietadm –op new –tid=5 –lun=0 –params Path=путь-к-файлу

  9. Alsigned пишет:

    Олег, привет.

    Для каких целей у тебя используется iSCSI-target на CentOS? Что ты на нем хранишь? В чем удобство использования именно iSCSI?

    Заранее спасибо за ответ.

Оставить комментарий