iSCSI: как устроен протокол для организации сетевого хранилища

Рассказываем про работу с сетевым хранилищем с помощью протокола iSCSI. Разбираемся, как устроен интерфейс, какие существуют аналоги и как построить iSCSI SAN.

Что такое протокол iSCSI, интерфейс малых компьютерных систем интернета

iSCSI расшифровывается как Internet Small Computer System Interface, или интерфейс малых компьютерных систем интернета. Это транспортный протокол, обеспечивающий передачу протокола хранения данных SCSI по TCP/IP через сетевое соединение, которым обычно является Ethernet. iSCSI работает как метод организации распределенных хранилищ.

Наиболее распространенным способом использования iSCSI является TCP/IP через Ethernet. Также используется как расширение для удаленного прямого доступа к памяти (RDMA). В таком случае протокол называется iSER — iSCSI Extensions for RDMA. В его задачах — управление передачи данные непосредственно в буферы памяти компьютера SCSI, соединяющие компьютеры с устройствами хранения данных, и обратно без промежуточных копий данных и значительного вмешательства процессора.

Как устроено сетевое хранилище iSCSI

Инициатор iSCSI

Сеть хранения данных (SAN) iSCSI использует коммутацию Ethernet TCP/IP третьего уровня. Она отображает протокол SCSI для хранения данных в TCP/IP и превращает его в пакеты Ethernet. По сути, iSCSI позволяет инициатору и целевой системе договариваться и обмениваться командами SCSI, используя сети TCP/IP. Сеть хранения данных iSCSI эмулирует прямое подключение SCSI-целей через локальную сеть.

Существует три основных аппаратных компонента iSCSI SAN: 

  • инициаторы или сетевые карты хранения iSCSI — специализированные сетевые интерфейсные карты для связи iSCSI, 
  • стандартные сетевые коммутаторы Ethernet, 
  • целевые сетевые карты хранения на внешних массивах.

Настройка цели iSCSI 

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

Второй вариант — разделенная стековая нагрузка TCP/IP, при которой около 80% стандартной обработки пакетов TCP/IP выполняется в сетевой карте хранилища, обработка исключений выполняется стеком TCP/IP-хоста.

Третий вид — полная выгрузка стека TCP/IP, при которой вся обработка протоколов TCP/IP выполняется сетевой картой. С ростом числа процессорных ядер потребность в механизме разгрузки TCP/IP (TOE) на базе сетевой карты резко снизилась.

В среде iSCSI LUN — это пронумерованные накопители на дисках, секции жесткого диска. Инициатор обменивается с исполнителем запросами и ответами для установления связи с LUN.

Работа c iSCSI

Управление именами и адресами

Адреса хостов и портов целевого хранилища основаны на TCP/IP. Для идентификации инициаторов и целей используют специальные форматы имен iSCSI: квалифицированное имя iSCSI (IQN) или расширенный уникальный идентификатор (EUI).

Поддержка сессий и управление ими

iSCSI-сессия состоит из двух фаз: аутентификации (Login Phase) и обмена (Full Feature Phase).

Login Phase нужна для подтверждения права доступа и согласования параметров между инициатором и получателем. При успешной аутентификации получатель подтверждает доступ инициатору, иначе TCP-соединение прерывается.

После аутентификации сессия iSCSI переходит ко второй фазе. При установлении нескольких TCP-линков iSCSI требует, чтобы каждая пара «команда/ответ» проходила через одно и то же TCP-соединение. За счет чего каждая команда записи или считывания осуществляется без необходимости дополнительно отслеживать прохождение запросов по разным потокам.

В конце фазы обмена сессия закрывается командой iSCSI logout. Эта команда передает информацию о причинах завершения сессии и о том, какой ТСР-линк следует закрыть в случае возникновения ошибки.

Обработка ошибок

Инициатор и получатель iSCSI должны иметь буфер команд для подтверждения их выполнения. Также у них есть возможность восстановить утраченный блок данных IP-пакета (PDU) для восстановления сеанса передачи данных.

Средства обработки ошибок и восстановление в iSCSI включают:

  • выявление ошибок и восстановление данных на сеансовом уровне —  например, повторение передачи утраченного PDU,
  • при повреждении TCP-линка оба узла iSCSI пытаются восстановить соединение,
  • при повреждении сессии iSCSI протокол закрывает все TCP-линки, прерывает выполнение задач, отменяет невыполненные SCSI команд и перезапускает сессию.

Обеспечение безопасности

Главные меры безопасности iSCSI: 

  • протокол аутентификации Challenge-Handshake Authentication Protocol (CHAP) — алгоритм проверки подлинности, предусматривающий передачу не самого пароля пользователя, а косвенных сведений о нем,
  • Internet Protocol Security (IPsec) — набор протоколов, обеспечивающий защиту данных, которые передаются по межсетевому протоколу IP; проводит аутентификацию, проверку целостности и шифрование IP-пакетов.

Арендуйте систему хранения данных как сервис

И используйте протокол iSCSI для подключения к ней
Попробовать

Преимущества и недостатки хранилища iSCSI

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

Почти все корпоративные массивы хранения данных осуществляют поддержку iSCSI. По этим причинам она пользуется популярностью в Tier-2 приложениях, которым требуется хорошая, но не лучшая производительность блочного хранилища, а также в системах хранения данных (СХД), совместно используемых многими хостами. Также iSCSI популярен среди гиперскейлеров и крупных поставщиков облачных услуг, когда им требуется решение для блочного хранения данных, работающее через Ethernet.

Еще одна «особенность» iSCSI — протокол немного выше конкурентов по задержке. Главный конкурент — Fibre Channel — опережает iSCSI по надежности и производительности. В то же время FC — более дорогое решение.

iSCSI vs Fibre Channel (FC)

Сети iSCSI SAN функционально похожи на Fibre Channel. Главное отличие — протокол FC использует интенсивный ручной детерминированный протокол второго уровня — все соединения должны быть определены и отображены вручную заранее. iSCSI опирается на недетерминированный автоматизированный протокол TCP/IP для обнаружения, маршрутизации и коммутации.

iSCSI vs Network-attached storage (NAS)

Трафик iSCSI может передаваться через общую сеть или выделенную сеть хранения данных. Однако iSCSI не поддерживает файловый доступ Network Attached Storage (NAS) или доступ к объектному хранилищу, поскольку они используют разные транспортные протоколы.

Как построить iSCSI SAN?

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

СХД iSCSI основана на универсальной TCP/IP, поэтому разные фирменные сетевые устройства хранения данных в iSCSI SAN могут быть совместимы. Лучше всего использовать неблокирующий коммутатор Gigabit Ethernet корпоративного класса, поскольку устройство ниже уровнем не поддерживает соединения между несколькими портами на скорости проводной сети. Из-за этого коммутатор может отбрасывать пакеты без уведомления. 

1GbE подключения к коммутатору Ethernet для доступа к дисковым массивам уязвимы для сбоя на этом канале. Для создания нескольких подключений от инициатора iSCSI каждого сервера к дисковому массиву больше всего подойдет техника многопутевого ввода-вывода (MPIO). 

В заключение о технологии

Сравнивая две самые популярные технологии для сетей хранения — Fibre Channel и iSCSI, стоит отталкиваться от ваших задач. Если вам нужна очень низкая задержка, высокая масштабируемость и много узлов в сети, вы можете выбрать FC. Если крайне низкая задержка вам не нужна и нужно более простое и дешевое решение, подойдет iSCSI.

Что еще почитать по теме

Fuzzing-тесты в Go после v1.18: знакомство и практика

Рассказываем, как устроено fuzzing-тестирование в Go, и как проверить функцию на корректную валидацию данных.
Андрей Салита 26 января 2023

Что такое общедоступные персональные данные и что к ним относится

Разбираемся, что относится к общедоступным персональным данным и как они защищаются законом.
Андрей Салита 26 января 2023
Андрей Салита 19 января 2023

Что такое брутфорс: какие у него цели и кому это нужно

Рассказываем про распространенные атаки полным перебором и рассказываем, какие методы противодействия им существуют.
Андрей Салита 19 января 2023

Новое в блоге

Михаил Фомин 24 июня 2022

Docker Swarm VS Kubernetes — как бизнес выбирает оркестраторы

Рассказываем, для каких задач бизнесу больше подойдет Docker Swarm, а когда следует выбрать Kubernetes.
Михаил Фомин 24 июня 2022
T-Rex 3 февраля 2023

Что такое IaaS — инфраструктура как услуга  

Разбираемся в преимуществах IaaS и рассказываем, каким компаниям подойдет такая модель.
T-Rex 3 февраля 2023

Как мы хакнули систему Хабра, ускорив верстку статей в несколько раз

В статье рассказываем, как заставили Python верстать за нас и почему топим за старый редактор статей на Хабре.

Подборка материалов для погружения в Angular: выбор сотрудников Selectel

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