Linux подключить диск iscsi

Подключение iSCSI-диска (ОС Linux)

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

Далее для подключения диска вам необходимо выполнить следующие действия.

1. Установить на сервер необходимые пакеты:

2. Добавить IP-адрес диска (не стораджа), выданный для вашего сервера, на сетевой интерфейс:

где 172.18.%.% – выданный IP-адрес диска, а eth1 – сетевой интерфейс:

  • в случае выделенного сервера – отдельный сетевой интерфейс, отличный от того, на котором работает основной IP сервера;
  • в случае VDS – основной интерфейс.

3. Перезапустить iSCSI:

4. Подключиться по предоставленному IP-адресу стораджа:

где IP_адрес — выданный вам IP-адрес стораджа.

Пример успешного подключения к стораджу с IP-адресом 172.18.0.3:

5. Включить автологин в /etc/iscsi/iscsid.conf, заменив значение параметра node.startup на:

Это можно сделать командой:

6. Проверить что в файлах в /etc/iscsi/nodes также указано значение «automatic», например:

Если директория /etc/iscsi/nodes/ отсутствует, просто пропустите этот шаг.

7. Проверить наличие диска:

В выводе должен быть отображен новый диск с новой меткой.

В нашем примере появился новый диск /dev/sdd:

8. Убедившись в наличии диска, создать таблицу разделов:

где DISK — метка нового бэкапного диска.

Пример разметки с меткой диска sdd:

9. Форматировать созданный раздел:

где DISK_N — созданный раздел бэкапного диска.

10. Создать директорию, куда будет смонтирован диск (например, /mnt/backup), и смонтировать раздел:

Источник

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

  • Главная
  • Настройка iSCSI-инициатора в Debian или Ubuntu

Настройка iSCSI-инициатора в Debian или Ubuntu

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

Еще раз коротко напомним, сервер iSCSI называется портал, он содержит цели (таргет, Target), каждая цель предоставляет доступ к одному или нескольким блочным устройствам. Клиент iSCSI называется инициатор (Initiator), одна цель может быть подключена только к одному инициатору, исключения — кластерные системы.

В качестве инициатора в Linux системах используется Open-iSCSI, установим его, перед установкой не забудем обновить список пакетов. Здесь и далее все команды выполняются от имени суперпользователя или через sudo.

Затем перейдем в /etc/iscsi и откроем файл iscsid.conf. Найдем и раскомментируем опцию:

Ниже обязательно закомментируем:

Затем зададим параметры аутентификации инициатора, раскомментировав опции:

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

Сохраним файл и перезапустим службу:

Теперь попробуем подключиться к порталу и получить список доступных целей:

Это короткая запись команды, полная будет выглядеть так:

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

После успешного выполнения данной команды в /etc/iscsi появятся две директории nodes — которая содержит вложенные каталоги для каждого IQN — и send_targets — с вложенными каталогами для каждой цели. Перейдем в nodes и провалимся в каталог с IQN нашей цели, в нем откроем еще один каталог с адресом и портом, в котором обнаружим файл default. Откроем его на редактирование.

Прежде всего убедимся, что

Если же вам нужно, чтобы указанная цель не подключалась автоматически при загрузке, то измените automatic на manual.

И укажите там логин и пароль для подключения к вашей цели.

Теперь можно подключить цель, для этого можно использовать команду:

Которая подключит все цели, конфигурационные файлы которых находятся в каталоге nodes, если требуется подключить только отдельную цель, то укажите ее явно:

Читайте также:  Windows для asus f401a

Для отключения выполните:

Данная команда отключит все цели, либо:

Для отключения только определенной.

Для проверки можем выполнить:

Которая покажет все подключенные блочные устройства, среди которых должен оказаться и предоставляемый целью диск, в нашем случае на скриншоте ниже виден 2 ГБ диск sdb. Также можно посмотреть все текущие подключения iSCSI:

Для удаления ненужных целей воспользуйтесь командой:

Которая удалит все связанные с указанным порталом (опция -p) цели.

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

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

Источник

Настройка iSCSI в Linux

Решил для себя поэкспериментировать с iSCSI . Не то, чтобы я являюсь большим фанатом подобных эрзац-решений (из SAN мне приходилось иметь дело только с Fibre Channel), но в свете недавних событий весьма вероятно, что многие покупатели оборудования Enterprise-уровня решат сэкономить, поэтому уметь пользоваться этой технологией весьма полезно.

iSCSI — это протокол, предназначенный для отдачи от сервера к клиенту блочных устройств по протоколу TCP/IP, в отличие от NFS и CIFS, отдающих готовую файловую систему. В iSCSI используется своя терминология, например, сервер называется target , а клиент — initiator . Я буду придерживаться этих терминов в статье. Для экономии ресурсов тестовый стенд сделал на двух виртуальных машинах под управлением VirtualBox 5.0 .

Небольшое отступление: статья не претендует на всеобъемлющую инструкцию по администрированию SAN на iSCSI, это просто заметки для начинающих.

Создадим две виртуальные машины и поставим туда Oracle Enterprise Linux 6.7 . Для той, которая будет target’ом, хватит 1Гб ОЗУ, для второй (initiator) сделаем 2 Гб, т.к. на ней будет работать небольшая БД Oracle с ASM. Кроме того, для обеих машин нужно создать по 2 сетевых адаптера. Первый сделаем в режиме «сетевой мост», он понадобится для того, чтобы наши виртуалки были доступны извне, чтобы на них можно было ходить по ssh, использовать внешние репозитории yum и т.д. Второй же будет работать в режиме «внутренняя сеть». Он нам понадобится для интерконнекта, по ней будет ходить трафик iSCSI.

Кроме того, к target-виртуалке приделаем 4 тома по 1 Гб — их мы и будем отдавать потом по сети.

Осталось создать пользователей, настроить ssh и сделать остальные тривиальные вещи на новых системах.

Настройка Interconnect.

Дадим нашим виртуалкам следующие IP-адреса на внутренних сетевых адаптерах (внешние получают сетевой адрес по DHCP): 192.168.0.1 для target и 192.168.0.2 для initiator. Создаём файлик /etc/sysconfig/network-scripts/ifcfg-eth1 и пишем туда настройки сети:

Источник

Создание надёжного iSCSI-хранилища на Linux, часть 1

Прелюдия

Сегодня я расскажу вам как я создавал бюджетное отказоустойчивое iSCSI хранилище из двух серверов на базе Linux для обслуживания нужд кластера VMWare vSphere. Были похожие статьи (например), но мой подход несколько отличается, да и решения (тот же heartbeat и iscsitarget), используемые там, уже устарели.

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

Вводные

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

В качестве гипервизора был выбран vSphere, как наиболее устоявшийся и законченый продукт, а в качестве протокола — iSCSI, как не требующий дополнительных финансовых вливаний в виде коммутаторов FC или FCoE. С опенсурсными SAS таргетами довольно туго, если не сказать хуже, так что этот вариант тоже был отвергнут.

Осталось хранилище. Разные брендовые решения от ведущих вендоров были отброшены по причине большой стоимости как их самих по себе, так и лицензий на синхронную репликацию. Значит будем делать сами, заодно и поучимся.

В качестве софта было выбрано:

  • Debian Wheezy + LTS ядро 3.10
  • iSCSI-таргет SCST
  • DRBD для репликации
  • Pacemaker для управления ресурсами кластера и мониторинга
  • Подсистема ядра DM-Crypt для шифрования (инструкции AES-NI в процессоре нам очень помогут)
Читайте также:  Как увеличить размер корзины windows 10

В итоге, в недолгих муках была рождена такая несложная схема:

На ней видно, что каждый из серверов имеет по 10 гигабитных интерфейсов (2 встроенных и по 4 на дополнительных сетевых картах). 6 из них подключены к стеку коммутаторов (по 3 к каждому), а остальные 4 — к серверу-соседу.
По ним то и пойдёт репликация через DRBD. Карты репликации при желании можно заменить на 10-Гбит, но у меня были под рукой эти, так что «я его слепила из того, что было».

Таким образом, скоропостижная гибель любой из карт не приведёт к полной неработоспособности какой-либо из подсистем.

Так как основная задача этих хранилищ — надежное хранение больших данных (файл-сервера, архивы почты и т.п.), то были выбраны сервера с 3.5″ дисками:

  • Корпус Supermicro SC836E26-R1200 на 16 3.5″ дисков
  • Материнская плата Supermicro X9SRi-F
  • Процессор Intel E5-2620
  • 4 х 8Гб памяти DDR3 ECC
  • RAID-контроллер LSI 9271-8i с суперконденсатором для аварийного сброса кэша на флэш-модуль
  • 16 дисков Seagate Constellation ES.3 3Tb SAS
  • 2 х 4-х портовые сетевые карты Intel Ethernet I350-T4

За дело

Диски

Я создал на каждом из серверов по два RAID10 массива из 8 дисков.
От RAID6 решил отказаться т.к. места хватало и так, а производительность у RAID10 на задачах случайного доступа выше. Плюс, ниже время ребилда и нагрузка при этом идёт только на один диск, а не на весь массив сразу.

В общем, тут каждый решает для себя.

Сетевая часть

С протоколом iSCSI бессмысленно использовать Bonding/Etherchannel для ускорения его работы.
Причина проста — при этом используются хэш-функции для распределения пакетов по каналам, поэтому очень сложно подобрать такие IP/MAC адреса, чтобы пакет от адреса IP1 до IP2 шел по однму каналу, а от IP1 до IP3 — по другому.
На cisco даже есть команда, которая позволяет посмотреть в какой из интерфейсов Etherchannel-а улетит пакет:

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

На коммутаторе я создал 6 VLAN-ов (по одному на каждый внешний интерфейс сервера):

Интерфейсы были сделаны транковыми для универсальности и еще кое-чего, будет видно дальше:

MTU на коммутаторе следует выставить в максимум, чтобы снизить нагрузку на сервера (больше пакет -> меньше количество пакетов в секунду -> меньше генерируется прерываний). В моем случае это 9198:

ESXi не поддерживает MTU больше 9000, так что тут есть еще некоторый запас.

Каждому VLAN-у было выбрано адресное пространство, для простоты имеющее такой вид: 10.1.VLAN_ID.0/24 (например — 10.1.24.0/24). При нехватке адресов можно уложиться и в меньших подсетях, но так удобнее.

Каждый LUN будет представлен отдельным iSCSI-таргетом, поэтому каждому таргету были выбраны «общие» кластерные адреса, которые будут подниматься на ноде, обслуживающей этот таргет в данный момент: 10.1.VLAN_ID.10 и 10.1.VLAN_ID.20

Также у серверов будут постоянные адреса для управления, в моем случае это 10.1.0.100/24 и .200 (в отдельном VLAN-е)

Итак, тут мы устанавливаем на оба сервера Debian в минимальном виде, на этом останавливаться подробно не буду.

Сборка пакетов

Сборку я проводил на отдельной виртуалке, чтобы не захламлять сервера компиляторами и исходниками.
Для сборки ядра под Debian достаточно поставить мета-пакет build-essential и, возможно, еще что-то по мелочи, точно уже не помню.

Качаем последнее ядро 3.10 с kernel.org: и распаковываем:

Далее скачиваем через SVN последнюю ревизию стабильной ветки SCST, генерируем патч для нашей версии ядра и применяем его:

Теперь соберем демон iscsi-scstd:

Получившийся iscsi-scstd нужно будет положить на сервера, к примеру в /opt/scst

Далее конфигурируем ядро под свой сервер.
Включаем шифрование (если нужно).

Не забываем включить вот эти опции для SCST и DRBD:

Собираем его в виде .deb пакета (для этого нужно установить пакеты fakeroot, kernel-package и заодно debhelper):

На выходе получаем пакет kernel-scst-image-3.10.27_1_amd64.deb

Далее собираем пакет для DRBD:

Изменяем файл debian/rules до следующего состояния (там есть стандартный файл, но он не собирает модули ядра):

Читайте также:  Tipard windows password reset ultimate регистрационный код

В файле Makefile.in подправим переменную SUBDIRS, уберем из нее documentation, иначе пакет не соберётся с руганью на документацию.

Получаем пакет drbd_8.4.4_amd64.deb

Всё, собирать больше вроде ничего не надо, копируем оба пакета на сервера и устанавливаем:

Настройка серверов

Интерфейсы у меня были переименованы в /etc/udev/rules.d/70-persistent-net.rules следующим образом:
int1-6 идут к свичу, а drbd1-4 — к соседнему серверу.

/etc/network/interfaces имеет крайне устрашающий вид, который и в кошмарном сне не приснится:

Так как мы хотим иметь отказоустойчивость и по управлению сервером, то применяем военную хитрость: в bonding в режиме active-backup собираем не сами интерфейсы, а VLAN-субинтерфейсы. Тем самым сервер будет доступен до тех пор, пока работает хотя бы один интерфейс. Это избыточно, но пуркуа бы не па. И при этом те же интерфейсы могут свободно использоваться для iSCSI траффика.

Для репликации создан интерфейс bond_drbd в режиме balance-rr, в котором пакеты отправляются тупо последовательно по всем интерфейсам. Ему назначен адрес из серой сети /24, но можно было бы обойтись и /30 или /31 т.к. хоста-то будет всего два.

Так как это иногда приводит к приходу пакетов вне очереди, увеличиваем буффер внеочередных пакетов в /etc/sysctl.conf. Ниже приведу весь файл, что какие опции делают пояснять не буду, очень долго. Можно самостоятельно почитать при желании.

По результатам тестов интерфейс репликации выдает где-то 3.7 Гбит/сек, что вполне приемлимо.

Так как сервер у нас многоядерный, а сетевые карты и RAID-контроллер умеют разделять обработку прерываний по нескольким очередям, то был написан скрипт, который привязывает прерывания к ядрам:

Диски

Перед экспортом дисков мы их зашифруем и забекапим мастер-ключи на всякий пожарный:

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

Далее был написан скрипт для упрощения дешифровки:

Скрипт работает с UUID-ами дисков, чтобы всегда однозначно идентифицировать диск в системе без привязки к /dev/sd*.

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

Как видно, скорости не ахти какие, но и они редко будут достигаться на практике т.к. обычно преобладает случайный характер доступа.

Для сравнения, результаты этого же теста на новеньком Xeon E3-1270 v3 на ядре Haswell:

Вот, тут гораздо веселее дело идёт. Частота — решающий фактор, судя по всему.
А если деактивировать AES-NI, то будет в несколько раз медленнее.

Настраиваем репликацию, конфиги с обоих концов должны быть на 100% идентичные.

Тут наиболее интересным параметром является протокол, сравним их.

Запись считается удачной, если блок был записан…

  • A — на локальный диск и попал в локальный буфер отправки
  • B — на локальный диск и попал в удаленный буфер приема
  • С — на локальный и на удаленный диск

Самым медленным (читай — высоколатентным) и, одновременно, надёжным является C, а я выбрал золотую середину.

Далее идёт определение ресурсов, которыми оперирует DRBD и нод, участвующих в их репликации.

У каждого ресурса — свой порт.

Теперь инициализируем метаданные ресурсов DRBD и активируем их, это нужно сделать на каждом сервере:

Далее нужно выбрать какой-то один сервер (можно для каждого ресурса свой) и определяем, что он — главный и с него пойдёт первичная синхронизация на другой:

Всё, пошло-поехало, началась синхронизация.
В зависимости от размеров массивов и скорости сети она будет идти долго или очень долго.

За ее прогрессом можно понаблюдать командой watch -n0.1 cat /proc/drbd, очень умиротворяет и настраивает на философский лад.
В принципе, устройствами уже можно пользоваться в процессе синхронизации, но я советую отдохнуть 🙂

Конец первой части

Для одной части, я думаю, хватит. И так уже много информации для впитывания.

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

Источник

Оцените статью