Поиск по сайту:

Как настроить сервер iSCSI (цель) и клиент (инициатор) в Debian 9


В мире центров обработки данных минимальным стандартом стали сети хранения данных (SAN) большой емкости. Поскольку поставщики облачных услуг и виртуализация продолжают оказывать огромное влияние на мир технологий, необходимость в еще большем пространстве хранения данных SAN стала очевидной.

Большая часть оборудования SAN состоит из минималистичного контроллера (или набора контроллеров) и большого набора дисков высокой емкости, настроенных для поддержки высокого уровня доступности и целостности данных.

Многие из этих специализированных продуктов производятся такими известными поставщиками, как Netapp, Dell Equalogic, HP Storageworks или EMC, и имеют цену, которую могут себе позволить только крупнейшие предприятия.

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

Дистрибутив Debian GNU/Linux предоставляет пакеты, которые позволяют системе Debian служить устройству хранения данных SAN корпоративного уровня за небольшую часть стоимости! Это позволяет каждому, от обычных домашних пользователей до крупных центров обработки данных, получить преимущества хранения данных SAN без необходимости тратить целое состояние на собственное решение поставщика.

В этой статье будет рассмотрено, как можно настроить систему Debian 9 (Stretch) для предоставления дискового пространства с помощью системы, известной как Internet Small Computer Systems Interface или сокращенно iSCSI. iSCSI — это стандарт на основе Протокола Интернета (IP) для предоставления блочного (жесткого диска) хранилища другим системам. iSCSI работает по модели клиент-сервер, но использует разные имена, чтобы отличить клиента от сервера.

В терминологии iSCSI сервер, который обслуживает «дисковое пространство», называется iSCSI «Цель», а система, запрашивающая /использование дискового пространства называется iSCSI «Инициатор». Другими словами, «Инициатор» запрашивает блочное хранилище у «Цели».

Настройка среды

В этом руководстве описана базовая настройка, включающая простой iSCSI сервер (цель) и клиент (инициатор). работает Debian 9 (Stretch).


Debian iSCSI Target: 192.168.56.101/24
Storage: Contains two extra hard drives to be used as the storage in the iSCSI setup
Debian iSCSI Initiator: 192.168.56.102/24

Сеть можно просмотреть, как показано ниже:

Целевая конфигурация Debian iSCSI

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

В этой статье сервер с IP-адресом 192.168.56.101 используется в качестве цели. Все настройки для этого раздела будут выполнены на этом хосте.

Первым шагом является установка необходимых пакетов, позволяющих системе Debian обслуживать цели iSCSI. Этот пакет программного обеспечения известен как Target Framework (TGT).

Другой элемент, который используется в этом руководстве, — это инструменты Управление логическими томами (LVM) как Логические тома (LV). Strong>) будет использоваться в качестве резервного хранилища для цели iSCSI.

Оба пакета можно установить с помощью следующих команд.


apt-get update
apt-get install tgt lvm2

После установки пакетов LVM будет использоваться для подготовки жестких дисков на целевой к использованию в качестве iSCSI LUN. Первая команда используется для подготовки дисков к включению в настройку LVM. Обязательно измените команду по мере необходимости для разных сценариев!


lsblk (Only used to confirm disks to be used in the LVM setup)
pvcreate /dev/sd{b,c}

После того, как диски были подготовлены с помощью указанной выше команды «pvcreate», пришло время создать группу томов из этих конкретных дисков. группа томов необходима для создания логических томов, которые позже будут выступать в качестве хранилища iSCSI.

Чтобы создать группу томов, необходима команда «vgcreate».


vgcreate tecmint_iscsi /dev/sd{b,c}
vgs  (Only needed to confirm the creation of the volume group)

Обратите внимание, что в приведенном выше выводе система отвечает, что Группа томов создана, но всегда полезно дважды проверить, как показано выше, с помощью команды «vgs». Емкость этой группы томов составляет всего 9,99 ГБ. Хотя это особенно маленькая группа томов, для дисков большей емкости процесс будет таким же!

Следующим шагом является создание логического тома, который будет выступать в качестве диска для клиента iSCSI (инициатор). В этом примере будет использоваться вся группа томов, но это не обязательно.

Логический том будет создан с помощью команды «lvcreate».


lvcreate -l 100%FREE tecmint_lun1 tecmint_iscsi
lvs  (Simply used to confirm the creation of the logical volume)

Приведенная выше команда «lvcreate» на первый взгляд может показаться немного запутанной, но ее суть такова:

  • lvcreate — команда, используемая для создания логического тома.
  • -l 100%FREE — создать логический том, используя все свободное пространство группы томов.
  • -n tecmint_lun1 – имя создаваемого логического тома.
  • tecmint_iscsi – имя группы томов, внутри которой создается логический том.

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

Создать LUN очень просто и требуется всего несколько шагов. Первым шагом будет создание файла конфигурации. Этот файл будет находиться в каталоге «/etc/tgt/conf.d», и в этой статье он будет называться «TecMint_iscsi.conf».

Для создания этого файла используйте текстовый редактор.


nano /etc/tgt/conf.d/TecMint_iscsi.conf

В этом файле будет настроена вся необходимая информация о конфигурации для этого LUN. В этот файл можно поместить множество опций, но на данный момент будет использоваться базовый LUN с взаимным Протоколом аутентификации по вызову (CHAP). быть настроен.

Определение LUN будет существовать между двумя операторами target. Чтобы узнать больше параметров, которые могут быть включены в оператор target, просмотрите страницу руководства для файла «targets.conf», выполнив «man 5 Targets.conf».


<target iqn.2018-02.linux-console.net:lun1>
     # Provided device as an iSCSI target
     backing-store /dev/mapper/tecmint_iscsi-tecmint_lun1
     initiator-address 192.168.56.102
    incominguser tecmint-iscsi-user password
     outgoinguser debian-iscsi-target secretpass
</target>

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

  • Первая строка начинает конкретную конфигурацию iSCSI LUN. В данном случае LUN помечен как «iqn.2018-02.linux-console.net:lun1». Часть «iqn» указывает, что это будет полное имя iSCSI. «2018-02» – это произвольно выбранная комбинация дат. «linux-console.net» — это домен, которому принадлежит этот конкретный LUN. Наконец, «lun1» используется в качестве имени этой конкретной цели.
  • Вторая строка выше иллюстрирует комментарий. Комментарии могут существовать в целевых файлах конфигурации и должны начинаться с символа «#».
  • В третьей строке находится фактическое пространство хранения, которое будет использоваться инициатором. В этом случае резервным хранилищем будет логический том, созданный ранее в руководстве.
  • Четвертая строка — это IP-адрес, который ожидается от инициатора. Хотя это не обязательный элемент конфигурации, он может помочь повысить безопасность.
  • Пятая строка — это входящее имя пользователя и пароль. Как и адрес инициатора, указанный выше, этот параметр также не является обязательным, но может помочь защитить LUN. Поскольку в этом руководстве также рассматривается взаимный CHAP iSCSI, этот параметр является обязательным. В этой строке указаны имя пользователя и пароль, которые цель будет ожидать от инициатора для подключения к этому LUN.
  • Шестая строка — это имя пользователя и пароль, которые цель предоставит инициатору, чтобы обеспечить возможность взаимной аутентификации CHAP. Обычно этот параметр не требуется, но в этой статье рассматривается взаимная аутентификация CHAP, поэтому этот параметр является обязательным.
  • Последняя строка — это заключительный оператор определения цели. Обратите внимание на закрывающую косую черту перед целевым ключевым словом!

После ввода соответствующих конфигураций LUN сохраните изменения и выйдите из текстового редактора. Если вы используете nano, нажмите ctrl+o, чтобы сохранить, а затем нажмите ctrl+x, чтобы выйти из nano.

После создания файла конфигурации службу tgt следует перезапустить, чтобы tgt знал о новых целях и связанной с ними конфигурации.

Это можно сделать с помощью одной из следующих команд и зависит от используемой системы инициализации.


service tgt restart  (For sysv init systems)
systemctl restart tgt  (For systemd init systems)

После перезапуска tgt важно убедиться, что цель iSCSI доступен в соответствии с созданным файлом конфигурации.

Это можно сделать с помощью команды «tgtadm».


tgtadm --mode target --op show   (This will show all targets)

На этом настройка цели завершена. В следующем разделе речь пойдет о настройке инициатора.

Конфигурация инициатора iSCSI Debian

Следующим шагом в использовании ранее настроенного целевого объекта iSCSI является настройка инициатора iSCSI.

В этой статье в качестве инициатора будет использоваться другая система Debian 9, но любая система, которая может использовать протокол iSCSI, может подключиться к ранее настроенной цели; это могут быть гипервизоры, такие как XenServer/ESXi, или другие дистрибутивы, такие как Red Hat, Debian или Ubuntu.

Первым шагом в этом процессе для этого инициатора Debian является установка соответствующих пакетов для iSCSI.


apt-get update
apt-get install open-iscsi

Как только apt завершит настройку пакетов open-iscsi, можно приступить к настройке инициатора iSCSI. Первым шагом будет общение с целевым объектом для получения исходной информации о конфигурации для подготовленного целевого объекта.


iscsiadm -m discovery -t st -p 192.168.56.101

При выполнении этой команды она возвращает имя lun, настроенное ранее для этого конкретного хоста. Приведенная выше команда также сгенерирует два файла для вновь обнаруженной информации LUN.

Теперь в файле, созданном для этого узла, должна быть настроена информация CHAP, чтобы этот целевой объект iSCSI был действительно доступен инициатору.

Технически эта информация может быть настроена для всей системы в целом, но в случае, если хост подключается к разным LUN с разными учетными данными, размещение этих учетных данных в файле конфигурации конкретного узла может устранить любые проблемы.

Файл конфигурации узла будет существовать в каталоге «/etc/iscsi/nodes/», и для каждого LUN будет доступен отдельный каталог. В случае с этой статьей (обратите внимание, что пути изменятся, если имена/IP-адреса будут изменены).


/etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

Для работы с этим файлом можно использовать любой текстовый редактор.


nano /etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

В этом файле будет несколько уже настроенных параметров для соответствующей цели, которые были определены во время выполнения команды «iscsiadm» ранее.

Поскольку эта конкретная установка target/initiator Debian использует взаимный CHAP, необходимо изменить и добавить в этот файл еще несколько параметров, а затем войти в систему iSCSI target. выполнено.

Изменения в этом файле:


node.session.auth.authmethod = CHAP                    #Enable CHAP Authentication
node.session.auth.username = tecmint-iscsi-user        #Target to Initiator authentication
node.session.auth.password = password                  #Target to Initiator authentication
node.session.auth.username_in = debian-iscsi-target    #Initiator to Target authentication
node.session.auth.password_in = secretpass             #Initiator to Target authentication

Вышеуказанные параметры позволят этой цели аутентифицироваться на инициаторе, а также позволят инициатору аутентифицироваться на цели. >.

В этом конкретном файле есть еще один параметр, который, возможно, потребуется изменить в зависимости от предпочтений администратора, и это параметр «node.startup».

Если следовать этому руководству, на этом этапе для параметра «node.startup» будет установлено значение «manual». Это может быть нежелательно. Если администратор желает, чтобы iSCSI target подключался при запуске системы, измените «ручной» на «автоматический» следующим образом:


node.startup = automatic

После внесения вышеуказанных изменений сохраните файл и выйдите. На этом этапе необходимо перезапустить службу инициатора open-iscsi, чтобы прочитать эти новые изменения и подключиться к целевому объекту iSCSI.

Это можно сделать с помощью одной из следующих команд в зависимости от используемой системы инициализации.


service open-iscsi restart   (For sysv init systems)
systemctl restart open-iscsi (For systemd init systems)

Обратите внимание, что в зеленом поле выше инициатор iSCSI смог войти в цель. Чтобы дополнительно подтвердить, что цель iSCSI действительно доступна инициатору, мы можем проверить систему на наличие дополнительных дисков, доступных с помощью 'lsblk. >' и проверяем вывод на наличие дополнительных дисков.


lsblk

Другая команда, которую можно использовать на инициаторе для подтверждения соединения с целью, — это «iscsiadm» как таковая:


iscsiadm -m session

Последним местом подтверждения соединения будет сама цель с помощью команды «tgtadm», чтобы вывести список всех подключений iSCSI.


tgtadm --mode conn --op show --tid 1

С этого момента вновь подключенное устройство iSCSI можно использовать так же, как и любой обычно подключенный диск! Разбиение на разделы, создание файловой системы, монтирование и/или постоянное монтирование могут выполняться обычным образом.

При использовании устройств iSCSI следует учитывать одно большое предостережение: если цель iSCSI содержит важные файловые системы, которые необходимы при загрузке инициатора, убедитесь, что использовать запись «_netdev» в файле «/etc/fstab», чтобы убедиться, что устройство iSCSI подключено, прежде чем система продолжит загрузку!