iSCSI-протокол: как работает, для чего используется и как подключить
iSCSI, Internet Small Computer System Interface — протокол для организации хранения данных, предназначенный для запуска SCSI при помощи сетевого соединения (чаще всего Ethernet). В статье рассмотрим принцип его работы, особенности, преимущества, а также подскажем, как настроить iSCSI-протокол.
Принцип работы iSCSI
Для понимания принципа работы iSCSI нужно более подробно изучить его структуру. Основными компонентами здесь являются инициаторы и цели. Эта терминология достаточно проста. Инициаторами называются хосты, которые устанавливают соединение по iSCSI. А цели (также используется понятие «таргеты» от англ. target) — это те хосты, которые принимают такое соединение. Таким образом, в качестве целей служат хранилища данных, с которыми выполняют связь хосты-инициаторы.
Связь устанавливается через TCP/IP, а iSCSI занимается обработкой команд SCSI и сбором данных, формируя пакеты. Далее происходит передача этих пакетов при помощи двухточечного соединения между локальным и удаленным хостом. iSCSI разбирает полученные пакеты и разделяет команды SCSI. Такая работа протокола и приводит к тому, что ОС видит хранилище не как удаленное, а как локальное устройство с возможностью его стандартного форматирования.
Аутентификация и передача данных
Инициаторы и цели в iSCSI идентифицируются при помощи специальных имен IQN (расширенные имена iSCSI) и EUI (расширенные 64-битные идентификаторы, используемые при работе по протоколу IPv6).
- Пример IQN : iqn.2003-02.com.site.iscsi:name23 . Цифры 2003-02 , стоящие после iqn , обозначают год и месяц регистрации доменного имени site.com . Сами доменные имена в IQN, как видим, указываются в обратном порядке. Наконец, name23 — имя, присвоенное iSCSI конкретному хосту.
- Пример EUI : eui.fe9947fff075cee0 . Видно, что перед нами шестнадцатеричное значение в формате IEEE. Причем верхние 24 бита идентифицируют определенную сеть или компанию (например, провайдера). Остальные же 40 бит служат для идентификации конкретного хоста в этой сети и являются уникальными.
Каждая сессия выполняется в два этапа. Первый представляет собой аутентификацию по TCP. При успешной аутентификации выполняется второй этап — обмен данными между хостом-инициатором и хранилищем, который происходит через единое соединение, что исключает необходимость параллельного отслеживания запросов. После завершения приема-передачи данных соединение закрывается, что делается инструкцией iSCSI logout .
Обработка ошибок, безопасность
При утрате блоков данных iSCSI предусматривает возможность их восстановления. Для этого в протоколе предусмотрены такие механизмы, как повтор передачи пакетов PDU, восстановление соединения, а также перезапуск сессии с одновременной отменой всех инструкций, которые не были выполнены. Безопасность пакетного обмена обеспечивается за счет использования протокола CHAP, который основан на передаче не самих конфиденциальных данных (например, пароля), а косвенной информации о них, что делается путем сопоставления хеша. Кроме того, все пакеты шифруются и проверяются на целостность, что обеспечивают протоколы IPsec, которые также являются частью iSCSI.
Типы реализации iSCSI
Различают три типа реализации iSCSI:
- С обработкой при помощи CPU хоста-инициатора.
- С разделенной нагрузкой TCP/IP, когда большинство пакетов, кроме исключений, обрабатываются на стороне хранилища. Исключения же обрабатываются хостом-инициатором.
- С полной выгрузкой TCP/IP, когда силами хранилища обрабатываются все пакеты данных.
Добавим, что iSCSI также может использоваться в качестве расширения для организации RDMA, то есть удаленного прямого доступа к памяти. Преимуществом RDMA является передача данных без использования ресурсов операционных систем узлами сети, что обеспечивает высокую скорость обмена данными. В случае с iSCSI для соединения с хранилищем используется буферная память SCSI, что позволяет избежать создания промежуточных копий данных и исключить нагрузку на процессорные мощности. Такой вариант iSCSI сокращенно называют iSER, то есть расширение (Extension — E в аббревиатуре) iSCSI (iS) для обеспечения RDMA (последняя буква R).
Плюсы iSCSI
Экономичность и повышенная производительность — не единственные плюсы протокола iSCSI. Отметим также:
- Упрощение сетевого хранения за счет того, что протокол работает через устройства Gigabit Ethernet.
- Удобство в поддержке сетевого хранилища, так как работа с iSCSI основана на тех же принципах, что и с TCP/IP. А значит, специалистам не придется переучиваться.
- Совместимость сетевого оборудования. Поскольку основу хранилищ iSCSI составляет сетевая модель TCP/IP, практически любое сетевое оборудование, предназначенное для хранения, совместимо между собой и в рамках iSCSI.
Как подключить iSCSI
Оптимальным устройством для работы протокола является неблокирующий коммутатор Gigabit Ethernet корпоративного уровня, который обеспечит достаточную скорость соединения. Само же подключение протокола iSCSI не представляет особых сложностей, однако эта процедура в Windows и Linux-подобных системах различается кардинально. И у нас уже есть готовые инструкции для обеих ОС:
- в этом руководстве вы найдете детальные инструкции по подключению iSCSI-диска с описанием различий между ОС Ubuntu / Debian и CentOS;
- а здесь подробно рассказывается, как это делать в Windows (на примере Windows Server 2016).
У нас вы всегда можете заказать сетевой iSCSI-диск объемом от 0,25 до 30 Тб. Подробнее об услуге читайте на этой странице .
Добавим, что для обеспечения мультисерверного соединения с хранилищем лучше использовать технологию MPIO (многопутевой ввод-вывод). Она позволяет создавать избыточные пути, повышая отказоустойчивость соединения пользователей с хранилищем.
Различия между iSCSI SAN и FC SAN
В статьях, посвященных сравнению этих двух протоколов, они нередко позиционируются, как конкурентные. Поэтому рассмотрим наиболее значимые различия между ними.
Хранилище iSCSI SAN (SAN расшифровывается, как Storage Area Network) — это более экономичное решение в сравнении с FC SAN. iSCSI предлагает лучшую производительность при передаче данных, к тому же для него не нужно использовать отдельное оборудование — работа iSCSI SAN строится на имеющемся сетевом оборудовании. Правда, есть одно исключение — для обеспечения максимальной производительности всё же потребуются адаптеры. А вот FC всегда требуется дополнительное оборудование — это коммутатор и адаптер шины.
Для наглядности свели ключевые различия между протоколами в таблицу:
Использование в действующей сети
Бездисковая загрузка по технологии iSCSI
Начну из далека. Как часто вы встречаете организации использующие «Подключение к удаленному рабочему столу» как основной способ работы в офисе? Я стал встречать такие все чаще и мое личное мнение — это удобно! Удобно для сотрудников, удобно для системных администраторов, а самой компании это позволяет сократить IT расходы. А нередко это даже необходимость для комфортной многопользовательской работы в некоторых программах (пример — ПО 1С).
А как часто вы видите что в качестве клиентов используются обычные себе полноценные ПК, иногда даже вполне производительные и для локальной работы.
Разговор будет о замечательной технологии iSCSI, и как мы её можем использовать чтобы уменьшить совокупную стоимость владения, и поможет тем кто хочет познакомиться с технологией поближе.
Вики гласит:
iSCSI (англ. Internet Small Computer System Interface) — протокол, который базируется на TCP/IP и разработан для установления взаимодействия и управления системами хранения данных, серверами и клиентами.
Для понимания происходящего определимся с терминологией:
iSCSI Target: (Цель iSCSI) — программа или аппаратный контроллер (HBA), осуществляющие эмуляцию диска и выполняющие запросы iSCSI. подробнее
iSCSI Initiator: (Инициатор iSCSI) — Клиентская программа или аппаратный контроллер, который взаимодействует с iSCSI Target.
IQN: (iSCSI Qualified Name) — Уникальный идентификатор (имя) iSCSI Target’a или iSCSI Initiator’а.
LUN: (Logical Unit Number) — Адрес блочного устройства в диапазоне 0-127. подробнее
Инициатор iSCSI
Прелесть в том, что Windows 7, Windows Server 2008 и всё что старше умеют устанавливаться напрямую на iSCSI target. Проблема только в том, как инициализировать удаленное блочное устройство при включении ПК.
Все современные сетевые карты умеют работать по технологии PXE, а вот с iSCSI дружат только дорогущие серверные сетевые карты например intel
Однако есть как минимум два знакомых мне open source проекта gPXE и iPXE, последний, к слову, форк первого, с немного доработанной системой вывода ошибок и несколькими дополнительными опциями.
Лично я использую gPXE, я его нашел первым, к тому-же у них на сайте есть очень удобный генератор rom-o-matic
Есть много способов как загрузиться через gPXE. Для рабочего варианта я вшивал её ROM вместо PXE загрузчика в BIOS метеринки. Рисковый вариант, можно остаться без материнки, забегая вперед это позволит уменьшить время загрузки на ~ 10 сек.
Расскажу лучше о простом и безопасном для оборудования способе под названием PXE chainloading подробно (англ.) . Суть такова — с помощью PXE загрузчика загружаем gPXE, который в свою очередь выступает iSCSI инициатором и передает управление диску. Для этого нам нужен TFTP сервер (я не стал прибегать к стороннему софту, сделал как тут) и правильная настройка DHCP сервера.
Вот так выглядит DHCP параметры у меня:
Обратите внимание на параметр «175 gPXE_Options», инкапсулированное значение «08 01 01 ff» означает опцию keep_san = 1, которая заставляет gPXE не удалять регистрацию диска в случае неудачной загрузки с него (это необходимо для установки операционной системы).
В параметре «017 Корневой путь» самый просто синтаксис будет iscsi:.
Настройки iSCSI инициатора на этом закончены.
Цель iSCSI
Настройки цели крайне простые и интуитивные.
Создаём новое или импортируем существующий VHD диск:
Далее создаём цель:
Добавляем созданный или импортированный ране диск:
На этом настройка цели почти закончена. Осталось только добавить IQN(или любой другой тип индификатора: MAC, IP) инициатора(ов) который имеет доступ к этой цели.
Если после этого при загрузке клиентского ПК в gPXE промелькнут надписи:
Registered as BIOS drive 0x80
Booting from BIOS drive 0x80
Значит у нас получилось. И можно приступать к установке ОС.
Установка ОС или Epic Fail
Уже с ностальгией вспоминаю тот момент, когда первый раз я дошел до этого этапа и… поначалу меня постигало кучу разочарований. Забегая вперед скажу, что причиной многому была неудачная материнская плата GYGABYTE GA-425TUD.
Что же я увидел когда дошел до пункта выбора диска? Верно. Ничего. Подумал, ага, надо подгрузить сетевые драйвера. Аномально долгий поиск ~ 30 — 40 минут на пустой флешке, куда были переписаны исключительно дрова для нужной сетевухи, заставлял меня думать что ОС виснет и раз 5-10 я так и не дожидался окончания поиска, выключал, перезагружал, менял опции gPXE. Так сложилось, что однажды я таки дождался пока драйвера были найдены, и радовался как ребенок обнаружив что в меню выбора появился так желанный мне диск.
Радость тут-же омрачилась тем что ОС сообщила мне о невозможности установиться на этот диск и любезно попросила меня проверить включен ли в моём BIOS контроллер этого диска.
Решение было найдено довольно быстро вот тут в самом низу. Если коротко то ребята советовали включать/выключать SATA контроллер, менять режим его работы IDE, ACHI и даже попробовать подключить реальный диск на время установки, но установку проводить на iSCSI диск. Для меня сработало подключение реального диска в режиме ACHI. Теперь установка пошла на iSCSI диск без проблем. Однако после перезагрузки ОС (один из этапов установки) я постоянно ловил BSOD на classpnp.sys.
Причина до сих пор мне не совсем понятна.
Большими усилиями была найдена зацепка
Решением стало отключение LWF фильтра в ОС на сетевухе.
В этом варианте у меня заработало даже на проблемной материнке.
После этого я пробовал еще 2 или 3 материнки, установка проходила гладко изначально (нужно было лишь подгрузить сетевые драйвера).
Тесты
Интересно на сколько будет заметно что мой HDD где-то там в 100 метрах от меня? На глаз вообще не отличить! Но я даже не надеялся что вы поверите моему глазу по этому приведу результаты тестов.
Наши герои:
Seagate ST500DM002 — будет работать локально, как у людей ;D
iSCSI SSD Patriot 128 PYROSE — на сервере, будет работать через iSCSI, сетевой канал 1ГБ.
iSCSI RAID 10 4xSeagate ST500DM002 — на сервере, будет работать через iSCSI, сетевой канал 1ГБ.
(Локальный)Seagate ST500DM002
iSCSI SSD Patriot 128 PYROSE
iSCSI RAID 10 4xSeagate ST500DM002
Свод и выводы
На мой взгляд вполне заслуживающая внимания технология, как видно из тестов даже на 1ГБ сети имеет хороший КПД. При текущих ценах на HDD позволит экономить как минимум 2500р с рабочей станции и облегчает задачу резервирования данных. У меня в организации все сотрудники работают в терминале, еще вот открыли учебный класс на 8 рабочих мест, именно там в качестве теста я и внедрял эту технологию.
С радостью отвечу на вопросы.