Pull to refresh

iSCSI Target Box

Reading time 3 min
Views 21K
Хочу представить вашему вниманию интересный проект iSCSI Target Box — мини-дистрибутив Linux позволяющий быстро развернуть сервер iSCSI (т.н. Target) на любом поддерживаемом оборудовании.
Он сделан на основе Arch Linux и его скрипта генерации initrd-образов Mkinitcpio что позволяет быстро и легко его пересобрать при обновлении ядра или других его компонентов. По сути это ядро Linux + BusyBox + iSCSI Enterprise Target запакованные в Initrd-образ и вынесенные наружу необходимые файлы настроек.

Установка


Скачиваем с сайта бинарный образ системы, распаковываем его в корень загрузочного диска (HDD, USB Flash, Memory Card и т.п.), устанавливаем туда grub (или любой другой любимый boot-менеджер) и прописываем в его конфиге загрузку Linux ядра:
 title  Linux iSCSI Target Box
 root   (hd0,0)
 kernel /vmlinuz26 root=/dev/sdb1 ro ip=<this-box-ip>::<gw-ip>:<netmask>::eth0:none
 initrd /initrd-iscsi.img

Где /dev/sdb1 — имя раздела в корне которого находится каталог iscsi-target-etc с файлами настроек. А ip=::: — настройки сети.
Подробнее о параметрах ядра можно почитать в документации к Mkinitcpio

Настройка


Вся изменяемая настройка находится в каталоге iscsi-target-etc который должен размещаться в корне указываемого при загрузке ядра раздела. Содержимое этого каталога при загрузки системы просто копируется в /etc и может содержать любые файлы настроек среды Linux. Если в копируемых файлах присутствует файл rc.local то он после копирования запускается, позволяя таким образом дополнительно настроить под себя среду не пересобирая образ системы.
Настройка демона iSCSI Enterprise Target находится в каталоге /iscsi-target-etc/iet/ копируемого при загрузке в /etc/iet/ и требует предварительно конфигурирования. Для примера можем прописать такие строчки в файл ietd.conf:
Target iqn.2001-04.com.example:storage.disk1.sys1.xyz
Lun 0 Path=/dev/sda,Type=blockio,ScsiId=xyz,ScsiSN=xyz

Что позволяет расшарить диск /dev/sda как блочное устройство.

Также можно управлять демоном динамически используя утилиту администрирования ietadm. Например создать Target командой:
ietadm --op new --tid=1 --params Name=iqn.2001-04.com.example:storage.disk1.sys1.xyz
и добавить к нему LUN:
ietadm --op new --tid=1 --lun=0 --params Path=/dev/sda,Type=blockio
Подробнее о настройке iSCSI Enterprise Target читайте в его документации.

Доступ к консоли возможен или напрямую или через telnet. Пароль по умолчанию на root: 666666
Чтобы поменять пароль просто размещаем в каталоге iscsi-target-etc файл shadow с новым сгенерированным паролем для root'а и при загрузке системы он перезапишет тот что зашит в образ.

Так что, как видите, развернуть сервер iSCSI для систем резервирования данных или виртуализации несложно и занимает несколько минут. Правда проект только начал развиваться и потому в продакшене его использование пока не рекомендуется.

Сборка


Все скрипты используемые для сборки доступны в исходных кодах под лицензией GPLv2. Для сборки образа необходим Arch Linux с установленными пакетами mkinitcpio и mkinitcpio-nfs-utils. Также необходимо установить iSCSI Enterprise Target, который можно взять из AUR — iscsitarget-kernel и iscsitarget-usr или скачать исходники последней версии с официального сайта и откомпилировать вручную:
tar xf iscsitarget-1.4.20.1.tar.gz
cd iscsitarget-1.4.20.1
make
make install

Затем скачиваем с сайта проекта iSCSI Target Box архив с исходными кодами, распаковываем его в каталог /lib/initcpio/ и создаем hardlink на скрипт установки базовой системы:
ln base-iscsi ../install/base-iscsi

Генерируем образ:
mkinitcpio -c /lib/initcpio/iscsi-target-box/mkinitcpio.conf -g /boot/initrd-iscsi.img

Быстро проверить работоспособность сборки можно при помощи QEMU:
qemu -snapshot -kernel /boot/vmlinuz26 -initrd /boot/initrd-iscsi.img
Tags:
Hubs:
+11
Comments 30
Comments Comments 30

Articles