- iSCSI инициатор
- Содержание
- iSCSI инициатор
- Установка iSCSI инициатора
- Настройка iSCSI инициатора
- iSCSI
- Материал из Xgu.ru
- Содержание
- [править] Терминология
- [править] Именование в iSCSI
- [править] Программное обеспечение
- [править] Использование iSCSI в Linux
- [править] Подготовка iSCSI-таргета
- [править] Подготовка iSCSI-инициатора
- [править] Подключение устройств
- [править] Использование iSCSI в FreeBSD
- [править] FreeNAS
- [править] Использование iSCSI в VMware ESX Server
- [править] Терминология: сеансы, соединения
- [править] Загрузка компьютера по iSCSI
- Создание надёжного iSCSI-хранилища на Linux, часть 1
- Прелюдия
- Вводные
- За дело
- Конец первой части
iSCSI инициатор
Содержание
iSCSI инициатор
Сервер Ubuntu может быть настроен как в качестве iSCSI инициатора, так и в качестве целевого объекта (сервером). Это руководство описывает команды и опции настройки по установке iSCSI инициатора. Это предполагает, что у вас есть iSCSI устройство в вашей сети и вы обладаете необходимыми правами для подключения к нему. Инструкции по установке iSCSI устройств очень сильно зависят от производителя, поэтому обратитесь к документации производителя для настройки вашего конкретного iSCSI устройства.
Установка iSCSI инициатора
Для настройки сервера Ubuntu в качестве iSCSI инициатора, установите пакет open-iscsi. Введите в терминале:
Настройка iSCSI инициатора
Как только пакет open-iscsi установлен, отредактируйте /etc/iscsi/iscsid.conf, изменив следующее:
Вы можете определить какие целевые объекты вам доступны с помощью утилиты iscsiadm. Введите следующую команду в терминале:
-m: определяет режим, в котором работает iscsiadm.
-t: определяет тип поиска.
-p: опция, определяющая IP адрес целевого объекта.
Если целевой объект доступен, вы увидите вывод, подобный следующему:
Теперь вы можете соединиться с iSCSI сервером и в зависимости от его настроек вам возможно придется ввести данные учетной записи пользователя. Подключение к iSCSI узлу:
Убедитесь, что новый диск определяется с помощью dmesg:
В приведенном выводе sdb — это новый iSCSI диск. Помните, что это всего лишь пример; вывод на вашем экране может сильно отличаться.
Далее создадим раздел, отформатируем файловую систему и подсоединим новый iSCSI диск. Введите в терминале:
Теперь форматируем файловую систему и монтируем ее, например, в /srv:
Наконец добавим запись в /etc/fstab для монтирования iSCSI устройства в процесе загрузки:
Хорошей идеей будет убедиться, что все работает как надо, перегрузив сервер.
Источник
iSCSI
Материал из Xgu.ru
|
Данная страница находится в разработке. Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной. Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом. Содержание[править] Терминология
Существующие на сегодняшний день методы обнаружения:
[править] Именование в iSCSI
iqn. . :
16‐character name. The name includes 24 bits for company name assigned by the IEEE and 40 bits for a unique ID such as a serial number. Например, eui.0123456789ABCDEF. [править] Программное обеспечение
В FreeBSD инициатор iSCSI входит в состав ядра, начиная с 7.0. Процедура использования инициатора iSCSI в FreeBSD: [1]. Тарджет доступен в виде порта iscsi-target, перенесённого из NetBSD. Подробнее: [2] (англ.), [3] (рус.). В [4] рассказывается как организовать работу инициатора и таргета на FreeBSD, при этом хранить и передавать данные в зашифрованном виде. [править] Использование iSCSI в Linux[править] Подготовка iSCSI-таргетаПроцедура сборки модуля iscsi_trgt для разных дистрибутивов Linux подробно описана в [5]. Здесь показана процедура сборки для Debian GNU/Linux. На ядре 2.6.18 не завелось. Сборка m-a a-i завершается с сообщением об ошибке: Попробуем завести на 2.6.25. Не забывайте, что 2.6.25 уже работает через pv_ops, поэтому нужно использовать соответствующие идентификаторы дисков и консолей. Если вы собираетесь подключаться к домену через xm console, в гостевом домене нужно поправить файлы /etc/inittab и /etc/securetty (если вы собираетесь заходить как root): На 2.6.25 сборка модуля успешно завершается. После того как сборка модуля ядра завершилась, можно приступать к инсталляции и настройке программ. [править] Подготовка iSCSI-инициатораПросмотр установленных iscsi-соединений (с ключом -P1 для большей детализации): [править] Подключение устройствПросмотр сеансов подключения к таргету? [править] Использование iSCSI в FreeBSD[править] FreeNASFreeNAS это готовый NAS-сервер, поддерживающий протоколы CIFS, FTP, NFS, AFP, RSYNC, iSCSI, программный RAID (0,1,5) и полную интеграцию с web-интерфейсом. Он занимает меньше чем 32MB на диске (или Flash-диске). Минимальный дистрибутив FreeBSD, положенный в основу FreeNAS, web-интерфейс и PHP-скрипты основываются на M0n0wall. [править] Использование iSCSI в VMware ESX ServerVMware ESX Server поддерживает iSCSI для доступа к хранилищам с образами виртуальных машин. [править] Терминология: сеансы, соединения[править] Загрузка компьютера по iSCSIСетевые карты производства Intel умеют выполнять загрузку по iSCSI. Дополнительная информация о том как выполнять загрузку узлов без использования iSCSI HBA, пользуясь только обычной сетевой картой и таблицей iBFT: Источник Создание надёжного iSCSI-хранилища на Linux, часть 1ПрелюдияСегодня я расскажу вам как я создавал бюджетное отказоустойчивое iSCSI хранилище из двух серверов на базе Linux для обслуживания нужд кластера VMWare vSphere. Были похожие статьи (например), но мой подход несколько отличается, да и решения (тот же heartbeat и iscsitarget), используемые там, уже устарели. Статья предназначена для достаточно опытных администраторов, не боящихся фразы «патчить и компилировать ядро», хотя какие-то части можно было упростить и обойтись вовсе без компиляции, но я напишу как делал сам. Некоторые простые вещи я буду пропускать, чтобы не раздувать материал. Цель этой статьи скорее показать общие принципы, а не расписать всё по шагам. ВводныеТребования у меня были простые: создать кластер для работы виртуальных машин, не имеющий единой точки отказа. А в качестве бонуса — хранилище должно было уметь шифровать данные, чтобы враги, утащив сервер, до них не добрались. В качестве гипервизора был выбран vSphere, как наиболее устоявшийся и законченый продукт, а в качестве протокола — iSCSI, как не требующий дополнительных финансовых вливаний в виде коммутаторов FC или FCoE. С опенсурсными SAS таргетами довольно туго, если не сказать хуже, так что этот вариант тоже был отвергнут. Осталось хранилище. Разные брендовые решения от ведущих вендоров были отброшены по причине большой стоимости как их самих по себе, так и лицензий на синхронную репликацию. Значит будем делать сами, заодно и поучимся. В качестве софта было выбрано:
В итоге, в недолгих муках была рождена такая несложная схема: Таким образом, скоропостижная гибель любой из карт не приведёт к полной неработоспособности какой-либо из подсистем. Так как основная задача этих хранилищ — надежное хранение больших данных (файл-сервера, архивы почты и т.п.), то были выбраны сервера с 3.5″ дисками:
За делоДискиЯ создал на каждом из серверов по два RAID10 массива из 8 дисков. В общем, тут каждый решает для себя. Сетевая частьС протоколом iSCSI бессмысленно использовать Bonding/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 в минимальном виде, на этом останавливаться подробно не буду. Сборка пакетовСборку я проводил на отдельной виртуалке, чтобы не захламлять сервера компиляторами и исходниками. Качаем последнее ядро 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 до следующего состояния (там есть стандартный файл, но он не собирает модули ядра): В файле Makefile.in подправим переменную SUBDIRS, уберем из нее documentation, иначе пакет не соберётся с руганью на документацию. Получаем пакет drbd_8.4.4_amd64.deb Всё, собирать больше вроде ничего не надо, копируем оба пакета на сервера и устанавливаем: Настройка серверовИнтерфейсы у меня были переименованы в /etc/udev/rules.d/70-persistent-net.rules следующим образом: /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: Вот, тут гораздо веселее дело идёт. Частота — решающий фактор, судя по всему. Настраиваем репликацию, конфиги с обоих концов должны быть на 100% идентичные. Тут наиболее интересным параметром является протокол, сравним их. Запись считается удачной, если блок был записан…
Самым медленным (читай — высоколатентным) и, одновременно, надёжным является C, а я выбрал золотую середину. Далее идёт определение ресурсов, которыми оперирует DRBD и нод, участвующих в их репликации. У каждого ресурса — свой порт. Теперь инициализируем метаданные ресурсов DRBD и активируем их, это нужно сделать на каждом сервере: Далее нужно выбрать какой-то один сервер (можно для каждого ресурса свой) и определяем, что он — главный и с него пойдёт первичная синхронизация на другой: Всё, пошло-поехало, началась синхронизация. За ее прогрессом можно понаблюдать командой watch -n0.1 cat /proc/drbd, очень умиротворяет и настраивает на философский лад. Конец первой частиДля одной части, я думаю, хватит. И так уже много информации для впитывания. Во второй части я расскажу про настройку менеджера кластера и хостов ESXi для работы с этим поделием. Источник |