В прошлом я устанавливал iSCSI Target на LIO (http://yvision.kz/post/426184). Он ставился легко и просто, из за его наличия в ядре Linux начиная с CentOS 6.2. Без сложных телодвижений таргет был установлен.
Эта записка содержит базовую установку уже другого таргета по имени SCST. Для его установки, потребуется патчить ядро Linux (CentOS 7), что конечно не айс.
iSCSI таргет - это программа или аппаратный контроллер, которые осуществляют эмуляцию диска и выполняют iSCSI запросы.
iSCSI таргеты бывают двух видов:
1. Программный
2. Аппаратный
Программные - это например настроенный таргет LIO без аппаратной платы HBA, мы через него и обычную сетевую карту даем блочное устройство удаленным компьютерам. Под блочным устройством подразумевается - отдельный жесткий диск, раздел или рейд массив из ряда дисков.
Аппаратные - это такие специальные адаптеры (Host Bus Adapter - HBA) которые обычно подключаются в слот PCI-Express интерфейса материнской платы. Такие адаптеры имеют один или два порта Ethernet. Производством аппаратных сетевых устройств занимаются следующие компании: QLogic, Emulex, LSI Corporation, Agilent, ATTO и Brocade. На постсоветском пространстве из этого списка знакомы американские бренды QLogic и LSI. Вот так выглядит iSCSI HBA адаптер модели QLogic QLE4062C:
И сама схема подключения:
TOE — это такая технология, которая позволяет разгрузить центральный процессор благодаря переносу функций по обработке сетевых пакетов стека протоколов TCP/IP на контроллер сетевого адаптера.
Тестовая конфигурация дисковой подсистемы для установки SCST:
- Disk1 - 10Gb
- Disk2 - 80Gb.
На первом диске Disk1 будет ОС, второй диск Disk2 будет отдан под iSCSI таргет.
У кого есть FC (Fibber Channel) адаптеры, ядро следует патчить с указанием нового драйвера. В моем случае таких адаптеров нет, и к сожалению, я ни разу не видел этих адаптеров в живую [грусть, печаль, обида].
И так поехали ставить SCST.
Устанавливаем зависимости:
# yum install gcc ncurses-devel kernel-devel lsscsi patch subversion bc bison net-tools deltarpm -y
Закачиваем SCST исходники:
# cd /
# svn co https://svn.code.sf.net/p/scst/svn/trunk scst
или
# svn checkout svn://svn.code.sf.net/p/scst/svn/trunk scst-trunk
Создаем пользователя для сборки SCST:
# useradd builder
Даем права на использование yum без пароля:
# echo 'builder ALL=(ALL) NOPASSWD: /usr/bin/yum, /usr/bin/yum-builddep' >>/etc/sudoers
# visudo -sc
Переходим в окружение пользователя builder:
# su builder
Процесс обновления ядра автоматизирован разработчиками SCST, они создали скрипт который патчит ядро ОС Linux, запускаем скрипт сборки от разработчиков:
# /scst/scripts/rebuild-rhel-kernel-rpm
Примечание: Важно, обновлять CentOS 7 до 7.2 - НЕЛЬЗЯ! Это связанно с тем, что скрипт обновления ядра перестает правильно скачивать src.rpm пакеты ядра. Скрипт нормально работает с ядром версии kernel-3.10.0-229. Если обновите CentOS, версия ядра станет 3.10.0-3**. И скрипт соответственно перестанет патчит ядро. До запуска скрипта, на вашем жестком диске должно быть 8,1Гб свободного места.
Устанавливаем ядро:
# su -c 'rpm -ivh --force /home/builder/rpmbuild/RPMS/x86_64/kernel-*.rpm'
Перезагружаем ПК:
# su -c reboot
# cd /scst
# make 2release
# cd scst
# make -C scstadmin -s install
Проверяем:
# uname -r
3.10.0-229.el7.centos.scst.x86_64
Установим scst:
# make scst scst_install iscsi iscsi_install scstadm scstadm_install
Загружаем модули:
# modprobe scst
# modprobe scst_vdisk
# modprobe iscsi-scst
Сделаем LVM разделы на диске sdb, чтобы потом их отдавать по iscsi:
# pvcreate /dev/sdb
# vgcreate lvgroup1 /dev/sdb
# lvcreate -n mail -L10G lvgroup1
# lvcreate -n cloud -L10G lvgroup1
# lvcreate -n vmstore -L10G lvgroup1
Далее уже идет настройка самого SCST таргета, а именно его файла настроек /etc/scst.conf, его надо создать:
HANDLER vdisk_fileio {DEVICE mail {filename /dev/mapper/lvgroup1-mailnv_cache 1}DEVICE cloud {filename /dev/mapper/lvgroup1-cloudnv_cache 1}DEVICE vmstore {filename /dev/mapper/lvgroup1-vmstorenv_cache 1}}TARGET_DRIVER iscsi {enabled 1TARGET iqn.2013-09.local.nas:disk-sdb {LUN 0 mailLUN 1 cloudLUN 2 vmstoreenabled 1}}
Можно отдавать разделы, целый диск целиком и т.д.
Перечитаем конфиг, чтобы он заработал:
# scstadmin -config /etc/scst.conf
Collecting current configuration: done.-> Checking configuration file '/etc/scst.conf' for errors.-> Done, 0 warnings found.-> Applying configuration.-> Virtual target 'copy_manager_tgt' for driver 'copy_manager' is not in configuration. Use -force to remove it.-> Done, 0 change(s) made.All done.
Включаем автозагрузку демона SCST:
# chkconfig scst on && service scst restart
или
# systemctl enable scst.service && systemctl restart scst.service
Можно создать файл и прописать в нем кому разрешено работать с таргетом:
# vi /etc/initiators.allow
ALL 192.168.1.0/24
И файл, кому нельзя работать с таргетом:
# vi /etc/initiators.deny
ALL ALL
Добавляем перечитывание конфига во время загрузки:
# vi /etc/rc.d/rc.local
scstadmin -config /etc/scst.conf
Тестовое подключение из под Windows 7
Указываем строку подключения во вкладке Configuration
Запускаем diskmgt.msc:
Аналогичным образом iSCSI таргет добавляется на инициаторах VMware ESXi, MS Hyper-V и т.д.
ИСТОЧНИКИ
http://habrahabr.ru/post/200466/ - iSCSI хранилище для небогатых
http://habrahabr.ru/post/267157/ - Настройка SCST Target на CentOS 7 с использованием FC QLogic адаптера
http://habrahabr.ru/post/209460/ - Создание надёжного iSCSI-хранилища на Linux, часть 1
http://habrahabr.ru/post/209666/ - Создание надёжного iSCSI-хранилища на Linux, часть 2
http://m.habrahabr.ru/company/croc/blog/143877/ - отказоустойчивый сервис