Пособие для начинающих об iSCSI. Подключение и настройка iSCSI в Windows Server Sun стала в оппозицию к ІP Storage

Навигация по статье

Это инструкция по подключению iSCSI диска в Windows Server 2016 . При заказе услуги в SIM-Networks вы получите сообщение, подобное приведенному ниже (учтите, что значения чисел в адресе сервера могут отличаться от примера-иллюстрации, а вместо букв X,Y или Z в сообщении будут указаны реальные значения для настройки вашего доступа):

Услуга «iSCSI Backup» активирована.

Параметры доступа:

  • Адрес сервера (iscsi-target): 185.59.101.184
  • Логин: YYY
  • Пароль: ZZZ
  • Доступ к услуге на данный момент ограничен всего одним IP-адресом — XXX.XXX.XXX.XXX

Подключение диска iSCSI

1. Зайдите в «Панель Управления -> Администрирование » и запустите Инициатор iSCSI .

2. В разделе «Свойства Обнаружение » и нажмите кнопку «Обнаружить портал ».

3. В открывшемся окне заполните поле «IP адрес» сервера iSCSI.

4. Откройте раздел дополнительных параметров подключения к серверу (нажмите кнопку «Дополнительно »). Выберите значения полей «Локальный адаптер » и «IP-адрес инициатора », как на рисунке ниже (где IP-адрес инициатора — это IP вашего локального сетевого адаптера, через который разрешено подключение к серверу iSCSI).

5. Сохраните настройки, убедитесь в получении изображения, подобного приведенному ниже:

6. В разделе «Свойства » инициатора iSCSI перейдите на вкладку «Конечные объекты », выберите появившийся объект с неактивным состоянием и нажмите кнопку «Подключить ».

7. В открывшемся окне «Подключение к конечному объекту », нажмите кнопку «Дополнительно… »

8. Заполните поля раздела, как на рисунке ниже. Параметры «Имя» и «Секрет» — это «Логин» и «Пароль» из письма, отправленного вам при активации услуги.

9. Сохраните настройки. Убедитесь, что значение поля «Состояние » обнаруженного конечного объекта – «Подключено », как на рисунке ниже. Выйдите из раздела «Свойства » Инициатора iSCSI, сохранив настройки.


Инициализация и форматирование диска iSCSI

Подключенный iSCSI диск необходимо подготовить к работе (инициализировать и отформатировать).

10. В разделе «Администрирование » откройте вкладку «Управление компьютером ».

11. Перейдите в раздел «Управление дисками ».

12. Убедитесь, что ваш диск отображается, его состояние – «Вне сети ».

13. Выберите из контекстного меню пункт «В сети ».

14. Выполните инициализацию диска.

15. Проверьте, что статус диска изменился на «В сети» , но на нём отсутствуют разделы и файловая система.

16. Из контекстного меню на не размеченном диске выберите «Создать простой том ».

17. После открытия «Мастера создания простого тома » нажмите кнопку «Далее ».

18. Укажите в соответствующем поле размер раздела, или оставьте без изменений значение «по умолчанию» (если необходимо использовать весь диск под один раздел).

19. Назначьте букву диска для нового раздела.

20. Выберите тип файловой системы и метку тома.

Протокол 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-адрес конечного портала выбираем адрес принадлежащий вашей сети хранения данных:

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

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

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

05.10.2012

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

Marco Chiappetta. Speed Up Your NAS Device With iSCSI. PC World, September 2012, c. 86.

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

Аббревиатура iSCSI расшифровывается как Internet Small Computer System Interface. Технология SCSI (без i) уже очень давно используется для подключения различных периферийных устройств к компьютерным системам, но чаще всего с ее помощью осуществляется обмен данными с устройствами хранения - жесткими дисками или ленточными накопителями. Протокол iSCSI позволяет подсоединяться к удаленному тому хранения по Сети так, словно тот является локальным диском. Проще говоря, iSCSI транслирует команды SCSI по сетям IP (Internet Protocol). Данная технология напоминает виртуальный кабель SATA (или SCSI), причем для организации связи между системой и томом хранения используется сетевое соединение.

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

Интерфейсу iSCSI нужны два основных компонента: подсоединяемое к Сети устройство хранения (network-attached storage, NAS) или сервер с томом, сконфигурированным в качестве целевого объекта iSCSI, и инициатор iSCSI, позволяющий подключать систему к целевому объекту.

Если у вас имеется устройство NAS, подсоединенное к ПК, работающему в среде Windows, скорее всего, этого окажется вполне достаточно. Фактически все серверы NAS предлагают возможность настройки конфигурации целевых объектов iSCSI. А у Microsoft в каждой версии Windows, начиная с Vista, имеется инструмент для создания инициатора iSCSI. Инициатор можно запускать на компьютере с версией операционной системы не ниже Windows 2000.

Чтобы продемонстрировать принципы работы технологии iSCSI, возьмем сервер NAS с двумя накопителями Thecus N2200XXX, на котором запущена адаптированная версия ОС Linux с поддержкой iSCSI, и настольную систему под управлением Windows 7 Максимальная. Любая система, работающая в среде Windows, при взаимодействии с системой NAS создает устройство, поддерживающее iSCSI.

iSCSI - достоинства и недостатки

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

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

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

Установка

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

1. Войдите в меню конфигурации сервера NAS, выберите режим RAID и зарезервируйте пространство для тома iSCSI. Я использовал зеркалирование RAID 1 с двумя накопителями емкостью по 2 Тбайт. Одна половина имеющейся емкости была выделена под файловую систему EXT4, а другая осталась неиспользованной. (На третьем этапе неиспользуемая емкость была отведена для iSCSI.)

2. После выделения пространства для RAID его нужно отформатировать. Когда процесс форматирования завершится (в зависимости от конфигурации накопителя продолжительность этой процедуры может занимать несколько часов), можно приступать к выделению неиспользуемого пространства для целевого объекта iSCSI. (Если же все доступное пространство будет зарезервировано для iSCSI, не нужно форматировать дисковый массив на данном этапе.)

3. Теперь настроим конфигурацию целевого объекта iSCSI. Сначала я щелкнул мышью на ссылке Space Allocation в меню Storage, находящемся на левой панели, а затем нажал кнопку Add на вкладке iSCSI target. На экране появилось новое окно, в котором нужно выбрать желаемый размер целевого объекта iSCSI, активизировать его и присвоить ему имя.

А если вы желаете добавить еще один уровень безопасности, на этом же этапе можно настроить параметры протокола CHAP (Challenge Handshake Authentication Protocol).

4. Если все имеющееся пространство решено не выделять одному целевому объекту iSCSI, можно присвоить нескольким целевым объектам логические идентификаторы LUN (Logical Unit Number). Это позволит подключать несколько систем к одному устройству NAS или серверу, а каждая клиентская система получит свой собственный целевой объект iSCSI.

Настройка целевого объекта

После того как целевой объект iSCSI создан, необходимо подключиться к нему через инициатор iSCSI на клиентском ПК с операционной системой Windows. Щелкните мышью на кнопке «Пуск», наберите в поисковой строке iSCSI и нажмите клавишу (или перейдите в меню «Пуск» к Панели управления и в разделе «Система и безопасность» выберите пункт «Администрирование», а затем - «Инициатор iSCSI»). Если на экране появится сообщение о том, что служба iSCSI не работает, разрешите ее запуск, после чего на экране отобразится окно свойств инициатора iSCSI.

Перейдите на вкладку «Обнаружение» и нажмите кнопку «Обнаружить портал». В открывшемся окне введите IP-адрес устройства NAS или сервера, на котором размещается целевой объект iSCSI. Номер порта изменять не нужно (если ранее номер порта iSCSI не определялся). По умолчанию система предлагает порт 3260. Если ранее вы разрешили проведение аутентификации CHAP, следует нажать кнопку «Дополнительно» и ввести учетную информацию CHAP. В противном случае нажмите кнопку OK, и IP-адрес вашего устройства NAS или сервера появится в списке конечных порталов.

Если целевого объекта в этом списке нет, убедитесь в том, что IP-адрес введен правильно, а нужный порт на межсетевом экране открыт.

После того как сервер появится в списке конечных объектов, перейдите на вкладку «Конечные объекты». Созданный ранее целевой объект iSCSI должен появиться в группе конечных объектов в средней части окна. Щелкните мышью на объекте и нажмите кнопку «Подключить». В появившемся на экране окне подключения к целевому объекту установите опцию «Добавить это соединение в список избранных конечных объектов» и нажмите OK. Потом еще раз нажмите OK в окне свойств инициатора iSCSI.

В клиентской системе, подключенной к целевому объекту iSCSI, нужно отформатировать целевой объект с использованием той же процедуры, которую вы проделываете с любым локальным диском. Нажмите кнопку «Пуск», щелкните правой кнопкой мыши на пункте «Компьютер» и выберите из контекстного меню пункт «Управление». В разделе «Запоминающие устройства» окна утилиты «Управление компьютером» щелкните на ссылке «Управление дисками». На экране появится диалоговое окно «Инициализация диска». Убедитесь в том, что опция «Выбор диска» установлена и укажите нужный тип раздела (я использовал MBR - Master Boot Record). Нажмите OK.

Следуя подсказкам, отображаемым на экране, укажите размер тома, присвойте диску букву и укажите файловую систему и метку тома. Нажмите кнопку «Завершить». По завершении форматирования появится новая буква накопителя. Теперь можно переносить файлы и запускать программы с накопителя NAS независимо от того, где он находится.

Сравнение производительности

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

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

А вот тест CrystalDiskMark анализирует работу устройств в режиме как последовательного, так и произвольного доступа, оперируя двумя файлами разного объема. По его результатам, целевой объект iSCSI продемонстрировал существенно более высокое быстродействие. Скорость записи у устройства iSCSI и стандартного подключенного сетевого диска оказалась одинаковой, зато операции чтения через интерфейс iSCSI выполнялись на 30--40% быстрее.

Как показало тестирование, доступ к устройству NAS и форматирование его по образу и подобию локального диска, а также возможность запуска программ - не единственные преимущества, предоставляемые технологией iSCSI. Она обеспечивает еще и ускорение выполнения операций чтения. Таким образом, если вы имеете дело с устройствами NAS дома или в офисе, 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 за проделанный труд и пожелать проекту дальнейшего успешного развития.

Abstract: как работает open-iscsi (ISCSI initiator в linux), как его настраивать и чуть-чуть про сам протокол ISCSI.

Лирика: В интернете есть множество статей довольно хорошо объясняющих, как настроить ISCSI target, однако, почему-то, практически нет статей про работу с инициатором. Не смотря на то, что target технически сложнее, административной возни с initiator больше - тут больше запутанных концепций и не очень очевидные принципы работы.

ISCSI

Перед тем, как рассказать про ISCSI - несколько слов о разных типах удалённого доступа к информации в современных сетях.

NAS vs SAN

Существует два метода доступа к данным, находящимся на другом компьютере: файловый (когда у удалённого компьютера запрашивают файл, а какими файловыми системами это сделано - никого не волнует), характерные представители NFS, CIFS (SMB); и блочный - когда у удалённого компьютера запрашивают блоки с дискового носителя (аналогично тому, как их читают с жёсткого диска). В этом случае запрашивающая сторона сама себе делает на блочном устройстве файловую систему, а сервер, отдающий блочное устройство, знать не знает про файловые системы на нём. Первый метод называют NAS (network attached storage), а второй - SAN (storage area network). Названия вообще указывают на другие признаки (SAN подразумевает выделенную сеть до хранилищ), но так сложилось, что NAS - это файлы, а SAN - это блочные устройства по сети. И хотя все (?) понимают, что это неправильные названия, чем дальше, тем больше они закрепляются.

scsi over tcp

Одним из протоколов доступа к блочным устройствам является iscsi. Буква "i" в названии относится не к продукции эппл, а к Internet Explorer . По своей сути это "scsi over tcp". Сам протокол SCSI (без буквы "i") - это весьма сложная конструкция, поскольку он может работать через разные физические среды (например, UWSCSI - параллельная шина, SAS - последовательная - но протокол у них один и тот же). Этот протокол позволяет делать куда больше, чем просто «подтыкать диски к компьютеру» (как это придумано в SATA), например, он поддерживает имена устройств, наличие нескольких линков между блочным устройством и потребителем, поддержку коммутации (ага, SAS-коммутатор, такие даже есть в природе), подключение нескольких потребителей к одному блочному устройству и т.д. Другими словами, этот протокол просто просился в качестве основы для сетевого блочного устройства.

Терминология

В мире SCSI приняты следующие термины:
target - тот, кто предоставляет блочное устройство. Ближайший аналог из обычного компьютерного мира - сервер.
initiator - клиент, тот, кто пользуется блочным устройством. Аналог клиента.
WWID - уникальный идентификатор устройства, его имя. Аналог DNS-имени.
LUN - номер «кусочка» диска, к которому идёт обращение. Ближайший аналог - раздел на жёстком диске.

ISCSI приносит следующие изменения: WWID исчезает, на его место приходит понятие IQN (iSCSI Qualified Name) - то есть чистой воды имя, сходное до степени смешения с DNS (с небольшими отличиями). Вот пример IQN: iqn.2011-09.test:name.

IETD и open-iscsi (сервер и клиент под линукс) приносят ещё одну очень важную концепцию, о которой чаще всего не пишут в руководствах по iscsi - portal. Portal - это, если грубо говорить, несколько target"ов, которые анонсируются одним сервером. Аналогии с www нет, но если бы веб-сервер можно было попросить перечислить все свои virtualhosts, то это было бы оно. portal указывает список target"ов и доступные IP, по которым можно обращаться (да-да, iscsi поддерживает несколько маршрутов от initiator к target).

target

Статья не про target, так что даю очень краткое описание того, что делает target. Он берёт блочное устройство, пришлёпывает к нему имя и LUN и публикет его у себя на портале, после чего позволяет всем желающим (авторизация по вкусу) обращаться к нему.

Вот пример простенького файла конфигурации, думаю, из него будет понятно что делает target (файл конфигурации на примере IET):

Target iqn.2011-09.example:data IncomingUser username Pa$$w0rd Lun 0 Path=/dev/md1

(сложный от простого отличается только опциями экспорта). Таким образом, если у нас есть target, то мы хотим его подключить. И тут начинается сложное, потому что у initiator"а своя логика, он совсем не похож на тривиальное mount для nfs.

Initiator

В качестве инициатора используется open-iscsi. Итак, самое важное - у него есть режимы работы и состояние . Если мы дадим команду не в том режиме или не учтём состояние, результат будет крайне обескураживающий.

Итак, режимы работы:

  • Поиск target"ов (discovery)
  • Подключение к target"у
  • Работа с подключенным target"ом
Из этого списка вполне понятен жизненный цикл - сначала найти, потом подключиться, потом отключиться, потом снова подключиться. Open-iscsi держит сессию открытой, даже если блочное устройство не используется. Более того, он держит сессию открытой (до определённых пределов, конечно), даже если сервер ушёл в перезагрузку. Сессия iscsi - это не то же самое, что открытое TCP-соединение, iscsi может прозрачно переподключаться к target"у. Отключение/подключение - операции, которыми управляют «снаружи» (либо из другого ПО, либо руками).

Немного о состоянии. После discovery open-iscsi запоминает все найденные target"ы (они хранятся в /etc/iscsi/), другими словами, discovery - операция постоянная, совсем НЕ соответствующая, например, dns resolving). Найденные target можно удалить руками (кстати, частая ошибка - когда у open-iscsi, в результате экспериментов и настройки, пачка найденных target"ов, при попытке логина в которые выползает множество ошибок из-за того, что половина target"ов - старые строчки конфига, которые уже давно не существуют на сервере, но помнятся open-iscsi). Более того, open-iscsi позволяет менять настройки запомненного target"а - и эта «память» влияет на дальнейшую работу с target"ами даже после перезагрузки/перезапуска демона.

Блочное устройство

Второй вопрос, который многих мучает по-началу - куда оно попадает после подключения? open-iscsi создаёт хоть и сетевое, но БЛОЧНОЕ устройство класса SCSI (не зря же оно «я сказя»), то есть получает букву в семействе /dev/sd, например, /dev/sdc. Используется первая свободная буква, т.к. для всей остальной системы это блочное устройство - типичный жёсткий диск, ничем не отличающийся от подключенного через usb-sata или просто напрямую к sata.

Это часто вызывает панику «как я могу узнать имя блочного устройства?». Оно выводится в подробном выводе iscsiadm (# iscsiadm -m session -P 3).

Авторизация

В отличие от SAS/UWSCSI, ISCSI доступно для подключения кому попало. Для защиты от таких, есть логин и пароль (chap), и их передача iscsiadm"у - ещё одна головная боль для начинающих пользователей. Она может осуществляться двумя путями - изменением свойств уже найденного ранее target"а и прописываем логина/пароля в файле конфигурации open-iscsi.
Причина подобных сложностей - в том, что пароль и процесс логина - это атрибуты не пользователя, а системы. ISCSI - это дешёвая версия FC-инфраструктуры, и понятие «пользователь» в контексте человека за клавиатурой тут неприменимо. Если у вас sql-база лежит на блочном устройстве iscsi, то разумеется, вам будет хотеться, чтобы sql-сервер запускался сам, а не после минутки персонального внимания оператора.

Файл конфигурации

Это очень важный файл, потому что помимо логина/пароля он описывает ещё поведение open-iscsi при нахождении ошибок. Он может отдавать ошибку «назад» не сразу, а с некоторой паузой (например, минут в пять, чего достаточно для перезагрузки сервера с данными). Так же там контролируется процесс логина (сколько раз пробовать, сколько ждать между попытками) и всякий тонкий тюнинг самого процесса работы. Заметим, эти параметры довольно важны для работы и вам нужно обязательно понимать, как поведёт ваш iscsi если вынуть сетевой шнурок на 10-20с, например.

Краткий справочник

Я не очень люблю цитировать легконаходимые маны и строчки, так что приведу типовой сценарий употребения iscsi:

Сначала мы находим нужные нам target, для этого мы должны знать IP/dns-имя инициатора: iscsiadm -m discovery -t st -p 192.168.0.1 -t st - это команда send targets.

Iscsiadm -m node (список найденного для логина)
iscsiadm -m node -l -T iqn.2011-09.example:data (залогиниться, то есть подключиться и создать блочное устройство).
iscsiadm -m session (вывести список того, к чему подключились)
iscsiadm -m session -P3 (вывести его же, но подробнее - в самом конце вывода будет указание на то, какое блочное устройство какому target"у принадлежит).
iscsiadm - m session -u -T iqn.2011-09.example:data (вылогиниться из конкретной)
iscsiadm -m node -l (залогиниться во все обнаруженные target"ы)
iscsiadm -m node -u (вылогиниться из всех target"ов)
iscsiadm -m node --op delete -T iqn.2011-09.example:data (удалить target из обнаруженных).

mulitpath

Ещё один вопрос, важный в серьёзных решениях - поддержка нескольких маршрутов к источнику. Прелесть iscsi - в использовании обычного ip, который может быть обычным образом обработан, как и любой другой трафик (хотя на практике обычно его не маршрутизируют, а только коммутируют - слишком уж великая там нагрузка). Так вот, iscsi поддерживает multipath в режиме «не сопротивляться». Сам по себе open-iscsi не умеет подключаться к нескольким IP одного target"а. Если его подключить к нескольким IP одного target"а, то это приведёт к появлению нескольких блочных устройств.

Однако, решение есть - это multipathd, который находит диски с одинаковым идентифиатором и обрабатывает их как положено в multipath, с настраиваемыми политиками. Эта статья не про multipath, так что подробно объяснять таинство процесса я не буду, однако, вот некоторые важные моменты:

  1. При использовании multipath следует ставить маленькие таймауты - переключение между сбойными путями должно происходить достаточно быстро
  2. В условиях более-менее быстрого канала (10G и выше, во многих случаях гигабит) следует избегать параллелизма нагрузки, так как теряется возможность использовать bio coalesing, что в некоторых типах нагрузки может неприятно ударить по target"у.