iSCSI, или Храните данные на другом континенте

2 июль, 2002 - 23:00Леонід Бараш Протокол iSCSI объединяет наиболее широко используемые в мире сетей и устройств хранения информации разработки. Это технология Ethernet и протокол IP -- с одной стороны, и интерфейс SCSI -- с другой. iSCSI обеспечивает универсальный доступ как к отдельным устройствам хранения, так и к сетям таких устройств (SAN) через стандартные Ethernet-базированные TCP/IP-сети. Причем сети могут быть как выделенными, так и разделяемыми с традиционными Ethernet-приложениями. Для расширения этих сетей до масштаба глобальных могут применяться стандартные IP-маршрутизаторы и Ethernet-коммутаторы. Таким образом, устраняются все ограничения по локализации систем хранения данных и обеспечивается доступ к ним из любой точки, где существует Internet. iSCSI позволит организациям более эффективно использовать такие важные приложения, как удаленные копирование дисков, резервирование и восстановление после аварий, разделение ленточных библиотек.


Концепции и функции

Напомним, что SCSI, или Small Computer System Interface, является семейством протоколов для связи с устройствами ввода/вывода, в особенности с системами хранения данных. Протокол SCSI предусматривает два типа устройств: инициатор (Initiator), или клиент, запрашивающий сервис, и исполнитель (target), или сервер, который отвечает. Компонент исполнителя, непосредственно выполняющий команду, называется логическим устройством (Logical Unit -- LU). Исполнитель является набором LU, вообще говоря, одного типа, которые прямо адресуются. Структура, с помощью которой приложение-клиент направляет команды устройству-серверу, называется блоком дескриптора команд (Command Descriptor Block -- CDB). Команда или набор связанных команд называется задачей (task). Результаты их выполнения представляются в фазе данных (data phase) и в фазе статуса (status phase). В первом случае данные передаются либо от инициатора к исполнителю (например, при записи), либо в обратном направлении (при чтении). Во втором -- исполнитель возвращает финальный статус операции, что свидетельствует о завершении команды или задачи.

iSCSI, или Храните данные на другом континенте
Рис. 1
iSCSI, или Храните данные на другом континенте
Рис. 2
На рис.1 схематично представлен стек протоколов iSCSI. Основная функция SCSI-драйвера заключается в том, чтобы по запросу, посланному приложением, сформировать CDB и направить его на уровень iSCSI. Драйвер SCSI также получает CDB от уровня iSCSI и направляет данные приложению. Уровень iSCSI инкапсулирует CDB в блоки, называемые iSCSI Protocol Data Unit (PDU), и передает их уровню TCP.

Как показано на рис. 2, SCSI-операции включают обмен командами и ответами между инициатором и исполнителем. В приведенном примере для команды Запись слой Ready to Transmit (R2T) PDU выполняет функцию верхнего уровня SCSI для управления потоком. Ответ R2T PDU посылается устройством-исполнителем, когда буфер освобождается для приема очередной порции данных. По завершении операции записи исполнитель направляет статус и признак успешного выполнения транзакции.


Адресация и присвоение имен

В соответствии с SCSI Architectural Model (SAM-2) iSCSI использует модель клиент-сервер между хостом-инициатором и исполнителем. Так как инициаторы и исполнители -- это узлы IP-сети, то клиенты и серверы являются сетевыми логическими объектами, эквивалентными IP-адресам, которые им присвоены. Протокол iSCSI реализует механизм для присвоения имен и адресов инициаторам и исполнителям. Он обеспечивает их уникальную идентификацию -- iSCSI Name, которая подобна URN (Uniform Resource Name). Вдобавок к iSCSI Name каждый инициатор и исполнитель имеет один или более адресов. Они могут изменяться, если инициаторы и исполнители перемещаются, но имя остается постоянным. Для удобочитаемости могут использоваться неуникальные псевдоимена (alias). iSCSI Name предусматривает также предоставление соответствующим административным единицам (naming authority) некоторое подмножество пространства имен. Это значит, что iSCSI Name может присваиваться производителями ОС, сетевых карт и драйверов, устройств и шлюзов, сервис-провайдерами и даже заказчиками.

iSCSI Name состоит из трех частей: обозначение типа (type designator), за которым следует название административной единицы (например компании, присваивающей iSCSI Name) и уникального идентификатора устройства, присвоенного этой административной единицей. Примерами типичных имен будут iscsi.com. acme.sn.8675309 и iscsi.com.acme.sw. hosted.4567890. Здесь iscsi является обозначением типа, а com.acme -- названием административной единицы.

Исполнители iSCSI могут идентифицироваться посредством адреса пути от одного узла к другому (URL), где путь представляет собой комбинацию DNS-имени, или IP-адреса, адреса порта TCP и iSCSI Name исполнителя. Формат iSCSI-адреса следующий: <domain-name>[:<port>]/< iSCSI Name>. iSCSI-адрес, или URL, вообще говоря, не употребляется для непосредственной связи между инициаторами и исполнителями. Он, в основном, используется в процессе обнаружения (discovery).

iSCSI, или Храните данные на другом континенте
Рис. 3
В процессе обнаружения iSCSI-устройств DNS может разрешать <domain-name> на один или несколько IP-адресов. При разрешении на несколько IP-адресов они должны быть эквивалентны с точки зрения запрашиваемых функций. Это значит, что они могут быть взаимозаменяемы, и это не должно приводить к некорректному выполнению запроса. Рис. 3 иллюстрирует схему адресации и присвоения имен.


Управление сессией

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

Инициатор начинает процесс регистрации, подсоединяясь к обусловленному и широко известному TCP-порту. В свою очередь, исполнитель все время "прослушивает" этот порт для фиксации соединения. В процессе регистрации выполняется аутентификация участвующих в обмене узлов, согласуются параметры сессии, обеспечивается безопасность и соединению присваивается метка как принадлежащему к iSCSI-сессии.

Связь между инициатором и исполнителем может осуществляться через одно или несколько соединений. Они и образуют сессию. TCP-соединения могут как добавляться, так и удаляться из сессии.

По завершении процесса регистрации iSCSI-сессия переходит в полнофункциональную фазу (Full Feature Phase). В ней инициатор может посылать SCSI-команды и данные различным логическим устройствам исполнителя, инкапсулируя их в iSCSI-сообщения, которые, в свою очередь, передаются в рамках установленной сессии. Если сессия состоит из нескольких TCP-соединений, то пары команда/ответ должны передаваться по одному и тому же соединению. Это требование называют "преданность соединению". Оно обеспечивает выполнение команд чтения или записи без дополнительных накладных расходов на отслеживание нескольких соединений. Так, команда Запись будет занимать одно соединение до тех пор, пока все данные не будут переданы. Однако несвязанные транзакции могут одновременно выполняться по своим соединениям в течение одной сессии.

Как и в обычных реализациях SCSI, сессии iSCSI и связанные с ними соединения обычно остаются открытыми, ожидая дополнительных SCSI-команд от уровня приложений. К примеру, файл-сервер в типичном случае подсоединяется к ресурсам SAN и редко разрывает соединение с ними, если только не происходит перезагрузка. Однако в среде iSCSI инициатор может потребовать для некоторых транзакций больше TCP-соединений, чем для других. Поэтому устанавливается некоторая норма, позволяющая селективно отключать установленные ранее соединения. Например, может возникнуть необходимость завершить сессию для технического обслуживания устройства.

iSCSI, или Храните данные на другом континенте
Рис. 4
Протокол iSCSI идеально подходит для подключения SAN и ленточных библиотек через сети MAN/WAN (рис. 4). Он расширит рынок сетевых устройств хранения данных, предоставляя IT-менеджерам альтернативу прямо подсоединяемым устройствам. Но что, пожалуй, более важно: протокол iSCSI позволит создать единую сетевую инфраструктуру как для корпораций, так и для операторов услуг.