Б изнес давно уже стал информационно зависимым. Можно потерять оборудование, сотрудников, деньги и многое другое, но эти ресурсы можно восстановить (пусть и в долгосрочной перспективе). А вот потеря корпоративных данных, как правило, необратима. По утверждению аналитических агентств, если компания потеряла 80% корпоративных данных, она через 2-3 года прекратит свое существование. Поскольку безопасность бизнеса - одна из опор безопасности страны, в ЕС и США уже существуют законы, обязывающие коммерческие компании, а также государственные органы внедрять у себя средства защиты информации от катастроф. Такое состояние дел ведет к возрастанию потребности в решениях, направленных на предотвращение потерь данных. Это может произойти по причине сбоя оборудования, вирусной или хакерской атаки, человеческой ошибки, природной или техногенной катастрофы, пожара и т.п. Для защиты от этих факторов необходимо организовывать резервное хранилище данных, в большинстве случаев - удаленное.В предыдущих номерах журнала уже освещалась тема резервных систем хранения данных. Поэтому здесь мы не будем описывать общие концепции, а сразу перейдем к детальному рассмотрению одной из перспективных технологий - iSCSI. По данным аналитических компаний, продуктам, которые используют iSCSI, на сегодняшний день, принадлежит 25% рынка систем хранения данных (СХД) начального уровня, а к 2010 году iSCSI будет практически безраздельно «властвовать» в сегменте СХД малого бизнеса, занимать 50% рынка в сегменте среднего бизнеса и 20-25% - крупного.

Что такое iSCSI?

iSCSI - это сквозной (end-to-end) протокол для транспорта блоков данных по сетям IP. Этот протокол используется на серверах (в терминологии iSCSI - «инициаторах»), устройствах хранения («целях») и устройствах передачи протокола («шлюзах»). iSCSI использует обычные коммутаторы и маршрутизаторы Ether net для передачи блоков данных от сервера к хранилищу. Также он позволяет использовать существующую IP-инфраструктуру для организации сетей хранения данных (SAN) без ограничения расстояния.

iSCSI строится на двух наиболее широко используемых протоколах: SCSI - протоколе обмена блоками данных между компьютером и хранилищем и IP - сетевом транспортном протоколе, наиболее широко применяющемся сегодня в корпоративных сетях Ethernet.

На рис. 1 схематично показан набор протоколов, задействованных при использовании iSCSI. Использование стандартного набора команд SCSI упрощает совместимость с существующими операционными системами и приложениями. Использование TCP/IP обеспечивает передачу команд SCSI в глобальном масштабе.

Архитектура обычного SCSI базируется на клиент-серверной модели. «Клиент», которым может быть, например, физический сервер, или рабочая станция, инициирует запросы на считывание или запись данных с исполнителя - «сервера», в роли которого, как правило, выступает СХД. Команды, которые выдает «клиент» и обрабатывает «сервер», помещаются в блок описания команды (Command Descriptor Block, CDB).

CDB - это структура, с помощью которой приложение-клиент направляет команды устройству-серверу. «Сервер» выполняет команду, а окончание ее выполнения обозначается специальным сигналом. Инкапсуляция и надежная доставка CDB-транзакций между инициаторами и исполнителями через TCP/IP сеть и есть главная задача iSCSI, причем ее приходится осуществлять в нетрадиционной для SCSI, потенциально ненадежной среде IP-сетей.

На рис. 2 изображена модель уровней протокола iSCSI, которая позволяет понять порядок инкапсуляции SCSI-команд для передачи их через физический носитель.

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

Рис. 2. Модель нижних уровней протокола iSCSI

Рис. 3 . Модель «сетевых сущностей»

іSCSI имеет четыре составляющие:

Управление именами и адресами (iSCSI Address and Naming Con-ventions);

Управление сеансом (iSCSI Ses sion Management);

обработкаошибок (iSCSI Error Handling);

Безопасность (iSCSI Security).

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

Так как iSCSI-устройства являются участниками IP-сети, они имеют индивидуальные «сетевые сущности» (Network Entity). Каждая из них может содержать один или несколько iSCSI-узлов (рис. 3).

iSCSI-узел является идентификатором SCSI-устройств, доступных через сеть. Каждый iSCSI-узел имеет уникальное имя (длиной до 255 байт), которое формируется по правилам, принятым для обозначения узлов в Интернете (например, fqn.com.ustar.storage.itdepartment.161). Такое название имеет удобную для восприятия человеком форму и может обрабатываться сервером доменных имен (DNS). Таким образом, iSCSI-имя обеспечивает корректную идентификацию iSCSI-устройства, вне зависимости от его физического местонахождения.

В то же время в процессе контроля и передачи данных между устройствами удобнее пользоваться комбинацией IP-адреса и TCP-порта, которые обеспечиваются сетевым порталом (Network Portal). iSCSI-протокол в дополнение к iSCSI-именам обеспечивает поддержку псевдонимов, которые, как правило, отображаются в системах администрирования для удобства идентификации и управления администраторами системы.

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

iSCSI-сессия состоит из фаз аутентификации (Login Phase) и фазы обмена (Full Feature Phase), которая завершается специальной командой.

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

В завершение транзакции инициатор передает и принимает последние данные, а исполнитель отправляет ответ, который подтверждает успешную передачу данных.

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

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

В связи с высокой вероятностью возникновения ошибок при передаче данных в некоторых типах IP-сетей, особенно в WAN-реализациях (где также может функционировать iSCSI), протокол предусматривает ряд мероприятий по обработке ошибок.

Чтобы обработка ошибок и восстановление после сбоев функционировали корректно, как инициатор, так и исполнитель должны иметь возможность буферизации команд до момента их подтверждения. Каждое конечное устройство должно иметь возможность выборочно восстановить утраченный или испорченный PDU в рамках транзакции для восстановления передачи данных.

Иерархия системы обработки ошибок и восстановление после сбоев в iSCSI включает:

1. На самом низком уровне - определение ошибки и восстановление данных на уровне SCSI-задачи, например, повторение передачи утраченного или поврежденного PDU.

2. На следующем уровне - в TCP-соединении, которое передает SCSI-задачу, может произойти ошибка, т.е. TCP-соединение может повредиться. В этом случае осуществляется попытка восстановить соединение.

3. И наконец, сама iSCSI-сессия может «испортиться». Терминация и восстановление сессии, как правило, не требуется, если восстановление корректно отрабатывается на других уровнях, однако может произойти обратное. Такая ситуация требует закрытия всех TCP-соединений, завершения всех задач, недовыполненных SCSI-команд и перезапуска сессии с повторной аутентификацией.

Безопасность

В связи с использованием iSCSI в сетях, где возможен несанкционированный доступ к данным, спецификация предусматривает возможность использования разнообразных методов для повышения безопасности. Такие средства шифрования, как IPSec, которые используют нижние уровни, не требуют дополнительного согласования, так как являются прозрачными для верхних уровней, в том числе для iSCSI. Для аутентификации могут использоваться разнообразные решения, например, такие как Kerberos или обмен частными ключами; в качестве репозитария ключей может использоваться iSNS-сервер.

Рис. 4. IP-сеть с использованием iSCSI-устройств

Практическое применение iSCSI

Есть три способа реализации решений на базе iSCSI-сетей хранения данных в ИТ-системах. Каждый из них имеет свои преимущества и недостатки, которые мы постараемся рассмотреть.

Самый простой способ реализации iSCSI SAN - использование хранилищ с поддержкой iSCSI. В качестве хранилища может выступать дисковый массив, ленточный накопитель, СD-, DVD-, PDD-, UDO-библиотека.

В примере, изображенном на рис. 4, каждый сервер, рабочая станция и накопитель поддерживают Ethernet-интерфейс и стек протокола iSCSI. Для организации сетевых соединений используются обычные IP-маршрутизаторы и обычные Ethernet-коммутаторы.

Если с хранилищами все понятно - здесь протокол iSCSI поддерживается на уровне «зашитого» микропроцессорного кода, то с серверами и рабочими станциями («хостами») возникает маленький нюанс. Чтобы хост мог подключиться к iSCSI-хранилищу, на нем должен быть установлен аппаратный или программный iSCSI-инициатор.

Имея в хосте сетевую карту Gigabit Ethernet и загрузив программный iSCSI-инициатор (драйвер), хост можно подключить к сети хранения данных SAN по IP-протоколу. Чтобы объединить функции сетевого контроллера и контроллера интерфейса хранилища, запрос на блок и сам блок данных должны быть помещены внутрь пакета TCP/IP. Эта операция возлагается на процессор(ы) самого хоста, что отбирает немало вычислительной мощности и значительно снижает производительность сервера. Для снижения вычислительных затрат на создание и обработку протокольного стека TCP/IP для передачи SCSI-команд был создан TCP/IP offload engine (TOE). TOE берет на себя всю работу по обработке стека TCP/IP и освобождает процессор хоста. Иными словами, TOE - не что иное, как аппаратная реализация стека TCP/IP на сетевом адаптере Ethernet.

Ethernet-адаптеры с TOE могут вполне служить инициаторами для iSCSI SAN. Однако для достижения наилучшей производительности хоста рекомендуется использовать iSCSI-адаптеры, в которых кроме TOE аппаратно реализован и уровень iSCSI, например QLogic iSCSI HBAs QLA4010 или Adaptec iSCSI HBAs 7211.

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

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

Второй способ внедрения iSCSI позволяет обойти этот «подводный камень». В этом случае возле традиционного хранилища появляется так называемый iSCSI-мост, который собственно и инкапсулирует SCSI-блоки в пакеты Ethernet (рис. 5).

Рис. 5. Подключение SCSI в IP-сеть при помощи iSCSI-моста

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

Третьим вариантом построения iSCSI-решения является применение серверов хранилищ iSCSI. Подобные продукты есть в арсенале Hitachi, Fal-conStor и других игроков ИТ-рынка. Суть варианта состоит в том, что на основе стандартного сервера с операционной системой Windows Server либо Unix создается специальный сервер хранения, включенный в IP-сеть и обеспечивающий подключенным к этой же сети хостам доступ к дисковым массивам и ленточным устройствам (рис. 6).

Рис. 6. Построение сети хранения данных с помощью серверов хранилищ iSCSI

Устройства хранения могут подключаться к серверу по различным протоколам - SCSI, FC или iSCSI. Также может быть задействована локальная дисковая емкость сервера хранения.

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

Синхронное и асинхронное зеркалирование;

Репликация на файловом и блочном уровнях;

Функция «моментальных снимков» (snapshots);

Дублирование серверов и т.д.

Недостатком варианта с применением iSCSI-серверов хранилищ является некоторая сложность их настройки, которая, однако, пропадает с приобретением опыта, а также вероятность возникновения сбоев по причине некорректной работы с ПО (человеческий фактор). Среди достоинств подхода - легкость масштабирования для крупных ИТ-систем, возможность контроля и управления большим количеством показателей, повышение надежности хранения данных.

Преимущества iSCSI

В заключение хочется отметить преимущества iSCSI перед другими технологиями организации удаленных хранилищ данных (например, FC, SCSI и т.д.). Во-первых, это высокая доступность бизнес-приложений. Множественные пути передачи IP-пакетов между серверами и хранилищами обеспечивают постоянное соединение, даже если один из компонентов сети выходит из строя. Во-вторых, защищенность данных - при низких стартовых вложениях можно создать резервное хранилище на значительном удалении от основной системы. К тому же iSCSI позволяет наращивать объем СХД или вычислительной мощности серверов без остановки приложений.

Еще одним важным моментом является возможность централизованного управления ресурсами за счет сведения разрозненных дисков и дисковых массивов в сети Ethernet в единый дисковый пул. С использованием iSCSI можно организовать резервное копирование как на локальные, так и на территориально удаленные СХД или зеркалирование на уровне тома.

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

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

Сначала пару слов о принципиальных отличиях iSCSI от иных сетевых систем хранения данных. Cети хранения данных - SAN (Storage Area Network ) предусматривают передачу данных в сети в "сыром" виде по протоколу SCSI, также, как если бы они передавались между системой и локальным диском на низком уровне. iSCSI устройства воспринимаются системой практически также, как локальные диски - перед использованием на них нужно создать разделы и отформатировать.

В тоже время привычные всем сетевые хранилища - NAS (Network Area Storage) обеспечивают доступ на уровне файловой системы, используя протоколы передачи файлов, такие как SMB или NFS.

Проще говоря: NAS - это привычные всем общие сетевые папки, SAN - подключаемые по сети диски. Из этого следует второе важное отличие. Сетевая папка может обслуживать множество клиентов. Устройство SAN может быть подключено к единственному клиенту, точно также как обычный HDD может быть подключен только к одному ПК. Исключение - кластеры, когда к одному SAN-устройству имеют доступ сразу несколько нод, в этом случае используется дополнительный уровень абстракции - кластерная файловая система, например Microsoft Cluster Shared Volumes (CSV) или VMware VMFS .

Перед тем, как приступать к практическому освоению данной технологии, следует познакомиться с принятой терминологией:

  • Инициатор iSCSI (iSCSI Initiator) - клиентская часть, направляет запросы цели iSCSI, может быть выполнена программно, в виде драйвера или аппаратно, в виде iSCSI-адаптера;
  • Цель iSCSI (iSCSI Target, таргет ) - серверная часть, принимает подключения от инициатора и предоставляет ему доступ к связанным с ним блочными устройствами - виртуальными дисками, LUN. Может быть реализован как программно, так и в виде аппаратной СХД.

Одна цель iSCSI может быть связана с несколькими блочными устройствами, которые будут доступны подключившемуся к цели инициатору. Один инициатор может быть подключен к нескольким целям и использовать все связанные с ними устройства. Одна цель также может принимать подключения от нескольких инициаторов, но каждое отдельное устройство может быть доступно только одному из инициаторов.

Еще один момент, теперь уже связанный с практической реализацией iSCSI-хранилищ. Для SAN крайне желательно выделить отдельную сеть, изолированную от сети предприятия.

Это необходимо для обеспечения достаточной пропускной способности в сети хранения данных и избежать перегрузки обычной сети iSCSI-трафиком. Также нет смысла организовывать iSCSI в сетях с пропускной способностью ниже чем 1 Гбит/сек.

В состав Windows Server 2008 R2 роль цели iSCSI не входит и для ее развертывания необходимо скачать Microsoft iSCSI Software Target . Распаковываем его и устанавливаем пакет iscsitarget_public.msi из папки x64. Установка предельно проста и мы не будем заострять на ней внимание.

После установки перейдем к консоли управления iSCSI: Пуск - Администрирование - Программная цель iSCSI . Прежде всего создадим новую цель (таргет) . Для этого щелкнем правой кнопкой на Цели iSCSI - Создать цель iSCSI .

Откроется мастер, в котором укажем имя цели и ее описание. Давайте целям осмысленные имена и не ленитесь создавать описания, чтобы потом не приходилось гадать для чего у вас создана та или иная цель.

Следующим шагом нам надо указать идентификаторы инициаторов iSCSI которым будет разрешен доступ к цели. Идентификатор IQN - это специальное имя формата iqn..: , которое является уникальным для каждого iSCSI-устройства в сети хранения данных. Где:

  • year-mo - год регистрации доменного имени;
  • reversed_domain_name -доменное имя, записанное наоборот;
  • unique_name - уникальное имя устройства, например таргет здесь будет содержать указанное вами имя, а инициатор имя хоста.

Например, в программных решениях Microsoft IQN по умолчанию имеет формат iqn.1991-05.com.microsoft:unique_name .

Чтобы узнать IQN перейдем на инициатор iSCSI, в нашем случае это сервер под управлением Windows Server 2012, но алгоритм действий будет одинаков для любых иных версий Windows. Переходим в Панель управления - Инициатор iSCSI , на предложение задать ее автоматический запуск отвечаем утвердительно:

Затем в открывшемся окне переходим на закладку Конфигурация , где находится искомый идентификатор:

Можно скопировать его и указать при настройке цели, но есть другой способ. Для этого перейдите на закладку Конечные объекты , в поле Объект введите имя сервера с установленной Программной целью iSCSI и нажмите Быстрое подключение .

Понятно, что пока мы ни к чему не подключимся, но сейчас у нас иная задача. Возвращаемся обратно на сервер цели и жмем на странице указанием идентификатора инициатора кнопку Обзор .

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

На этом создание цели завершено и мы можем создать и привязать к ней один или несколько дисков. Для этого переходим к пункту Устройства и в меню правой кнопки мыши выбираем Создать виртуальный диск .

Откроется следующий мастер, в котором указываем расположение и имя виртуального диска, обратите внимание, что указывать нужно полное имя файла, вместе с расширением .vhd .

Затем укажем желаемый размер в МБ

И цель iSCSI (таргет) к которой будет привязан данный виртуальный диск.

На этом настройка диска также будет завершена. В результате этих несложных действий мы получили настроенную цель iSCSI с привязанным к ней виртуальным диском. Теперь снова перейдем на инициатор. Можно воспользоваться быстрым подключением и автоматически присоединить диски с обнаруженных целей. Но следует помнить, что наша цель не только подключить диски, но и разделить сеть хранения данных и локальную сеть предприятия.

Поэтому переходим на закладку Обнаружение и нажимаем Обнаружить портал , затем вводим имя сервера с ролью цели iSCSI.

После чего возвращаемся на закладку Конечные объекты , выбираем обнаруженную цель, которая находится в состоянии Неактивно , и нажимаем Свойства .

В открывшемся окне в поле IP-адрес конечного портала выбираем адрес принадлежащий вашей сети хранения данных:

Возвращаемся обратно и нажимаем Подключить . Присоединенные устройства можно обнаружить в оснастке Управление дисками .

Дальнейший алгоритм работы с ними ничем не отличается от работы с обычным диском: подключаем, размечаем, форматируем.

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

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

Буквосочетание iSCSI все чаще попадает на страницы газет и проспекты ведущих производителей систем хранение данных. Загляните на ресурсы, посвященные storage, и вы обязательно его увидите. Но, просмотрев статьи и новости, вы скорее всего найдете массу абсолютно противоположных утверждений: одни преподносят iSCSI как неопровержимого лидера для сетей хранения данных уже в недалеком будущем, другие поставили на нем крест еще до его рождения.

Sun стала в оппозицию к ІP Storage

Sun стала в оппозицию к IP Storage. Sun Microsystems не будет выпускать систем хранения данных с доступом по IP. Марк Канепа, вице-президент Sun, ответственный за производство всех систем хранения данных, заявил на днях, что IP Storage был всего лишь «мечтой», сообщает Byte and Switch.

Канепа сказал, что «непрактично применять TCP/IP для организации SAN из-за большей задержки в таких сетях. Даже если у сетей хранения на основе IP есть будущее, то наступит оно через три-пять лет, а возможно, не наступит никогда. Поток от систем хранения данных не может работать поверх стека протоколов общего назначения, у него есть особые потребности. Технологические трудности внедрения TCP/IP намного более велики, чем многие думают. Именно поэтому мы в Sun делаем ставку на Fibre Channel », сказал он. До сих пор никто из производителей систем хранения данных не занимал столь четкой позиции против IP Storage. Конкуренты Sun, компании Hewlett-Packard и IBM, более или менее активно поддерживают эти технологии.

HP обещает поддержку iSCSI

«Окончательная версия новой технологии должна появиться в первом квартале 2002 года, - сообщил руководитель подразделения систем сетевого хранения HP Марк Томпсон. Корпорация намеревается представить широкий спектр продуктов, которые поддерживают стандарт, іSCSI, предназначенный для объединения систем хранения в ІP-сетях… »

В HP признают, что пользователи систем Fibre Channel чувствуют себя достаточно комфортно и большее тяготеют к модернизованной технологии FCIP, чем к іSCSI. Но, в то же время, в HP верят, что опыт работы с решениями, основанными на протоколе ІP, и в особенности с Ethernet, сделает продукты іSCSI привлекательными для многих заказчиков.

Computerworld, #35/2001: «Федеративные системы хранения»

IBM выпускает продукт на базе iSCSI

IBM TotalStorage IP Storage 200i обеспечивает прямое подключение накопителей Ethernet LAN. Эта высокоскоростная система хранения данных поддерживает новый промышленный стандарт iSCSI, что обеспечивает передачу SCSI протокола поверх IP.

Ну что ж, столь противоречивые сообщения не оставляют нам другого выбора кроме как разобраться самим и самостоятельно взвесить все «ЗА» или «ПРОТИВ».

iSCSI

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

iSCSI описывает:

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

Сразу возникает негодование, хочется все разложить по отдельным кучкам. Как говорил один мой преподаватель: «Котлеты отдельно, мухи отдельно». Дело в том, что правила доставки пакетов в IP и SCSI абсолютно противоположные. В IP пакеты доставляются получателю без соблюдения строгой последовательности, он же и восстанавливает данные, на что затрачиваются определенные ресурсы. В то же время, по спецификации SCSI, как канального интерфейса, все пакеты должны передаваться один за другим без задержки, а нарушение этого порядка приводит к потере данных. Несмотря на то, что, по мнению некоторых специалистов, эта проблема вносит неоднозначность в практическое использование технологии iSCSI, на сегодня уже реализован ряд устройств, которые подтверждают ее жизнеспособность. Инженеры, которые работали над iSCSI, смогли определенным образом решить эту проблему. Спецификация iSCSI требует увеличения размеров заголовка пакета. В заголовок включается дополнительная информация, которая значительно ускоряет сборку пакетов.

По мнению одного из болельщиков iSCSI, Хеймора, старшего системного инженера университета штата Юта, основным препятствием для распространения Ethernet как базовой технологии построения сетей хранения данных является относительно большое время задержки (близкое к 75 микросекундам), которое возникает из-за особенностей стека TCP/ІР. В High-End системах при одновременном обращении к тысячам файлов это может стать серьезной проблемой.

Специалисты, которые работают над iSCSI, осознают значение проблемы задержки. И несмотря на то, что разрабатывается масса средств для уменьшения влияния параметров, которые служат причиной задержки при обработке IP пакетов, технология iSCSI позиционируется для построения систем среднего уровня.

iSCSI развивается очень быстро. Потребность в новом стандарте ощущалась так сильно, что буквально за 14 месяцев с момента предложения по созданию iSCSI, с которым в феврале 2000 года выступила IETF, появилось достаточно много устройств, чтобы продемонстрировать возможности по их взаимодействию. В июле 2000-го был опубликован Draft 0 по iSCSI, который стал началом работ по реализации технологии. В январе 2001 года в рамках SNIA (Storage Networking Industry Association) был создан IP Storage форум, который через полгода уже насчитывал 50 членов, а в апреле этого же года был представлен продукт, который в скором времени выиграл награду «Enterprise Networking Product».

Что же такого замечательного в iSCSI, что он находит поддержку среди грандов компьютерной индустрии, не считаясь с существующими внутри стандартам противоречиями.

Некоторые из важнейших прикладных задач и функций, реализуемые с использованием систем хранения данных, это:

Задачи, которые эффективно реализуются современными методами:

    · Консолидация систем хранения данных · Резервирование данных · Кластеризация серверов · Репликация (дублирование) · Восстановление в аварийных ситуациях

Новые возможности, которые эффективно реализуются с использованием IP Storage:

    · Географическое распределение SAN · QoS · Безопасность

Вместе с этим, новые системы хранения данных, для которых iSCSI будет родным протоколом, сформируют еще массу преимуществ:

    · Обеспечивается единая технология для подсоединения систем хранения, серверов и клиентов в рамках LAN, WAN, SAN · Наличие значительного опыта индустрии в Ethernet и SCSI технологиях · Возможность значительного географического отдаления систем хранения · Возможность использовать средства управления TCP/IP сетями

Причем, для передачи данных на storage с интерфейсом iSCSI можно использовать не только носители, коммутаторы и маршрутизаторы существующих сетей LAN/WAN, но и обычные сетевые карточки на стороне клиента. Правда, при этом возникают значительные накладные расходы процессорной мощности на стороне клиента, который использует такую карточку. По утверждению разработчиков, программная реализация iSCSI может достичь скоростей среды передачи данных Gigabit Ethernet при значительной, до 100% загрузке современных CPU. В связи с чем, рекомендуется использование специальных сетевых карточек, которые будут поддерживать механизмы разгрузки CPU от обработки стека TCP. На момент написания статьи (Июнь 2002 года), такие карточки производила компания Intel.

Intel PRO/1000T IP Storage Adapter предлагается компанией Intel по цене 700USD за штуку. Это устройство содержит мощный процессор Xscale, 32M памяти и осуществляет передачу вычислений, связанных с протоколами iSCSI и TCP/IP, а также расчет контрольных сумм кадров TCP, IP на интегрированный процессор. Его быстродействие, согласно внутренним тестам компании, может достигать 500Mbit/s при 3-5% загрузке CPU host системы.

Давайте рассмотрим iSCSI повнимательней

Рисунок 1. IP сеть с использованием iSCSI устройств

В примере, изображенном на рисунке 1, каждый сервер, рабочая станция и накопитель поддерживают Ethernet интерфейс и стек протокола iSCSI. Для организации сетевых соединений используются IP маршрутизаторы и Ethernet коммутаторы.

С внедрением SAN мы получили возможность использовать SCSI протокол в сетевых инфраструктурах, обеспечивая высокоскоростную передачу данных на уровне блоков между множественными элементами сети хранения данных.

Internet Small Computer System Interface тоже обеспечивает блочный доступ к данным, но не самостоятельно, а поверх сетей TCP/IP.

Архитектура обычного SCSI базируется на «клиент»/«серверной» модели. «Клиент», например сервер, или рабочая станция, инициирует запросы на считывание или запись данных с исполнителя - «сервера», например системы хранения данных. Команды, которые выдает «клиент» и обрабатывает «сервер» помещаются в Command Descriptor Block (CDB). «Сервер» выполняет команду, а окончание ее выполнения обозначается специальным сигналом. Инкапсуляция и надежная доставка CDB транзакций между инициаторами и исполнителями через TCP/IP сеть и есть главная задача iSCSI, причем ее приходится осуществлять в нетрадиционной для SCSI, потенциально ненадежной среде IP сетей.

Перед вами модель уровней протокола iSCSI, которая дает возможность понять порядок инкапсуляции SCSI команд для передачи их через физический носитель.


Рисунок 2. Модель нижних уровней протокола iSCSI

iSCSI протокол осуществляет контроль передачи блоков данных и обеспечивает подтверждение достоверности завершения операции ввода/вывода. Что, в свою очередь, обеспечивается через одно или несколько TCP соединений.

іSCSI имеет четыре составляющие:

  • Управление именами и адресами (iSCSI Address and Naming Conventions).
  • Управление сеансом (iSCSI Session Management).
  • Обработка ошибок (iSCSI Error Handling).
  • Безопасность (iSCSI Security).

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

Так как iSCSI устройства являются участниками IP сети, они имеют индивидуальные Сетевые Сущности (Network Entity). Сетевая Сущность может содержать одних или несколько iSCSI Узлов.


Рисунок 3. Модель сетевых сущностей

iSCSI узел является идентификатором SCSI устройств (в Сетевой Сущности), доступных через сеть. Каждый iSCSI узел имеет уникальное iSCSI имя (длиной до 255 байт), которое формируется по правилам, принятым для обозначения узлов в Internet. Например: «fqn.com.ustar.storage.itdepartment.161». Такое название имеет удобную для восприятия человеком форму и может обрабатываться Сервером Доменных Имен (DNS). Таким образом, iSCSI имя обеспечивает корректную идентификацию iSCSI устройства вне зависимости от его физического местонахождения. В то же время, в процессе контроля и передачи данных между устройствами удобнее пользоваться комбинацией IP адреса и TCP порта, которые обеспечиваются Сетевым порталом (Network Portal). iSCSI протокол дополнительно к iSCSI именам обеспечивает поддержку псевдонимов, которые, как правило, отображаются в системах администрирования для удобства идентификации и управления администраторами системы.

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

iSCSI сессия состоит из фаз аутентификации (Login Phase) и фазы обмена (Full Feature Phase), которая звершается специальной командой.

Фаза аутентификации iSCSI аналогична процессу Fibre Channel Port Login (PLOGI). Она используется для того, чтобы согласовать разнообразные параметры между двумя Сетевыми Сущностями и подтвердить право доступа инициатора. Если фаза аутентификации iSCSI завершается успешно, исполнитель подтверждает login инициатору, иначе логин не подтверждается, а TCP соединение закрывается.

Как только login подтвердится, iSCSI сессия переходит к фазе обмена. Если было установлено более одного соединения TCP, iSCSI требует, чтобы каждая пара команда/ответ проходила через одно TCP соединение. Такая процедура гарантирует, что каждая отдельная команда считывания или записи будет осуществляться без необходимости дополнительно отслеживать каждый запрос по поводу его прохождения по разным потокам. Однако разные транзакции могут одновременно передаваться через разные TCP соединения в рамках одной сессии.


Рисунок 4. Пример iSCSI Write

В завершение транзакции инициатор передает/принимает последние данные, а исполнитель отправляет ответ, который подтверждает успешную передачу данных.

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

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

В связи с высокой вероятностью возникновения ошибок при передаче данных в некоторых типах IP сетей, в особенности WAN реализациях, в которых может функционировать iSCSI, протокол предусматривает массу мероприятий по обработке ошибок.

Для того, чтобы обработка ошибок и восстановление после сбоев функционировали корректно, как инициатор, так и исполнитель должны иметь возможность буферизации команд до момента их подтверждения. Каждое конечное устройство должно иметь возможность выборочно восстановить утраченный или испорченный PDU в рамках транзакции для восстановления передачи данных.

Иерархия системы обработки ошибок и восстановление после сбоев в iSCSI включает:

  1. На наиболее низком уровне - определение ошибки и восстановление данных на уровне SCSI задачи, например, повторение передачи утраченного или поврежденного PDU.
  2. На следующем уровне - в TCP соединении, которое передает SCSI задачу, может произойти ошибка, а именно, TCP соединение может повредиться. В этом случае осуществляется попытка восстановить соединение.
  3. И наконец, сама iSCSI сессия может испортиться. Терминация и восстановление сессии, как правило, не требуется, если восстановление корректно отрабатывается на других уровнях, однако может произойти обратное. Такая ситуация требует закрытия всех TCP соединений, завершения всех задач, недовыполненных SCSI команд и перезапуска сессии через повторный login.

Безопасность

В связи с использованием iSCSI в сетях, где возможен несанкционированный доступ к данным, спецификация предусматривает возможность использования разнообразных методов для повышения безопасности. Такие средства шифрования, как IPSec, которые используют нижние уровни, не требуют дополнительного согласования, так как являются прозрачными для верхних уровней, в том числе для iSCSI. Для аутентификации могут использоваться разнообразные решения, например такие, как Kerberos, или обмен Частными Ключами, в качестве репозитария ключей может использоваться iSNS сервер.

Другие (iFCP, FCIP)

В рамках работы над сетевыми технологиями хранения данных в Internet Engineering Task Force (IETF) была создана рабочая группа IP Storage (IPS) по направлениям:

  • iSCSI (Internet Small Computer Systems Interface)
  • FCIP (Fibre Channel over TCP/IP)
  • iFCP (Internet Fibre Channel Protocol)
  • iSNS (Internet Storage Name Service)

А также, как уже отмечалось, в январе 2001 в рамках SNIA (Storage Networking Industry Association) был организован IP Storage форум. Сегодня форум включает три подгруппы: FCIP, iFCP, iSCSI. Каждая из которых представляет протокол, который находится под протекцией IETF.

FCIP - созданный на базе TCP/IP туннельный протокол, функцией которого является соединение географически отдаленных FC SAN без какого-либо влияния на FC и IP протоколы.

iFCP - созданный на базе TCP/IP протокол для соединения FC систем хранения данных FC сетей хранение данных, используя IP инфраструктуру совместно или вместо FC коммутационных и маршрутизирующих элементов.

iSCSI - рассматривается выше…

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


Рисунок 5. Блок-схема IP Storage сетей

Fibre Channel over IP

Наименее революционным из трех названых выше является протокол Fibre Channel over IP. Он не вносит практически никаких изменений в структуру SAN и в организацию самых систем хранения данных. Главная идея этого протокола - реализация возможности объединения географически отдаленных сетей хранения данных.

Вот так выглядит стек протокола FCIP:


Рисунок 6. Нижние уровни протокола FCIP

FCIP помогает эффективно решить задачу территориального распределения, и объединения SAN на больших расстояниях. Его основными преимуществами является то, что этот протокол полностью прозрачен для существующих FC SAN сетей и ориентирован на использование инфраструктуры современных MAN/WAN сетей. Таким образом, для обеспечения новой функциональности пользователям, которые ищут возможности связать между собою географически отдаленные FC SAN, будет нужен всего лишь FCIP шлюз и подключение к MAN/WAN сети. Географически распределенная SAN, построенная с помощью FCIP, воспринимается SAN устройствами как обычная FC сеть, а для MAN/WAN сети, к которой она подключенная, она представляет обычный IP трафик.

Draft стандарт рабочей группы IETF IPS - FCIP определяет:

  • правила инкапсуляции FC кадров для передачи через TCP/IP;
  • правила использования инкапсуляции для создания виртуальной связи между FC устройствами и элементами FC сети;
  • окружение TCP/IP для поддержки создания виртуальной связи и обеспечение тунелирования FC трафика через IP сеть, включая безопасность, целостность данных и вопрос скорости передачи данных.

Среди прикладных задач, которые можно качественно решить с использованием FCIP протокола: удаленное резервирование, восстановление данных и общий доступ к данным. При использовании высокоскоростных MAN/WAN коммуникаций можно также с успехом применять: синхронное дублирование данных и общий распределенный доступ к системам хранения данных.

iFCP

Internet Fibre Channel Protocol - это протокол, который обеспечивает передачу FC трафика поверх TCP/IP транспорта между шлюзами iFCP. В этом протоколе, транспортный уровень FC замещается транспортом IP сети, трафик между FC устройствами маршрутизируется и коммутируется средствами TCP/IP. Протокол iFCP предоставляет возможность подключать существующие FC системы хранения данных к IP сети с поддержкой сетевых сервисов, которые нужны этим устройствам.

Стек протокола iFCP имеет такой вид:


Рисунок 7. Нижние уровни протокола iFCP

iFCP, согласно спецификации:

  • накладывает кадры FC для их транспортирования на предварительно определенное TCP соединение;
  • FC сервисы передачи сообщений и маршрутизации перекрываются в шлюзовом устройстве iFCP, таким образом, сетевые структуры и компоненты FC не сливаются в общую FC SAN, а управляются средствами TCP/IP;
  • динамично создает IP туннели для FC кадров

Важной особенностью iFCP является то, что этот протокол обеспечивает FC device-to-device связь (связь между устройствами) через IP сеть, которая является значительно более гибкой схемой, если сравнивать ее со связью SAN-to-SAN. Так, например, если iFCP имеет TCP связь между парами портов N_Port двух FC устройств, такая связь может иметь свой собственный уровень QoS, который будет отличаться от уровня QoS другой пары FC устройств.

Заключение

Подводя итоги, хочется выразить свою твёрдую уверенность в том, что Fibre Channel в ближайшее время никуда не исчезнет, рынок FC SAN будет расти и развиваться. В то же время, IP Storage протоколы предоставят возможность эффективно использовать сети хранения данных в тех прикладных задачах, для которых FC не может обеспечить эффективной реализации. Используя протоколы FCIP и iFCP, сети хранения данных станут географически распределенными. А внедрение iSCSI в свою очередь, даст возможность использования преимуществ SAN в сферах, которые до сих пор остаются нереализованными, или реализуются неэффективно в рамках распространенных сегодня технологий.

P.S.

Бурное развитие сетей хранения данных стало основой формирования концепции World Wide Strorage Area Network. WWSAN - всемирная сеть хранения данных и предусматривает создание инфраструктуры, которая обеспечит высокоскоростной доступ и хранение данных, распределенных по всему миру. Концепция очень близкая к существующей сегодня WWW, но имеет в своей основе другие сервисы. Одним из оригинальных примеров является обслуживание «менеджера», который ездит по всему миру с презентациями. WWWSAN предусматривает прозрачное перемещение «мобильных» данных вслед за персональным перемещением их собственника по всему миру. Таким образом, где бы ни находился «менеджер», он всегда будет иметь возможность получить высокоскоростной доступ к нужным ему данным, работа с которыми не будет требовать сложной, временами очень неэффективной синхронизации через WWW.

Можно с уверенностью утверждать, что концепция построения всемирной сети хранения данных идеально вписывается в развитие современных технологий IP Storage.

Термины и сокращения:

  • SAN - Storage Area Network, Сеть Хранения Данных
  • CDB - command descriptor block, протокол дескриптора (описания) команды.
  • PDU - Protocol Data Unit протокольная единица обмена, модуль данных протокола.
  • QoS - сокр. от Quality of Service качество и класс предоставляемых услуг передачи данных (обычно описывает сеть в терминах задержки и полосы сигнала).
  • SNIA - Storage Networking Industry Association, ассоциация индустрии сетевых систем хранения данных.
  • DNS - Domain Name Server, сервер доменных имен.
  • PLOGI - Fibre Channel Port Login.
  • iSCSI - Internet Small Computer Systems Interface
  • FCIP - Fibre Channel over TCP/IP
  • iFCP - Internet Fibre Channel Protocol
  • iSNS - Internet Storage Name Service
  • WWSAN - World Wide Strorage Area Network, всемирная сеть хранения данных

Литература:

  • «SAN после Fibre Channel», - Лукас Мериан. 12.02.2002: Computerworld, #05/2002;
  • IP Storage Tutorial, - SNIA;
  • iSCSI Technical White Paper, - SNIA;
  • Internet Fibre Channel Protocol (iFCP) - A Technical Overview, - SNIA;
  • Storage Forum, - HP EMEA, 12-13 июня 2002 года.

По прошествии пяти лет работы с сетями хранения данных Fibre Channel (SAN), я был сильно озадачен появлением iSCSI: тем, что делает этот протокол и, что более важно, как он работает и как можно использовать iSCSI для решения реальных проблем пользователей. Итак, после нескольких напряженных месяцев общения со многими специалистами по этой теме, я представляю в этой статье несколько собственных взглядов на iSCSI.

Что же такое, на самом деле, iSCSI?

iSCSI посылает SCSI команды в IP пакетах. Более подробно - iSCSI создан как протокол для инициатора хранилищ (обычно сервер), с целью посылать SCSI команды исполнителю (обычно лента или диск) через IP.

Иные протоколы: FCIP - посылает блоки Fibre Channel через IP, по существу расширяя соединения Fibre Channel; на самом деле не имеет никакого отношения к SCSI. С другой стороны iFCP - обеспечивает преобразование (mapping) FCP (последовательный SCSI через Fibre Channel) в и из IP. Другими словами, он предлагает протокол маршрутизации между сетями Fibre Channel (fabric), позволяющий осуществлять соединение через IP.

Иначе говоря, iSCSI - это протокол SCSI через IP, связывающий сервер с хранилищем данных. Другие протоколы обеспечивают соединение Fibre Channel - Fibre Channel с различной степенью интеллектуальности.

Каким образом устройства iSCSI находят друг друга?

В случае обычных SCSI соединений и петель Fibre Channel, способ обнаружения устройств достаточно примитивен. Для сетей Fibre Channel (fabric) существует необходимый сервис, называемый сервер простых доменных имен (Simple Name Server), или просто - сервер доменных имен, работающий с сотнями или тысячами устройств. Но в IP, теоретически, может быть несколько миллионов устройств.

В настоящее время в мире IP используется два механизма обнаружения устройств iSCSI. Первый - SLP (service locator protocol) - протокол семейства TCP/IP, позволяющий осуществлять автоматическую настройку различных ресурсов. Этот протокол обнаружения сервисов уже существует в мире IP некоторое время. Однако недавно многие производители, включая Microsoft, стали разрабатывать новый протокол -- Internet Simple Name Server. Попросту говоря, за основу были приняты принципы сервера простых доменных имен для Fibre Channel и затем увеличены до той степени, которая позволяет справляться с размерами IP сетей, в то же время не теряя особенностей работы с хранилищами, в отличие от SLP.

Как можно использовать iSCSI?

Существует три основных способа использования iSCSI:
  1. Специализированный iSCSI сервер, обращающийся к специализированному iSCSI хранилищу.
  2. Специализированный iSCSI сервер, обращающийся к хранилищу, подсоединенному к Fibre Channel, через маршрутизатор iSCSI-to-Fibre Channel.
  3. Fibre Channel сервер, обращающийся к iSCSI хранилищу через маршрутизатор Fibre-Channel-to-iSCSI.
Безусловно, в некоторых случаях Fibre Channel хранилище обращается к другому Fibre Channel хранилищу (например, для копирования диска или внесерверного резервного копирования) и устройство хранения данных iSCSI также может обращаться к каждому из них.

Итак, что наиболее вероятно и/или практично для использования? Для ответа на этот вопрос, нужно немного отступить назад и вспомнить, что сетевое хранение данных требует гибкости, использования продуктов различным образом. Сегодня, использование iSCSI в серверах - сравнительно ново, но просто, с учетом поддержки Microsoft для Windows Server 2000 и 2003.

По этой причине, одним из способов использования iSCSI является использование iSCSI серверов, присоединенных к существующему хранилищу Fibre Channel через маршрутизатор iSCSI-to-Fibre Channel, вероятнее всего в Fibre Channel SAN. Это означает, что те же порты тех же массивов хранения могут обеспечивать сервис по хранению данных как для серверов Fibre Channel, так и для серверов iSCSI. Посему это позволяет вам получить больше преимуществ от использования хранилищ SAN и Fibre Channel, чем вы имеете, и вы можете сделать это прямой сейчас - рынок предлагает все необходимые продукты.

По моим предположениям подобные события произойдут и на рынке NAS, на самом деле они уже происходят. Поскольку NAS устройства уже подключают диски к IP-сетям, разделяя сервисы через сетевую файловую систему (NFS) и/или общий протокол доступа к файлам интернет (CIFS), то для NAS достаточно просто передавать данные на уровне блока через те же порты с помощью iSCSI, что опять позволяет вам использовать существующие решения хранения данных по-новому.

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

Кто будет использовать iSCSI?

Как эксперт, проработавший несколько лет в области Fibre Channel, я, к сожалению, должен указать миру Fibre Channel, что iSCSI может работать на скорости физического соединения (wire speed) и определенно может работать так же быстро, как и любой нормальный сервер, выполняющий задачи любого нормального приложения. Для IP сообщества необходимо отметить значительную распространенность Fibre Channel, особенно сравнивая их количество с количеством 1 Гб сетевых портов, нежели с количеством остальных сетевых портов. Сообществу Fibre Channel необходимо отметить, что, несмотря на то, что множество хранилищ и даже значительное количество мощных серверов подключены к Fibre Channel, существует некоторое количество неподключенных Unix серверов и огромное количество Intel серверов, не работающих с Fibre Channel.

Итак, iSCSI может работать на каждого, но, возможно, наиболее большой потенциальный рынок представляют собой серверы Intel, а также высокоплотные и сверхтонкие серверы (Intel или иные). Кроме того, iSCSI иногда может быть использован для высокопроизводительных серверов, в случае удаленых офисов для обращения к центральному центру данных через SAN и в иных случаях, где пока еще рано использовать Fibre Channel, в конце концов, существует еще много неподключенных к сети серверов и хранилищ данных.

NIC, TOE и HBA: В каких случаях их нужно использовать?

В заключение, существует три подхода к подключению сервера:
  1. Стандартная интерфейсная карта (NIC) с драйвером iSCSI
  2. TOE (TCP Offload Engine - механизмы разгрузки TCP) NIC с драйвером iSCSI
  3. Адаптеры шины узла HBA (Host Bus Adapter), созданные для iSCSI традиционными производителями Fibre Channel адаптеров.
В каких случаях использовать каждый из них? Интересный вопрос. Первоначальное допущение состоит в том, что, чем большая производительность вам нужна, тем более вероятно, что вместо стандартной интерфейсной карты (NIC) вы будете использовать карту TOE или адаптер шины узла, что, конечно же, будет дороже. Существует иная точка зрения, предполагающая, что некоторые высокопроизводительные серверы имеют достаточное количество резервных циклов синхронизации (clock cycles), так почему бы не сэкономить деньги и не использовать дешевую сетевую карту.

Ключевой момент здесь состоит в том, что в отличие от Fibre Channel адаптеров, ценовые рамки iSCSI варьируются от низкой (бесплатно) до высокой производительности (акселераторы) и таким образом могут быть подобраны в соответствие с требованиями приложений. Также нагрузочная способность по выходу (fan-out или oversubscription) позволяет использовать более экономичные порты Ethernet (как быстрые, так и GE) вместо портов специализированных FC коммутаторов, что еще более снижает издержки. С картами iSCSI TOE, стоимостью 300 долларов или меньше, издержки присоединения к хосту значительно ниже, чем с FC, даже для производительности TOE.

Поскольку FC может работать на 2Gbps, использование Fibre Channel более предпочтительно для высокопроизводительных серверов (2 Гб Ethernet не существует), хотя, честно говоря, не много существует серверов, использующих такую пропускную способность, даже на Fibre Channel. Безусловно, с точки зрения хранилищ использование 2Gbps более вероятно до тех пор, пока мы не увидели 10 Гб FC или даже 10 Гб Ethernet/iSCSI портов. iSCSI открывает двери для сотен и тысяч серверов, особенно систем Intel, многие из которых могут быть менее требовательными, и огромное количество которых еще только будет приносить выгоды от использования сетевого хранения.

Только время покажет, что именно случится, хотя в одном можно быть уверенным - это будет очень интересный год для сетевого хранения и для iSCSI.

Продолжая тему полезного использования старого серверного оборудования, на этот раз поговорим об использовании сервера модели IBM System x3200 4362 в качестве сетевого хранилища, доступного по протоколу iSCSI в качестве iSCSI Target . В мы уже рассматривали такой сервер в роли хранилища резервных копий виртуальных машин с программной дедупликацией от Quadstor . Однако в нашем случае ситуация усугубилась тем, что на некоторых удалённых площадках, где была развёрнута , виртуальные машины, подвергавшиеся резервному копированию, со временем получили дополнительный диск под хранение контента для точки распространения SCCM . А, как известно, содержимое дисков, которые используются под распространение контента в SCCM может временами очень активно меняться (загружаются новые обновления , удаляются просроченные обновления, загружается какое-либо ПО для развёртывания и т.п.). Поэтому, учитывая то обстоятельство, что используемое ПО Veeam Backup Free Edition не позволяет исключать из резервной копии виртуальных машины отдельные виртуальные диски, принадлежащие этой ВМ, пришлось решать вопрос об увеличении дискового пространства на этих самых серверах IBM. Параллельно встал вопрос о полезности дедупликации, которая в случае часто меняющееся контента теряет свой КПД.

"Вишенкой на торте" в описанной ситуации стало то, что в сервере, который используется в нашем случае в качестве iSCSI Target (из реализации Quadstor), очень скромная дисковая корзина – всего 4 слота SAS/SATA форм-фактора 3.5", два из которых заняты под хостовую ОС Linux.

Здесь мы рассмотрим один из возможных вариантов решения совокупности описанных проблем и ограничений, который заключается в замене полноценной инсталляции ОС Linux на загружаемый с USB-накопителя и работающий в оперативной памяти специализированный Linux-дистрибутив проекта Enterprise Storage OS (ESOS ). По своей сути ESOS это оптимизированное под работу в ОЗУ современное Linux-ядро с интегрированным ПО проекта , пример использования которого, мы уже .

Общий план мероприятий будет выглядеть так:

  • Убираем из дисковой корзины диски малой ёмкости, на которых установлена хостовая ОС, и ставим на это место диски большей ёмкости (все диски в корзине станут одинаковой ёмкости)
  • На уровне аппаратного RAID-контроллера определяем каждый из четырёх дисков, подключённых к дисковой корзине, как самостоятельное устройство.
  • Подготавливаем загрузочный USB-накопитель с ESOS
  • Загружаем сервер с ESOS и создаём программный RAID-массив из всех дисков корзины.
  • Конфигурируем в ESOS iSCSI Target и подключаем диск на стороне сервера iSCSI Initiator
  • Настраиваем дополнительное сетевое подключение между серверами и включаем Multipath
Конфигурация серверов

В нашем примере будет рассмотрено построение простейшей конфигурации с использование iSCSI из двух серверов, один из которых выполняет роль цели iSCSI Target на базе ESOS v 1.3.5 , а другой выполняет роль хоста-инициатора iSCSI Initiator на базе Windows Server 2012 R2 . Для улучшения доступности и производительности между целью и хостом-инициатором будет организовано многопутевое подключение (multi-path ). Для отделения трафика iSCSI от трафика управления серверами в каждый сервер установлен дополнительный двух-портовый сетевой адаптер.

1 ) Сервер под роль iSCSI Target (KOM-AD01-ESOS01 )

Сервер модели IBM System x3200 4362 с дисковой корзиной на 4 диска LFF HDD SAS/SATA и дополнительно установленным сетевым адаптером HP NC380T PCI Express Dual Port Multifunction Gigabit Server Adapter (394795-B21). На этом сервере будет выполняться загружаемая с USB-накопителя система ESOS. Все 4 диска из дисковой корзины сервера будут использованы в ESOS для организации программного RAID-массива, который в свою очередь будет презентован на хост-инициатор.

2 ) Сервер под роль iSCSI Initiator (KOM-AD01-VM01 )

Сервер модели HP ProLiant DL380 G5 , выполняющий роль хоста виртуализации Hyper-V на базе ОС Windows Server 2012 R2 Standard . Помимо базовой комплектации в сервер дополнительно установлен сетевой адаптер HP NC380T PCI Express Dual Port Multifunction Gigabit Server Adapter (394795-B21). Подключаемый к данному серверу с сервера ESOS по протоколу iSCSI диск будет использоваться под задачи резервного копирования виртуальных машин Hyper-V.

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

Конфигурация RAID-контроллера на сервере IBM

Безотносительно используемой в нашем случае модели сервера и RAID-контроллера, можно сказать, что использование дистрибутива ESOS, не требующего для своей работы выделенного диска, в любой дисковой конфигурации позволит использовать под полезный дисковый объём все ресурсы дисковой корзины. В некоторых ситуациях этот аргумент может иметь существенное значение.

В нашем примере в дисковую корзину установлено 4 одинаковых диска SATA 7200 1TB.

Для того, чтобы отвязать себя от весьма скромных возможностей аппаратного RAID-контроллера, которым оснащён наш сервер, и в дальнейшем воспользоваться возможностями построения программного RAID-массива на базе ESOS, нам потребуется, чтобы для ESOS каждый диск выглядел, как отдельное физическое устройство. Поэтому во встроенной утилите управления RAID-контроллером удаляем все имеющиеся логические RAID-диски, чтобы каждый диск был представлен как отдельное устройство.

Некоторые RAID-контроллеры, например HP Smart Array, не позволяют транслировать подключённые диски, как самостоятельные дисковые устройства. В таких случаях потребуется создать отдельный том RAID-0 для каждого отдельно взятого диска. В нашем случае всё проще, так как установленный в нашем сервере контроллер LSI Logic SAS1064ET довольно примитивен и показывает все диски, как отдельные устройства, если эти диски не включены в аппаратный RAID-массив.

Подготовка загрузочного USB-накопителя ESOS

Загружаем последнюю актуальную версию ESOS стабильной ветки (branch 1.x.x) со страницы проекта ESOS - Package Downloads . На этой же странице можно найти описание других веток ESOS (master – разрабатываемая и 0.1.x - устаревшая).

В процессе написания этой статьи использовалась версия 1.3.5 (25.01.2018 ), доступная по ссылке esos-1.3.5.zip . К моменту публикации мне уже удалось поработать с более новой версией 1.3.6 (12.04.2018).

Так как ESOS, это ориентированная на ОЗУ система, запускаться она будет с подключаемого через обычный USB-порт внешнего накопителя. То есть нам потребуется USB-накопитель размером от 4GB и более. Если Вы планируете использовать ветку master branch, то для успешного обновления между версиями, согласно рекомендаций документа Upgrading , на USB-накопителе может потребоваться до 5GB дополнительного пространства. В нашем случае для ESOS успешно использовались накопители разной степени "подвальности" размером от 8GB и больше.

Учётные данные, используемые по умолчанию:

  • Имя пользователя: root
  • Пароль: esos

При входе в систему автоматически запускается специальная оболочка Text-based User Interface (TUI ), максимально упрощающая работу с системой. В верхней области TUI имеется основное функциональное меню, которое позволяет выполнять все основные задачи по конфигурации сервера в качестве хранилища для сетей SAN.

Первоочередными задачами начальной настройки являются смена стандартного пароля пользователя root и настройка сети, для возможности удалённой работы с системой.

Переходим в пункты меню System > Change Password и задаём новый пароль для пользователя root .

Затем перейдём в System > Network Settings и выберем пункт настройки основных параметров сети General Network Settings

В открывшейся форме укажем имя хоста, имя DNS-домена, IP адрес шлюза по умолчанию и адреса DNS-серверов.

После изменения сетевых настроек, ESOS будет предлагать перезагрузку службы сети, для вступления внесённых изменения в силу. Пока мы не произвели всех минимальных настроек сети, можем отказаться от рестарта службы сети.

Снова вернёмся в System > Network Settings , выберем сетевой адаптер, который будет использоваться для удалённого управления ESOS и настроим параметры IP. В нашем примере используется статическая конфигурация и интерфейсу управления ESOS задан IP адрес 10.1.2.201/24 . Маску сети и адрес широковещания, как я понял, указывать обязательно, иначе при сохранении настроек могут возникать ошибки.

После сохранения сделанных изменений мы снова получим вопрос о перезагрузке сети. Теперь на этот вопрос ответим утвердительно.

Сеть будет перезапущена и, в случае успешного применения заданных настроек, у нас появится возможность удалённого подключения к ESOS по протоколу SSH.

В рамках этой заметки, мы пропускаем прочие настройки, имеющиеся в ESOS, такие как настройка времени, конфигурация отсылки почты, управление дополнительными пользователями и т.д. Вместо этого мы сосредоточимся лишь на тех моментах, которые имеют значение в контексте нашей задачи. Тем не менее, прежде чем подключаться к нашему серверу ESOS по протоколу SSH, мне хочется сделать маленькое косметическое отступление относительно цветовой схемы TUI.

В интерфейсе TUI ESOS есть две цветовых схемы – стандартная светлая, выдержанная в голубых и бирюзовых тонах, что на скриншотах выше, и альтернативная - тёмная, выдержанная в лучших традициях "подземелья со свечкой". Ни тот ни другой вариант, на мой взгляд, удачными не являются, так как при удалённом подключении к консоли сервера при пониженной цветопередаче (например при подключении через функцию ), в некоторых местах TUI наблюдается эффект сливающегося с фоном текста. А если подключаться к TUI ESOS SSH-клиентом PuTTy с Windows-системы, то стандартные цветовые схемы вообще превращаются, на мой взгляд, во что-то "кислотное".

Так как работать с ESOS мы будем в основном конечно же с использованием удалённого SSH подключения, то, в частности, для клиента PuTTy есть простое решение – использование настраиваемых цветовых схем на стороне SSH-клиента на любой вкус и цвет. Примеры такой настройки мы рассматривали ранее в заметке . Далее, для работы с ESOS через SSH мы будем использовать схему PuTTy – Twilight .

Создание программного RAID-массива в ESOS

Завершив первичную базовую настройку ESOS, переходим к конфигурации дисковой системы сервера. Выполним создание программного RAID-массива (реализовано на базе Linux Software RAID /mdraid ) из 4 имеющихся в нашем распоряжении дисков. Для этого перейдём в меню Software RAID > Add Array

В перечне доступных для включения в программный RAID блочных устройств отметим диски, из которых будем создавать RAID-массив.

Выбрав диски нажмём Enter . Откроется экран настройки RAID-массива. Присвоим массиву имя в традициях mdraid , например md0 . Выберем уровень RAID (в нашем случае это RAID5) и размер блока. В нашем случае массив собирается под задачи резервного копирования больших файлов дисков виртуальных машин, поэтому размер блока мы выбрали самый большой.

После нажатия кнопки OK будет запущена процедура инициализации RAID-массива. Переходим в меню навигации в Software RAID > Linux MD Status и проверяем статус созданного RAID-массива.

Здесь мы можем дождаться полного завершения построения RAID-массива, либо можно продолжить настройку нашего сервера, так как фактически дисковая ёмкость массива нам уже доступна.

Конфигурация iSCSI Target

Чтобы созданную нами дисковую ёмкость RAID-массива можно было презентовать на хост виртуализации по сети по протоколу iSCSI, на сервере ESOS нужно создать iSCSI Target . Для этого а меню навигации перейдём в Targets > Add iSCSI Target . В форме создания цели укажем имя iSCSI Qualified Name (IQN ).

В нашем случае использовано предлагаемое по умолчанию имя в формате iqn.2018-03.esos.<имя сервера>: .Единственное, что я изменил в имени – убрал двоеточие в конце имени.

После сохранения информация о цели iSCSI Target появится на главном экране ESOS, но данная цель будет находится в выключенном состоянии.

Чтобы активировать цель, перейдём в меню навигации в Targets > Enable /Disable Target , из списка целей выберем только что созданную нами цель и поменяем в её свойствах Disabled на Enabled .

Убедимся в том, что на главном экране TUI информация о состоянии цели изменилась.

Из перечня режимов трансляции устройств, описание которых можно найти в документе 36_Devices_and_Mappings - SCST I/O Modes , выбираем интересующий нас режим. В нашем примере используется режим vdisk_blockio , который обеспечивает прямой доступ к блочным устройствам и исключает использование промежуточных механизмов кеширования Linux.

После выбора режима откроется окно выбора возможных для этого режима блочных устройств. Выбираем наш RAID-массив.

После этого откроется форма настройки параметров SCST для виртуального блочного устройства vdisk_blockio . Укажем любое короткое и понятное нам имя устройства. Это имя будет в дальнейшем отображаться на стороне хоста виртуализации, выполняющего роль iSCSI Initiator, в диспетчере устройств. Поэтому в качестве имени я использовал сокращённое имя хоста и RAID-устройства - ESOS01-MD0 . Остальные параметры можно оставить в значениях по умолчанию.

Сохраняем настройки виртуального блочного устройства и переходим к описанию хостов, которым разрешено подключаться к созданной нами цели iSCSI Target. Но прежде чем описать хосты, необходимо создать группу хостов. Переходим в меню Hosts > Add Group

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

Задаём любое имя группы хостов, например Group1 , и жмём Enter

Итак, группа хостов создана и привязана к цели iSCSI Target. Теперь нам нужно описать каждый хост, который будет выступать в качестве iSCSI Initiator с назначением этого хоста на созданную группу хостов. В нашем случае такой хост будет всего один – наш хост виртуализации Hyper-V на базе ОС Windows Server 2012 R2 .

Прежде чем добавить в ESOS хост-инициатор, выясним его имя Initiator Name на нашем хосте виртуализации. Найти (и при желании изменить) это имя можно в Панели управления Windows Server, вызвав апплет iSCSI Initiator и открыв вкладку Configuration

Как видим, в нашем случае имя хоста-инициатора - iqn.1991-05.com.microsoft:kom-ad01-vm01.holding.com .

Возвращаемся в TUI ESOS и добавляем хост-инициатор в меню Hosts > Add Initiator

При этом нас спросят к какой цели SCST Target относится добавляемый хост. Выбираем единственную ранее созданную и включённую нами цель.

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

И наконец вводим IQN хоста-инициатора, которое мы выяснили ранее, и жмём Enter

Итак, на данном этапе в ESOS мы уже имеем созданную цель SCST (в нашем случае iSCSI Target), имеем виртуальное блочное устройство SCST (транслируется программный RAID-массив), нами описана группа хостов и к этой группе привязан хост-инициатор (iSCSI Initiator). Теперь нам только остаётся примапить виртуальное блочное устройство SCST к группе хостов. Для этого переходим в меню навигации в Devices > Map to Host Group .

Выбираем виртуальное блочное устройство SCST.

Выбираем цель SCST.

Выбираем группу хостов, в которую был включен хост-инициатор.

Далее откроется форма настройки LUN -а, который будет транслироваться в сеть. Укажем номер LUN-а (по умолчанию первому транслируемому LUN-у присваивается номер 0 ) и сохраним настройки, нажав ОК .

Посмотреть итоговую конфигурацию трансляции виртуальных устройств SCST можем перейдя в меню Devices > LUN /Group Layout

Теперь определимся с отделением сетевого трафика iSCSI от трафика управления самим сервером ESOS. Сделаем так, чтобы полностью разделить эти виды трафика по разным сетевым интерфейсам.

Для этого настроим на стороне сервера ESOS и на стороне клиента iSCSI Initiator отдельные сетевые интерфейсы с IP-адресацией отличной от адресации, используемой для управления серверами. Например, в нашем случае для управления серверами используется сеть 10.1.2.0/24 , поэтому для отделения трафика iSCSI мы используем небольшую выделенную подсеть на 6 хостов - 192.168.168.0/29 (на уровне сетевого оборудования дополнительно можно изолировать данную сеть в отдельный VLAN).

Сначала настроим выделенный под iSCSI сетевой интерфейс на стороне сервера ESOS, перейдя в меню навигации в System > Network Settings и выбрав соответствующий сетевой адаптер.

Зададим на этом интерфейсе статический IP-адрес 192.168.168.1/29 , укажем маску подсети, адрес широковещания и увеличенный размер MTU – 9000 (технология Jumbo Frame должна поддерживаться сетевым адаптером) для улучшения производительности при передаче больших объёмов данных.

При сохранении настроек на вопрос о перезагрузке сети ответим утвердительно (все сетевые соединения с ESOS будут временно потеряны).

По завершению процедуры перезагрузки сети мы получим сводную информацию о статусе применения новых настроек

Теперь переходим к настройке на стороне хоста-инициатора.

Конфигурация iSCSI Initiator

На стороне нашего хоста виртуализации на базе Windows Server, на который мы будем принимать по протоколу iSCSI дисковую ёмкость с сервера ESOS, настроим выделенный сетевой адаптер для использования в работе с протоколом iSCSI.

Отключим все, кроме того что может потребоваться нам на этом выделенном интерфейсе при работе с iSCSI. Например, оставим только поддержку протокола TCP /IPv4 и QoS .

Выбрав протокол TCP /IPv4 по кнопке Properties зададим IP-адрес из сети, которую мы определили под трафик iSCSI, например 192.168.168.3/29 . Адрес шлюза по умолчанию и DNS-серверов оставляем пустыми. Откроем расширенные настройки кнопкой Advanced .

На вкладке DNS отключим включённую по умолчанию опцию регистрации в DNS, а на вкладке WINS отключим поддержку LMHOST и NetBIOS over TCP /IP .

Вернёмся на основную вкладку свойств сетевого интерфейса и вызовем диалог настройки параметров сетевого адаптера по кнопке Configure .

В открывшейся форме на вкладке расширенных настроек Advanced найдём опцию поддержки больших пакетов Jumbo Packet и выберем максимально возможное значение (в нашем примере это 9014 ). На вкладке Power Management отключим возможность отключения системой данного сетевого адаптера в режимах энергосбережения – Allow the computer to turn off this device to save mode .

Закроем все окна с сохранением кнопкой ОК .

Теперь проверим доступность сервера ESOS через выделенный сетевой интерфейс. Сначала утилитой tracert , чтобы убедиться в том, что маршрутизация трафика идёт между серверами напрямую.

tracert -d 192.168.168.1

Затем с помощью утилиты ping , включив флаг запрета фрагментации (опция -f ) и указав размер передаваемых пакетов (опция -l )

ping 192.168.168.1 -f -l 8000

В случае если где-то, например на коммутаторе, к которому подключены серверы ESOS и наш хост-инициатор, не включена поддержка Jumbo Frame , мы можем получить сообщения "Packet needs to be fragmented but DF set. " В нашем случае проверка прошла успешно, поэтому можно переходить к процедуре подключения iSCSI диска.

Перейдём в Панель управления Windows Server, вызовем апплет iSCSI Initiator и открыв вкладку Discovery нажмём кнопку Discover Portal . В окне настроек обнаружения укажем IP адрес сервера ESOS из сети для трафика iSCSI и нажмём кнопку Advanced .

В форме расширенных настроек обнаружения в качестве локального адаптера выберем Microsoft iSCSI Initiator и настроенный ранее IP адрес из сети для трафика iSCSI – 192.168.168.3 . Сохраним настройки, нажимая OK до тех пор, пока не вернёмся в главное окно апплета.

После этого перейдём на вкладку Targets , где в разделе Discovered targets должен появится ранее упомянутый IQN нашего сервера ESOS со статусом Inactive . То есть система его обнаружила, но он пока не подключен. Для того, чтобы произвести подключение к iSCSI Target воспользуемся кнопкой Connect .

В открывшемся окне подключения обратим внимание на то, чтобы был включен признак добавления подключаемой цели в список избранных целей - Add this connection to the list of Favorite Targets (для последующего автоматического подключения к цели в случае перезагрузки сервера). Нажмём кнопку Advanced .

В форме расширенных настроек подключения явно укажем сетевые интерфейсы из сети для трафика iSCSI, которые должны быть задействованы для передачи iSCSI трафика для данного сессионного подключения. То есть в качестве Initiator IP выберем из списка адрес выделенного на нашем хосте iSCSI-интерфейса 192.168.168.3 , а в качестве Target portal IP выберем из списка адрес выделенного на сервере ESOS iSCSI-интерфейса - 192.168.168.1 .

Закроем с сохранением окна Advanced Settings и Connect to Target и удостоверимся в том, что статус подключения изменился на Connected

Заглянем на вкладку Favorite Targets и убедимся в том, что подключенная цель попала в список избранных.

Убедимся в том, что в консоли управления “Диспетчер устройств”/Device Manager (devmgmt.msc ) в разделе Disk drives появился дополнительный SCSI-диск с именем, которое ранее мы определяли на сервере ESOS для виртуального блочного устройства SCST.

Следующим шагом нам нужно выполнить инициализацию подключенного по протоколу iSCSI диска. Для этого перейдём в консоль управления дисками Disk Management (diskmgmt.msc ), выберем соответствующий диск и переведём его в состояние Online .

После того как диск успешно изменит свой статус, проведём инициализацию диска и отформатируем его “по вкусу”, например в файловую систему NTFS, задав любую понятную нам метку тома. С этого момента в графическом интерфейсе Windows данный диск станет нам доступен для стандартных файловых операций.

На данном этапе, если мы заглянем в консоль сервера ESOS, то увидим в нижней части TUI информацию о сессии подключения хоста-инициатора.

На этом основную настройку простейшей конфигурацией iSCSI можно считать законченной.

Простейшая проверка производительности

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

Полагаться на цифры, которые при копировании больших файлов с локального диска сервера на iSCSI диск показывает нам проводник Windows особо не стоит, так как объективной информации мы там не увидим. Например, в моём случае при копировании нескольких больших ISO-файлов (с разным содержимым) скорость обозначилась в районе 150-160 MB/s, что отличается в большую строну от реальной допустимой скорости iSCSI-линка между двумя моими серверами в 1Gbit/s (~ 125MB/s). К тому же более или менее похожая на правду скорость отображается при копировании первого файла, а при копировании последующих файлов она несколько увеличивается (возможно включается в работу кеш файловой системы и прочие другие кеши разных уровней).

Для разного рода замеров всегда хочется использовать какие-то “родные” инструменты, не требующие установки дополнительного ПО, но к сожалению это далеко не всегда возможно. В клиентских системах Windows для оценки производительности разных подсистем, в том числе и дисковой, используется утилита WinSAT (winsat disk ), однако в составе Windows Server 2012 R2 этой утилиты я не обнаружил. Поэтому
я скопировал с имеющейся по рукой клиентской ОС Windows 10 x64 два файла - WinSAT.exe и WinSATAPI.dll из каталога %windir%\System32 в аналогичный каталог сервера. Теперь можно попробовать воспользоваться этой утилитой, запустив её из командной строки с правами администратора.

winsat disk -drive T -count 3

Здесь после ключевого слова disk в опции –drive указывается имя буквы диска, который мы желаем протестировать, а в опции –count указывается количество циклов тестирования.

Как я понял, данная утилита не позволяет проводить тестирование оперируя большими блоками данных (более 1MB), то есть она больше подходит для тестирования ситуаций с большим количеством мелких файлов. У нас же ситуация обратная – резервное копирование дисков виртуальных машин предполагают малое количество файлов существенного размера.

Ещё одним простым инструментом является утилита Diskspd (DiskSpd: A Robust Storage Performance Tool ), пришедшая на замену утилите SQLIO Disk Subsystem Benchmark Tool (SQLIO) . Скачиваем утилиту, распаковываем на сервере и запускаем с набором параметров, отвечающим контексту нашей задачи.

cd /d C:\Tools\Diskspd-v2.0.17\amd64fre\ Diskspd.exe -d60 -b1M -s -w100 -t1 -c100G T:\io1.dat T:\io2.dat

Используемые нами параметры означают:
-d60: Время выполнения теста 60 секунд
-b1M: Оперировать блоками по 1MB
-s: Выполнять операции с последовательным доступом
-w100: Выполнять полный тест на запись (тест на чтение не выполняется)
-t1: Количество потоков работы с целью (с файлом T:\io.dat)
-c100G: Создавать файлы размером 100GB
В конце перечислены имена генерируемых для теста файлов.

Немного отклоняясь, отмечу, что на момент написания статьи для задачи резервного копирования виртуальных машин Hyper-V у нас используется ПО Veeam Backup & Replication , поэтому при выборе размера блока для проведения тестов я буду отталкиваться от специфики этого ПО. Как я понял из документа Data Compression and Deduplication , VBR в операциях резервного копирования на SAN использует блоки по 1024MB, поэму именно такой размер блока мы и будем использовать при тестировании.

Для сравнения проведём ещё раз тест с тем же набором условий, но увеличим его продолжительность до 5 минут

Здесь хорошо видно, что при длительной нагрузке показатели заметно проседают. Могу предположить, что связано это с тем что “бутылочное горлышко” в этом случае перемещается из области сетевой подсистемы в область медленных дисков, используемых у нас на стороне сервера ESOS.

Для любителей графических инструментов для проведения подобных поверхностных тестов производительности дисковой подсистемы на Windows может пригодиться ещё одна простая бесплатная утилита ATTO Disk Benchmark . Загрузить её можно по ссылке: Disk Benchmark . Интерфейс утилиты прост и понятен и комментировать по ней, пожалуй, нечего.

О каких-то более сложных инструментах тестирования, как например IOMeter , я не говорю, так как в рамках нашей задачи нет цели заниматься бенчмарками как таковыми. А показатели простых инструментов получаются лишь для того, чтобы иметь базу для сравнения в дальнейшем, когда между сервером ESOS и хостом Hyper-V у нас будет не один линк, как на данном этапе настройки, а два линка и задействованный механизм Multipath.

Настройка Multipath

Итак, мы имеем подключенный по iSCSI диск и некие базовые показатели тестов производительности, от которых можем отталкиваться. Теперь попробуем улучшить эти показатели, добавив на сервер ESOS и хост-инициатор ещё по одному гигабитному сетевому адаптеру и объединив их работу с помощью механизма Multipath на стороне хоста-инициатора.

Начнём с настройки сервера ESOS. В главном меню навигации перейдём в System > Network Settings , выберем дополнительный сетевой адаптер, который будет использоваться для ещё одного подключения по протоколу iSCSI и настроим параметры IP. В нашем примере используется статическая конфигурация и дополнительному iSCSI-интерфейсу ESOS задан IP адрес 192.168.168.2/29 , а также дополнительно увеличен размер MTU .

Сохраняем настройки сети в ESOS и переходим к настройке дополнительного сетевого адаптера на стороне хоста-инициатора, то есть нашего сервера на базе Windows Server с iSCSI Initiator.

Настраиваем по аналогии с первым второй iSCSI-интерфейс, задав ему IP 192.168.168.4/29

Отключим ранее настроенный интерфейс c адресом 192.168.168.3 (iSCSI диск при этом у нас отвалится) и убедимся в том, что дополнительно настроенные iSCSI-интерфейсы сервера ESOS и хоста-инициатора видят друг друга.

В апплете Панели управления iSCSI Initiator на вкладке Discovery добавим дополнительный путь обнаружения, указав связку 192.168.168.2 - 192.168.168.4

Так как ранее мы создали iSCSI подключение к цели без включённого признака multi-path , то теперь нам будет правильней деактивировать это подключение и создать его заново, но уже с включенным признаком multi-path .

Сначала удалим созданное ранее подключение из автозагрузки на вкладке Favorite Targets

Теперь перейдём на вкладку Targets и выполним отключение (инициализированный и подключенный в системе iSCSI диск при этом исчезнет из Windows)

Затем выполним повторное подключение цели iSCSI, но на этот раз уже с включённой опцией Enable multi-path (и не забываем по кнопке Advanced произвести явную связку интерфейсов 192.168.168.1 - 192.168.168.3 )

Убедившись в том, что цель снова перешла в состояние Connected откроем её свойства, чтобы добавить второе подключение по дополнительному выделенному интерфейсу

На вкладке Targets зайдём по кнопке Properties в свойства подключенной цели, и воспользуемся кнопкой Add session , чтобы настроить второе подключение.

Кстати, здесь по кнопке MCS мы сможем убедится в том, что первая установленная сессия действительно использует заданный нами выделенный сетевой интерфейс.

Итак, используя кнопку Add session добавим дополнительное подключение к iSCSI Target указав в качестве интерфейсов дополнительную пару интерфейсов, которую мы настроили ранее (192.168.168.2 - 192.168.168.4 )

Теперь в списке сессий должна появиться запись о второй сессии.

Также созданную дополнительную сессию мы увидим и на стороне сервер ESOS.

На стороне хоста-инициатора заглянем в оснастку “Диспетчер устройств”/Device Manager (devmgmt.msc ) и убедимся в том, что в разделе Disk drives появился дополнительный SCSI-диск с тем же именем (ESOS01-MD0 ).

То есть сейчас, на стороне Windows-сервера мы фактически видим один и тот же диск, как два отдельных устройства. Чтобы система смогла работать с этим диском, как с единым устройством, используя оба сетевых линка iSCSI до сервера ESOS, нам потребуется включить поддержку MPIO для iSCSI . Для этого переходим в Панель управления Windows, открываем апплет MPIO и на вкладке Discover Multi-Paths включаем опцию Add support for iSCSI devices . После этого нажимаем кнопку Add и утвердительно отвечаем на вопрос о перезагрузке сервера.

После перезагрузки снова заглянем в консоль Device Manager и убедимся в том, что теперь наш iSCSI диск отображается, как единое устройство и имеет имени …Multi-Path Disk Device . Откроем свойства диска и на вкладке MPIO проверим то, что диск доступен по двум путям.

Более подробную информацию о маршрутах подключения можем увидеть в апплете панели управления iSCSI Initiator .

Здесь по кнопке MPIO мы увидим информацию об используемых подключениях.

На этом базовую настройку Multipath можно считать законченной.

Теперь для того, чтобы оценить изменения в скорости работы с iSCSI-диском, которые мы получили в результате организации второго линка и настройки Multipath проведем простой тест линейной записи больших файлов на диск по аналогии с тем, что делали ранее:

Diskspd.exe -d60 -b1M -s -w100 -t1 -c100G T:\io1.dat T:\io2.dat

Судя по тому, что нам показывает Diskspd в данном случае, в среднем в каждый из файлов запись прошла со скоростью ~225MB/s, что равно 1800Mb/s. То есть в итоге мы получаем скорость приближенную к суммарной пропускной способности двух организованных линков iSCSI.

Тот же тест, но более продолжительный по времени (5 минут):

Diskspd.exe -d300 -b1M -s -w100 -t1 -c100G T:\io1.dat T:\io2.dat

Средняя величина в ~48.5 MB/s, полученная при работе с каждым файлом, выглядит ощутимо лучше, чем полученные ранее 16 MB/s на одном линке iSCSI.

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

Горячая замена USB-накопителя ESOS

Учитывая то, что собирая бюджетное решение, описанное в рамках нашего примера, мы могли использовать дешёвые USB-накопители, в некоторых случаях может возникнуть потребность в замене этого накопителя (например при его выходе из строя). Учитывая то, что ESOS это Linux-система полностью адаптированная к работе в оперативной памяти, замена USB-накопителя является очень простой операцией, корректная обработка которой реализована разработчиком этой системы.

Фактически выполняется замена накопителя в несколько простых действий:

  • На уже загруженной и работающей системе ESOS в любой момент времени извлекаем USB-накопитель (накопитель, который нужно заменить), с которого эта система была загружена.
  • Подготавливаем новый USB-накопитель с ESOS стандартным методом, описанным выше в разделе “Подготовка загрузочного USB-накопителя ESOS”, и устанавливаем этот накопитель в работающий сервер ESOS.
  • Вызываем процедуру синхронизации работающей в оперативной памяти конфигурации ESOS с файловой системой на USB-накопителе. Пункт меню System > Sync Configuration

После этого желательно перезагрузить сервер и убедиться в том, что с нового USB-накопителя система запускается успешно. В процессе первой загрузки с заменённого USB-накопителя ESOS выполнит некоторые служебные процедуры и уже буквально через несколько минут сервер будет готов к работе, подгрузив ранее настроенную нами конфигурацию.

Судя по описанию документа 13_Upgrading , точно таким же нехитрым образом выполняется обновление сервера ESOS на более новую версию, что существенно облегчает обслуживание такой системы.

Заключение

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