- Подключение iSCSI-диска (ОС Linux)
- Настройка ISCSI initiator в linux
- ISCSI
- NAS vs SAN
- scsi over tcp
- Терминология
- target
- Initiator
- Блочное устройство
- Авторизация
- Файл конфигурации
- Краткий справочник
- mulitpath
- Подключение iSCSI Linux (Debian | Ubuntu)
- Записки IT специалиста
- Настройка iSCSI-хранилища в Debian или Ubuntu
Подключение 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), и смонтировать раздел:
Источник
Настройка ISCSI initiator в linux
Abstract: как работает open-iscsi (ISCSI initiator в linux), как его настраивать и чуть-чуть про сам протокол ISCSI.
Лирика: В интернете есть множество статей довольно хорошо объясняющих, как настроить ISCSI target, однако, почему-то, практически нет статей про работу с инициатором. Не смотря на то, что target технически сложнее, административной возни с initiator больше — тут больше запутанных концепций и не очень очевидные принципы работы.
ISCSI
Перед тем, как рассказать про ISCSI — несколько слов о разных типах удалённого доступа к информации в современных сетях.
NAS vs SAN
scsi over tcp
Одним из протоколов доступа к блочным устройствам является iscsi. Буква ‘i’ в названии относится не к продукции эппл, а к Internet Explorer. По своей сути это ‘scsi over tcp’. Сам протокол SCSI (без буквы ‘i’) — это весьма сложная конструкция, поскольку он может работать через разные физические среды (например, UWSCSI — параллельная шина, SAS — последовательная — но протокол у них один и тот же). Этот протокол позволяет делать куда больше, чем просто «подтыкать диски к компьютеру» (как это придумано в SATA), например, он поддерживает имена устройств, наличие нескольких линков между блочным устройством и потребителем, поддержку коммутации (ага, SAS-коммутатор, такие даже есть в природе), подключение нескольких потребителей к одному блочному устройству и т.д. Другими словами, этот протокол просто просился в качестве основы для сетевого блочного устройства.
Терминология
В мире SCSI приняты следующие термины:
target — тот, кто предоставляет блочное устройство. Ближайший аналог из обычного компьютерного мира — сервер.
initiator — клиент, тот, кто пользуется блочным устройством. Аналог клиента.
WWID — уникальный идентификатор устройства, его имя. Аналог DNS-имени.
LUN — номер «кусочка» диска, к которому идёт обращение. Ближайший аналог — раздел на жёстком диске.
ISCSI приносит следующие изменения: WWID исчезает, на его место приходит понятие IQN (iSCSI Qualified Name) — то есть чистой воды имя, сходное до степени смешения с DNS (с небольшими отличиями). Вот пример IQN: iqn.2011-09.test:name.
IETD и open-iscsi (сервер и клиент под линукс) приносят ещё одну очень важную концепцию, о которой чаще всего не пишут в руководствах по iscsi — portal. Portal — это, если грубо говорить, несколько target’ов, которые анонсируются одним сервером. Аналогии с www нет, но если бы веб-сервер можно было попросить перечислить все свои virtualhosts, то это было бы оно. portal указывает список target’ов и доступные IP, по которым можно обращаться (да-да, iscsi поддерживает несколько маршрутов от initiator к target).
target
Статья не про target, так что даю очень краткое описание того, что делает target. Он берёт блочное устройство, пришлёпывает к нему имя и LUN и публикет его у себя на портале, после чего позволяет всем желающим (авторизация по вкусу) обращаться к нему.
Вот пример простенького файла конфигурации, думаю, из него будет понятно что делает target (файл конфигурации на примере IET):
(сложный от простого отличается только опциями экспорта). Таким образом, если у нас есть target, то мы хотим его подключить. И тут начинается сложное, потому что у initiator’а своя логика, он совсем не похож на тривиальное mount для nfs.
Initiator
В качестве инициатора используется open-iscsi. Итак, самое важное — у него есть режимы работы и состояние. Если мы дадим команду не в том режиме или не учтём состояние, результат будет крайне обескураживающий.
Итак, режимы работы:
- Поиск target’ов (discovery)
- Подключение к target’у
- Работа с подключенным target’ом
Из этого списка вполне понятен жизненный цикл — сначала найти, потом подключиться, потом отключиться, потом снова подключиться. Open-iscsi держит сессию открытой, даже если блочное устройство не используется. Более того, он держит сессию открытой (до определённых пределов, конечно), даже если сервер ушёл в перезагрузку. Сессия iscsi — это не то же самое, что открытое TCP-соединение, iscsi может прозрачно переподключаться к target’у. Отключение/подключение — операции, которыми управляют «снаружи» (либо из другого ПО, либо руками).
Немного о состоянии. После discovery open-iscsi запоминает все найденные target’ы (они хранятся в /etc/iscsi/), другими словами, discovery — операция постоянная, совсем НЕ соответствующая, например, dns resolving). Найденные target можно удалить руками (кстати, частая ошибка — когда у open-iscsi, в результате экспериментов и настройки, пачка найденных target’ов, при попытке логина в которые выползает множество ошибок из-за того, что половина target’ов — старые строчки конфига, которые уже давно не существуют на сервере, но помнятся open-iscsi). Более того, open-iscsi позволяет менять настройки запомненного target’а — и эта «память» влияет на дальнейшую работу с target’ами даже после перезагрузки/перезапуска демона.
Блочное устройство
Второй вопрос, который многих мучает по-началу — куда оно попадает после подключения? open-iscsi создаёт хоть и сетевое, но БЛОЧНОЕ устройство класса SCSI (не зря же оно «я сказя»), то есть получает букву в семействе /dev/sd, например, /dev/sdc. Используется первая свободная буква, т.к. для всей остальной системы это блочное устройство — типичный жёсткий диск, ничем не отличающийся от подключенного через usb-sata или просто напрямую к sata.
Это часто вызывает панику «как я могу узнать имя блочного устройства?». Оно выводится в подробном выводе iscsiadm (# iscsiadm -m session -P 3).
Авторизация
В отличие от SAS/UWSCSI, ISCSI доступно для подключения кому попало. Для защиты от таких, есть логин и пароль (chap), и их передача iscsiadm’у — ещё одна головная боль для начинающих пользователей. Она может осуществляться двумя путями — изменением свойств уже найденного ранее target’а и прописываем логина/пароля в файле конфигурации open-iscsi.
Причина подобных сложностей — в том, что пароль и процесс логина — это атрибуты не пользователя, а системы. ISCSI — это дешёвая версия FC-инфраструктуры, и понятие «пользователь» в контексте человека за клавиатурой тут неприменимо. Если у вас sql-база лежит на блочном устройстве iscsi, то разумеется, вам будет хотеться, чтобы sql-сервер запускался сам, а не после минутки персонального внимания оператора.
Файл конфигурации
Это очень важный файл, потому что помимо логина/пароля он описывает ещё поведение open-iscsi при нахождении ошибок. Он может отдавать ошибку «назад» не сразу, а с некоторой паузой (например, минут в пять, чего достаточно для перезагрузки сервера с данными). Так же там контролируется процесс логина (сколько раз пробовать, сколько ждать между попытками) и всякий тонкий тюнинг самого процесса работы. Заметим, эти параметры довольно важны для работы и вам нужно обязательно понимать, как поведёт ваш iscsi если вынуть сетевой шнурок на 10-20с, например.
Краткий справочник
Я не очень люблю цитировать легконаходимые маны и строчки, так что приведу типовой сценарий употребения iscsi:
сначала мы находим нужные нам target, для этого мы должны знать IP/dns-имя инициатора: iscsiadm -m discovery -t st -p 192.168.0.1 -t st — это команда send targets.
iscsiadm -m node (список найденного для логина)
iscsiadm -m node -l -T iqn.2011-09.example:data (залогиниться, то есть подключиться и создать блочное устройство).
iscsiadm -m session (вывести список того, к чему подключились)
iscsiadm -m session -P3 (вывести его же, но подробнее — в самом конце вывода будет указание на то, какое блочное устройство какому target’у принадлежит).
iscsiadm — m session -u -T iqn.2011-09.example:data (вылогиниться из конкретной )
iscsiadm -m node -l (залогиниться во все обнаруженные target’ы)
iscsiadm -m node -u (вылогиниться из всех target’ов)
iscsiadm -m node —op delete -T iqn.2011-09.example:data (удалить target из обнаруженных).
mulitpath
Ещё один вопрос, важный в серьёзных решениях — поддержка нескольких маршрутов к источнику. Прелесть iscsi — в использовании обычного ip, который может быть обычным образом обработан, как и любой другой трафик (хотя на практике обычно его не маршрутизируют, а только коммутируют — слишком уж великая там нагрузка). Так вот, iscsi поддерживает multipath в режиме «не сопротивляться». Сам по себе open-iscsi не умеет подключаться к нескольким IP одного target’а. Если его подключить к нескольким IP одного target’а, то это приведёт к появлению нескольких блочных устройств.
Однако, решение есть — это multipathd, который находит диски с одинаковым идентифиатором и обрабатывает их как положено в multipath, с настраиваемыми политиками. Эта статья не про multipath, так что подробно объяснять таинство процесса я не буду, однако, вот некоторые важные моменты:
- При использовании multipath следует ставить маленькие таймауты — переключение между сбойными путями должно происходить достаточно быстро
- В условиях более-менее быстрого канала (10G и выше, во многих случаях гигабит) следует избегать параллелизма нагрузки, так как теряется возможность использовать bio coalesing, что в некоторых типах нагрузки может неприятно ударить по target’у.
Источник
Подключение iSCSI Linux (Debian | Ubuntu)
1. Установка ПО для доступа к iSCSI:
# apt install open-iscsi -y
2. Получаем список доступных target’ов:
# iscsiadm -m discovery -t st -p
Адрес target’а вы получите в письме об активации вашей услуги iSCSI.
Команда вернет доступный target – :
3. После выполнения данной команды и получения доступного target’а, у вас автоматически создастся файл конфигурации, который будет отвечать за подключение данного target’а. Конфигурационный файл носит название default и находится в папке /etc/iscsi/nodes/ / /
4. Для автоматического подключения iSCSI-диска при включении сервера необходимо внести определенные правки в файл конфигурации.
Откройте файл любым удобным текстовым редактором и замените:
node.startup = manual > node.startup = automatic
node.session.auth.authmethod = None > node.session.auth.authmethod = CHAP
А также добавьте следующие две строки после указанной выше строки:
node.session.auth.username =
node.session.auth.password =
Логин и пароль указан в письме об активации услуги.
5. После внесенных изменений перезагрузите сервис:
# service open-iscsi restart
Выполните подключение доступных iSCSI-устройств:
# iscsiadm -m node -L all
Если данные в файле конфигурации были указаны верно, то команда # dmesg | tail вернет информацию о том, что был подключен iSCSI-disk.
Теперь с этим диском можно работать, как с любым другим диском.
Вы можете использовать эти знания самостоятельно,
обратиться в нашу службу техподдержки (необходима авторизация)
Источник
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
- Главная
- Настройка iSCSI-хранилища в Debian или Ubuntu
Настройка iSCSI-хранилища в Debian или Ubuntu
Протокол iSCSI получил широкое распространение как простой и недорогой способ организации сетей хранения данных (SAN) поверх обычных Ethernet-сетей. iSCSI не требует приобретения дополнительного оборудования и существенного изменения инфраструктуры, тем не менее позволяя более эффективно использовать пространство в хранилищах и увеличить надежность хранения данных. В данном материале мы рассмотрим создание iSCSI-хранилища в среде современных ОС семейства Debain или Ubuntu, включая многочисленные их производные.
Начиная с Debian 9 Stretch и Ubuntu 18.04 LTS пакет iSCSI Enterprise Target (iscsitarget) был удален и ему на смену пришел Linux SCSI target (tgt), работу с которым мы и будем рассматривать. Все указанные ниже команды следует вводить с правами суперпользователя или используя sudo. В нашем случае использовалась OC Debian 10, но все сказанное будет справедливо для любого основанного на нем дистрибутива, а с некоторыми поправками для любых Linux-систем.
Прежде всего установим Linux SCSI target, не забыв перед этим обновить список пакетов:
Серверная часть в iSCSI называется порталом, который содержит цели (таргет, Target), каждая из которых предоставляет клиенту — инициатору (Initiator) доступ к одному или нескольким блочным устройствам. В качестве блочных устройств могут использоваться физические диски, логические тома, файлы (виртуальные диски) и т.д. и т.п. В нашем примере мы будем использовать файл. На наш взгляд это наиболее удобно, так как позволяет достаточно гибко управлять системой хранения — файлы виртуальных дисков можно легко перемещать между серверами или физическими дисками, а также управлять их размерами.
Виртуальные диски могут иметь фиксированный размер или быть динамическими. Диск фиксированного размера сразу занимает все выделенное пространство, но при этом обеспечивает наиболее высокое быстродействие и практически не подвержен фрагментации. Динамический диск увеличивает свой размер по мере записи на него данных, файл диска при этом может фрагментироваться, особенно если активная запись ведется сразу в несколько таких дисков.
Какой же тип выбрать? Здесь все зависит от решаемых задач, если вы заранее знаете объем хранимых данных, и он не будет существенно изменяться — то выбирайте диск фиксированного размера, в иных случаях более предпочтителен динамический диск, как позволяющий более оптимально использовать дисковое пространство.
Для хранения файлов виртуальных дисков мы будем условно использовать директорию /storage, поэтому вам потребуется откорректировать пути в соответствии с реальным расположением данных.
Для создания диска фиксированного размера используйте команду:
Она создаст файл размером 2 ГБ, так как мы указали размер блока — bs — равным 1 MБ и количество таких блоков — count — 2048.
Для создания динамического диска:
Данная команда создает разреженный файл с максимальным размером 200 ГБ, разреженными называются файлы, которые вместо последовательности нулей на диске хранят информацию об этих последовательностях в специальной таблице.
Для преобразования обычного файла в разреженный выполните команду:
Где filename и newfilename — старое и новое имя файла.
Будем считать, что файлы виртуальных дисков вами созданы и перейдем к настройке Linux SCSI target. Для этого перейдем в /etc/tgt где мы увидим файл targets.conf и директорию conf.d. Предполагается что для каждой цели мы будем использовать отдельный конфигурационный файл, которые следует снабдить расширением .conf и размещать в указанной директории.
Следует помнить, что так как iSCSI-диск является аналогом обычного диска, то с одной целью может работать только один инициатор, исключение — кластерные системы, где одна цель может быть сразу подключена к нескольким узлам.
Создадим новый файл конфигурации:
Затем откроем созданный файл и внесем в него следующее содержимое:
В начале секции после директивы target указывается IQN — полностью определенное имя цели, которое имеет следующий формат:
- year-mo — год и месяц регистрации домена
- reversed_domain_name — доменное имя, записанное в обратном порядке
- unique_name — уникальное имя цели
Внутри секции цели мы указали следующие опции:
- backing-store — указывает путь к блочному устройству или файлу
- initiator-address — IP-адрес инициатора, , если он не указан, то доступ сможет получить любое устройство.
- incominguser — имя пользователя и пароль, необязательная опция, используется для дополнительной безопасности, по требованию стандарта длина пароля должна быть равна 12 символам.
Если вы хотите предоставлять в одной цели два и более блочных устройства, то для каждого из них добавьте отдельной строкой опцию backing-store, это же касается и initiator-address, их тоже можно указать несколько.
Сохраним файл конфигурации и перезапустим службу Linux SCSI target:
Проверить работу портала можно командой:
Которая покажет все подключенные к нему цели и предоставляемые ими блочные устройства.
На этом настройку цели можно считать законченной. Как видим, никаких особых сложностей в создании iSCSI хранилища в Linux-системах нет.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Источник