iSCSI
iSCSI (англ. Internet Small Computer System Interface) — протокол, который базируется на TCP/IP и разработан для установления взаимодействия и управления системами хранения данных, серверами и клиентами.
iSCSI описывает:
- Транспортный протокол для SCSI, который работает поверх TCP.
- Механизм инкапсуляции SCSI-команд в IP-сети.
- Протокол для нового поколения систем хранения данных, которые будут использовать «родной» TCP/IP.
Протокол iSCSI является стандартизованным по RFC 7143. Существует множество коммерческих и некоммерческих реализаций этого протокола.
Системы на основе iSCSI могут быть построены на любой достаточно быстрой физической основе, поддерживающей протокол IP, например Gigabit Ethernet или 10G Ethernet. Использование стандартного протокола позволяет применять стандартные средства контроля и управления потоком, а также существенно уменьшает стоимость оборудования по сравнению с сетями Fibre Channel.
Общее представление
Протокол iSCSI позволяет двум хостам согласовать соединение и после этого обмениваться командами SCSI с помощью интернет протокола (IP). Таким образом, iSCSI берет за основу широко распространенную высокопроизводительную шину локального хранилища данных и эмулирует её в большом количестве сетей, создавая сеть хранения данных (SAN). В отличие от некоторых SAN-протоколов, iSCSI не требуется выделенное кабельное соединение: он может быть развернут на уже существующей IP-инфраструктуре. В результате iSCSI часто используется как удешевленная альтернатива для волоконного канала (Fibre Channel), которому требуется собственная, отдельная инфраструктура, за исключением одного из вариантов его реализации (FCoE - Fibre Channel over Ethernet). Тем не менее, производительность ISCSI SAN может падать, если он не использует выделенную сеть или подсеть (LAN, VLAN), в связи с использованием ограниченного объема пропускной способности используемой сети на разные цели.
Несмотря на то, что iSCSI может взаимодействовать с различными типами устройств, он почти всегда используется системным администратором для того, чтобы позволять серверам (например, серверам баз данных) получать доступ к дисковым томам в массивах хранения. iSCSI SAN часто используется для двух целей:
Консолидация объемов хранилищ данных
Компании перемещают разрозненные данные с различных серверов своей сети в главное хранилище, часто это бывают дата-центры. Подобный подход позволяет более эффективно распределять пространство в хранилищах, так как они более не привязаны к конкретному серверу. В среде SAN серверу может быть выделен новый том диска без внесения каких-либо изменений в оборудование или в кабельную сеть.
Аварийное восстановление
Компании зеркально отражают хранимые данные из локального центра на удаленный дата-центр, который может использоваться как горячий или резервный в случае долгой неработоспособности локального. Как частный случай, iSCSI SAN позволяет переносить целые дисковые массивы через локальную сеть с минимальными изменениями, что делает хранилища "маршрутизируемыми", так же, как и сетевой трафик
Адресация
iSCSI использует TCP (обычно TCP-порты 860 и 3260) для самого протокола, с высокоуровневыми именами, используемыми для адресации объектов внутри самого протокола. Специальные имена присваиваются как iSCSI-инициаторам (initiators), так и целям (targets). iSCSI обеспечивает три формата имен:
iSCSI-типизированные имена (iSCSI Qualified Name) IQN
Формат: IQN определен в RFC 7143. Содержит в себе поля:
- буквенная аббревиатура iqn
- дата (гггг-мм), когда блок присвоения имен завладел доменом
- имя домена в обратном порядке (org.example)
- необязательное ":", служащее префиксом для имени хранилища, указанного блоком присвоения имен.
Type | . | дата | . | имя домена | : | имя хранилища |
---|---|---|---|---|---|---|
iqn | . | 2018-12 | . | com.example |
|
storage:diskarrays-sn-a1235512 |
iqn | . | 2018-12 | . | com.example |
|
storage:disk2.sys.prof |
Расширенный уникальный идентификатор (Extended Uniq Identifier) EUI
Формат: eui.{EUI-64-битный адрес} (прим. eui.02004567A425678D)
T11 администрация сетевого адреса (T11 Network Address Authority) NAA
Формат: naa.{NAA 64- или 128-битный идентификатор} (прим. naa.52004567BA64678D)
Имена формата IQN используются чаще всего, они определяются датой, поскольку у доменного имени может истечь срок или оно может быть приобретено кем-то другим.
IEEE-блок регистрации использует EUI в соответствии со стандартом EUI-64. NAA является частью OUI, который в свою очередь так же обеспечивается блоком регистрации IEEE. Формат имен NAA был добавлен в iSCSI в RFC 3980 для обеспечения совместимости с соглашением об именах, используемым в волоконных сетях и технологиях хранения Serial Attached SCSI (SAS).
Обычно участники обмена в iSCSI определяются с помощью трех или четырех полей:
- Имя хоста или IP-адрес (прим. iscsi.example.com)
- Номер порта
- iSCSI-имя (в одном из 3 форматов)
- Необязательный протокол аутентификации с косвенным согласованием.
Примеры реализаций
Инициаторы (клиенты)
Присутствует в стандартной сборке Linux с версии 2.6.16.
- Microsoft iSCSI Software Initiator Version 2.08 (для Windows 2000/XP/2003 Server)
- Реализация target для Linux (позволяет экспортировать устройство или файл как iSCSI target)
- Бесплатная программная реализация target для Windows Server 2008 R2
- Бесплатная программа-клиент iSCSI Initiator для Windows XP/7/8/8.1
Также существует монолитный проект на основе BSD — OpenNAS,
На основе FreeBSD 7.2 сделан FreeNAS (может выступать как в качестве target, так и initiator).[1]
Аналог FreeNAS, но на основе Linux — проект Openfiler (также может выступать как в качестве target, так и initiator). Состояние проекта неясно, никто из разработчиков не объявил о его закрытии, но версия не обновлялась с 2008 года.[2]
Отколовшийся от FreeNAS (после покупки последнего компанией iXsystems) форк NAS4Free на FreeBSD, обновленной до версии 9.1.[3]
Также реализация хранилищ данных с использованием iSCSI выполнена в продуктах:
- Nexenta (доступна бесплатная версия Nexenta Community Edition)
- Open-E DSS.
Терминология
Терминология iSCSI во многом основывается на терминологии, использующейся в SCSI:
- initiator — тот, кто устанавливает соединение с целью (target). Чаще всего это узел (в общем случае), осуществляет ввод/вывод на блочные устройства.
- target — экспортируемый объект. В зависимости от контекста цель (target) называют или целиком экспортирующий узел, или только экспортируемый объект. Сам объект может делиться на lun’ы.
- Портал — группа целей (targets), которые анонсируются вместе. Чаще всего один узел хранения — один портал.
- IQN — полное имя участника взаимодействия. На практике существует iqn у инициатора и у цели (target).
- endpoint — уточнённое имя ресурса, чаще всего включает в себя iqn, номер LUN’а и указание на конкретный метод доступа к нему (например, номер соединения, LUN и IP-адрес, с которого следует получать доступ к устройству).
- LUN (Logical Unit Number) — номер объекта внутри цели (target). Ближайшим аналогом является раздел диска или отдельный том.
Сравнение iSCSI-таргетов
Преимущества
- Консолидация систем хранения данных
- Резервирование данных
- Кластеризация серверов
- Репликация
- Восстановление в аварийных ситуациях
- Географическое распределение SAN
- QoS
- Безопасность