Настройка iSCSI-хранилища в Ubuntu Server/Debian

  • Автор:

iscsi-targer-ubuntu-debian-000.pngПротокол iSCSI получил широкое распространение как простой и недорогой способ организации сетей хранения данных (SAN). Ранее мы рассказывали, как организовать iSCSI-хранилище на базе серверных операционных систем Windows, незаслуженно обделив вниманием свободные ОС. Поэтому сегодня мы решили устранить этот пробел и рассмотреть настройку iSCSI-хранилища на базе Ubuntu Server или Debian.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Внимание! Начиная с Debian 9 Stretch и Ubuntu 18.04 LTS пакет iSCSI Enterprise Target (iscsitarget) был удален и ему на смену пришел Linux SCSI target (tgt), для настройки которого воспользуйтесь следующей статьей.

В качестве серверной ОС в данном случае мы выбрали Ubuntu Server 16.04 LTS, однако процесс настройки в ее среде ничем не отличается от Debian или любого иного дистрибутива, основанного на любой из этих двух систем.

В Linux-системах в качестве программной цели iSCSI используется iSCSI Enterprise Target (IET) - успевшее зарекомендовать себя надежное и проверенное решение. Для работы с ним потребуется установить два пакета:

apt-get install iscsitarget iscsitarget-dkms

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

Установка потянет за собой довольно много зависимостей, это не удивительно, так как будут установлены все необходимые компоненты для сборки модуля.

iscsi-targer-ubuntu-debian-001.png

Сама сборка будет выполнена в процессе установки и может занять некоторое время.

После установки следует включить автоматический запуск службы цели iSCSI, для этого откройте файл /etc/default/iscsitarget и приведите к следующему виду строку:

ISCSITARGET_ENABLE=true

Теперь можно приступить к созданию целей. На текущем этапе развития технологий в качестве LUN наиболее удобно использовать файлы виртуальных дисков, хотя никто не мешает вам выделить в LUN дисковое устройство или LVM-том. Прежде всего создадим папку для хранения виртуальных дисков и разместим в ней тестовый диск объемом в 2 ГБ:

mkdir /storage
dd if=/dev/zero of=/storage/lun0.img bs=1M count=2048

Для создания файла диска мы воспользовались командой dd, опция bs указывает размер блока - 1 МБ, а опция count - количество этих блоков. Имя файла и расширение могут быть произвольными, в нашем случае это lun0.img.

Для создания программной цели (таргета) откроем файл /etc/iet/ietd.conf и добавим в него следующие строки:

Target iqn.2009-02.lab.interface31:ubuntu-1604-test-lun0-target
IncomingUser test Pa$$word1234
OutgoingUser
Lun 0 Path=/storage/lun0.img,Type=fileio

Разберем синтаксис подробнее. Первая строка задает собственно цель, точнее ее IQN, это полностью определенное имя цели, которое записывается в формате:

iqn.<year-mo>.<reversed_domain_name>:<unique_name>

где:

  • year-mo - год и месяц регистрации домена
  • reversed_domain_name - доменное имя, записанное в обратном порядке
  • unique_name - уникальное имя цели

IncomingUser определяет учетные данные (логин и пароль) для подключения к данной цели, если аутентификация не требуется можно оставить пустым. OutgoingUser - учетные данные для аутентификации на инициаторе в случае использования взаимной проверки подлинности, если не используется - также оставляется пустым. Обратите внимание, согласно стандарту, пароль должен содержать ровно 12 символов.

И наконец Lun описывает доступные для данной цели объекты (LUN), которых может быть несколько, нумерация LUN начинается с нуля. Path указывает путь к файлу виртуального диска, а Type указывает тип доступа. После запятой и перед Type пробел отсутствует.

Например, если мы хотим добавить в цель еще один диск, то следует добавить строку:

Lun 1 Path=/storage/lun1.img,Type=fileio

Закончив настройку сохраняем файл конфигурации и запускаем службу. Управлять ею лучше "по-старинке", через /etc/init.d, в этом случае вы получите наиболее информативный вывод и сообщения о возможных ошибках:

/etc/init.d/iscsitarget start

Состояние запущенной службы можно посмотреть командой:

/etc/init.d/iscsitarget status

iscsi-targer-ubuntu-debian-002.pngТеперь можно попробовать подключитья к нашей цели. В качестве инициатора мы использовали Windows Server 2012R2, который без проблем обнаружил таргет и подключил диск после ввода учетных данных.

iscsi-targer-ubuntu-debian-003.png

Для ограничения доступа к целям служит файл настроек /etc/iet/initiators.allow, содержащий записи об инициаторах, IP-адресах или сетях, которым разрешен доступ. Первым указывается таргет, затем через запятую перечисляются объекты, имеющие к нему доступ. По умолчанию доступ разрешен всем к любым целям:

ALL ALL

Как минимум имеет смысл ограничить доступ только сетью хранения данных, например:

ALL 192.168.18.0/24

При необходимости можно явно ограничить доступ к цели для конкретного инициатора и определенной сети:

iqn.2009-02.lab.interface31:ubuntu-1604-test-lun0-target 192.168.18.0/24, iqn\.1991-05\.com\.microsoft:srv12r2-stor

IQN инициатора может быть записан в виде регулярного выражения, поэтому даже если вы не используете данную возможность, то не забывайте использовать regexp-синтаксис, например, экранирование символа точки.

Как видим, настройка iSCSI-хранилища на базе Linux предельно проста и позволяет быстро и с минимальными затратами развернуть необходимую инфраструктуру.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments