iSCSI

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

iSCSI (англ. Internet Small Computer System Interface) — протокол, который базируется на TCP/IP и разработан для установления взаимодействия и управления системами хранения данных, серверами и клиентами.

iSCSI описывает:

  • Транспортный протокол для SCSI, который работает поверх TCP.
  • Механизм инкапсуляции SCSI команд в IP сети.
  • Протокол для нового поколения систем хранения данных, которые будут использовать «родной» TCP/IP.

Протокол iSCSI является стандартизованным по RFC 3720. Существует много коммерческих и некоммерческих реализаций этого протокола.

Системы на основе iSCSI могут быть построены на любой достаточно быстрой физической основе, поддерживающей протокол IP, например Gigabit Ethernet или 10G Ethernet. Использование стандартного протокола позволяет применять стандартные средства контроля и управления потоком, а также существенно уменьшает стоимость оборудования по сравнению с сетями Fibre Channel.


Начну издалека. Существуют две основные концепции сетевых хранилищ данных:

1) NAS (Network-attached storage) en.wikipedia.org/wiki/Network-attached_storage

2) SAN (Storage area network), оно же Сеть хранения данных (СХД) en.wikipedia.org/wiki/Storage_area_network

В случае NAS данные хранятся на неком сервере (часто с локально подключённым большим массивом дисков) и в сеть другим компьютерам они предоставляются в виде файлов по прикладным протоколам (SMB/CIFS, NFS, FTP, SFTP, HTTP, WebDAV, Direct Connect, BitTorrent и др.)

В случае SAN есть некий компьютер с большим дисковым массивом, но чаще даже не компьютер, а отдельная дисковая полка или целая дисковая стойка (сторадж). Дисковый объём этого хранилища нарезается на логические единицы LUN (Logical Unit Number) и в сеть хранения данных клиентам предоставляется (презентуется) именно LUN'ы (т.е. куски дискового пространства). Создание в этом дисковом пространстве, предоставленном хранилищем, дисковых разделов, форматированием их в некую ФС и размещением там файлов занимается уже тот сервер, которому был презентован этот LUN. Само хранилище знает только о LUN'ах, и не знает ничего о более высокоуровневых логических структурах на этом диске (типа файловых систем и файлов).

Т.е. в NAS в сеть предоставляются файлы по высокоуровневым прикладным протоколам, а в SAN в сеть предоставляются диски (блочные устройства) в виде логических дисковых единиц LUN по более низкоуровневому протоколу дискового обмена (SCSI).

Так вот в случае SAN получается, что дисковое хранилище презентует куски своего дискового пространства множеству серверов. А каждый такой сервер по сети хранения данных «общается» с презентованным ему диском по протоколу SCSI. И есть несколько вариантов среды для связи сервера, используещего диск, с дисковым хранилищем, презентующим диск.

Первый вариант: 1) Fibre Channel (FC) en.wikipedia.org/wiki/Fibre_Channel Это оптический канал. Если серверы и дисковое хранилище расположены в соседних стойках, то вся Fibre Channel инфраструктура может ограничиваться оптическими патчкордами, соединяющими FC-адаптеры сервера и дискового хранилища (впрочем, в этом случае хватило бы даже SCSI-кабеля). В действительности же в организациях с большой IT-инфраструкутрой в SAN обычно входят множество дисковых стоек, множество оптических патч-кордов, множество FC-свитчей и FC-коммутаторов, множество магистральных оптических каналов. Как правило, все звенья FC-маршрута от сервера до хранилища ещё и дублируются (два FC-адаптера, два оптических патч-корда, два FC-коммутатора и т.д.), чтобы сервер имел доступ к диску по нескольким независимым путям (multipathing), чтобы обеспечивать резервирование в случае обрыва одного из маршрутов.

И второй вариант: 2) iSCSI en.wikipedia.org/wiki/ISCSI В этом случае команды протокола SCSI между сервером и дисковым хранилищем передаются в среде обычной Ethernet-сети, т.е. через обычный сетевой Ethernet-адаптер и обычную витую пару. Т.е. можно сказать, что iSCSI — это SCSI over Ethernet (а точнее даже SCSI over TCP/IP). Для подключения дисков через iSCSI можно, конечно, использовать тот же сетевой интерфейс, который сервер использует для обычного сетевого обмена, но корпоративная сеть обычно и так заметно утилизирована различным обменом данными между серверами и клиентами, и это будет замедлять работу с диском по сети. Поэтому для организации инфраструктуры iSCSI обычно разворачивают отдельную гигабитную сеть, немаршрутизируемую с корпоративной Ethernet-сетью. Т.е. в серверах для доступа к дискам по iSCSI используется отдельный сетевой интерфейс, отдельные сетевые кабели, отдельные свитчи и маршрутизаторы, т.е. это физически отдельная сеть.

Но даже с учётом построения отдельной Ethernet-сети решение построения SAN на iSCSI гораздо дешевле, чем на оптике (можете посмотреть в прайсах стоимость FC-адаптеров/кабелей/свитчей/маршрутизаторов). iSCSI — это, что назвается, вариант реализации SAN для бедных. По скоростям дискового обмена он проигрывает оптике, но для относительно небольших компаний это вполне приемлемый вариант организации дискового хранилища и удалённого подключения с него дисков к множеству серверов.

Кроме оптики и витой пары раньше ещё можно было встретить реализацию SAN на медных кабелях, но такого вроде уже не встретить, поэтому другие варианты среды передачи в SAN рассматривать не буду.

Для презентования внутри SAN определённого диска (LUN'а) с дискового хранилища не всем подряд, а только определённому серверу, обычно используют некую привязку. При использовании Fibre Channel это может быть привязка к WWN (World Wide Name) — восьмибайтовый уникальный 16-ричный аппаратный номер FC-интерфейса (аналог MAC-адреса у Ethernet-интерфейсов). В случае использования iSCSI это может быть MAC-адрес или IP-адрес. Также дополнительно может быть парольная защита, чтобы кто угодно внутри этой сети не смог подключить определённый диск.

Так вот, возвращаясь к iSCSI… В клиент-серверной терминологии протокола iSCSI (впрочем, как и самого SCSI) есть такие понятия, как iSCSI Initiator и iSCSI Target. iSCSI Initiator — это тот сервер, который подключает к себе по сети диск, презентованный ему с дискового хранилища. А iSCSI Target — это соответственно сторона, предоставляющая диск (обычно это тот сервер, к которому этот диск/массив подключён фисически, например, через SATA/SCSI-контроллер). Любой сервер по отношению к какому-то таргету может выступать iSCSI Initiator'ом, и одновременно для других он сам может выступать в роли iSCSI Target, предоставляя в сеть свои дисковые ресурсы по iSCSI.

Примеры реализаций[править | править вики-текст]

Инициаторы (клиенты)

Присутствует в стандартной сборке Linux с версии 2.6.16.

Также существует монолитный проект на основе BSD — OpenNAS,

На основе FreeBSD 7.2 сделан FreeNAS (может выступать как в качестве target, так и initiator). [1]

Аналог FreeNAS, но на основе Linux — проект Openfiler (также может выступать как в качестве target, так и initiator). [2]

Отколовшийся от FreeNAS (после покупки последнего компанией iXsystems) форк NAS4Free на FreeBSD обновленной до версии 9.1. [3]

Терминология[править | править вики-текст]

Термионология iSCSI во многом основывается на терминологии, использующейся в SCSI:

  • initiator - тот, кто устанавливает соединение с таргетом. Чаще всего это узел (в общем случае) осуществляет ввод/вывод на блочные устройства.
  • target - экспортируемый объект. В зависимости от контекста target'ом называют или целиком экспортирующий узел, или только экспортируемый объект. Сам объект может делиться на lun'ы.
  • Портал - группа target'ов, которые анонсируются вместе. Чаще всего один узел хранения - один портал.
  • IQN - полное имя участника взаимодействия. На практике существует iqn у инициатора и у target'а.
  • endpoint - уточнённое имя ресурса, чаще всего включает в себя iqn, номер LUN'а и указание на конкретный метод доступа к нему (например, номер соединения, LUN и IP-адрес, с которого следует получать доступ к устройству).
  • LUN (Logical Unit Number) - номер объекта внутри target'а. Ближайшим аналогом является раздел диска или отдельный том.

Сравнение iSCSI таргетов[править | править вики-текст]

Преимущества[править | править вики-текст]

  • Консолидация систем хранения данных
  • Резервирование данных
  • Кластеризация серверов
  • Репликация
  • Восстановление в аварийных ситуациях
  • Географическое распределение SAN
  • QoS
  • Безопасность

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]

Источники[править | править вики-текст]

Linux iSCSI HOWTO