Сделай сам: стенд с решениями для виртуализации — общее хранилище на программном iSCSI

Привет, это Артём. Вчера я получил собственную учётную запись на сайте — и поэтому мне больше не придётся отдельно представляться в начале каждой статьи (автор указан внизу заметки). Продолжаем разговор о том, как своими руками собрать стенд или тестовую лабораторию. Сегодня мы поговорим о хранилище виртуальных машин для кластера. В Windows Server 2008 существует несколько кластерных моделей, и я ещё расскажу о них подробно в одной из следующих статей. Но сейчас нам существенно только то, что все подходящие нам модели организации кластера требуют общего хранилища.

Введение в iSCSI

Традиционно когда заходит речь об общем хранилище, обычно имеется ввиду его аппаратная реализация — SAN или DAS по протоколу SCSI. Последний, впрочем, имеет ряд ограничений. Во-первых, такая схема предоставит хранилище только кластеру из двух узлов. Во-вторых, для кластера Windows Server 2008 потребуется поддержка системы команд SCSI-3, которая в старых и дешёвых устройствах обычно отсутствует. Если говорить про SAN, то здесь цена вообще начинает зашкаливать, и такое решение вряд ли подойдёт для создания стенда или тестовой лаборатории.

Нам вполне подойдёт сравнительно новая технология, которая называется iSCSI. Этот протокол инкапсулирует традиционные команды SCSI в трафик IP, то есть позволяет использовать для подключения обычную локальную сеть. В терминологии iSCSI сервер называется Target, а клиент — Initiator. Спецификация iSCSI позволяет реализовывать обе стороны как программно, так и аппаратно. И понятно, что аппаратное решение выигрывает в скорости и надёжности, но стоит существенно дороже. Но для нашей ситуации вполне реально обойтись программной реализацией.

В нашем случае клиентами будут выступать узлы кластера. Здесь всё довольно просто. iSCSI Software Initiator поставляется вместе Windows Vista или Windows Server 2008 — и устанавливается по умолчанию. Потребуется только настроить его, что я опишу в следующей статье. Ситуация усложняется, когда мы начинаем искать решение для сервера, который и будет предоставлять в общий доступ ресурсы хранилища. У Microsoft есть собственная программная реализация и для iSCSI Target. Однако, она недоступна в виде отдельного продукта.

Где взять iSCSI Target и как с ним работать 

Microsoft iSCSI Software Target поставляется исключительно через канал OEM — то есть, сторонних сборщиков оборудования. Во-первых, этот компонент входит в составе продукта, который называется Windows Unified Data Storage Server — WUDSS. (Собственно говоря, в этом и заключается главное отличие «Unified Data» от обычного Storage Server). Во-вторых, его можно приобрести как дополнительную опцию — Application Pack for Windows Storage Server 2003 R2 .

История WUDSS достаточно скромна. Она насчитывает всего одну версию, выпущенную для промышленной эксплуатации. Она назвается WUDSS 2003, но реально вышла в ноябре позапрошлого года — а также была обновлена в ноябре года прошлого. Дистрибутив для ознакомления доступен всем желающим на Windows Embedded Server Products Evaluation Registration Site. На сегодня это единственный известный мне способ бесплатно попробовать в действии Microsoft iSCSI Software Target. Именно поэтому мы и предлагаем использовать на вашем стенде эту ОС.

Первый взгляд на WUDSS 2008

Наша лаборатория была устроена чуть-чуть иначе. В нашем распоряжении оказался дистрибутив предварительной версии WUDSS 2008. Она построена на той же кодовой базе, что и окончательная версия Windows Server 2008 — подобно тому, как WUDSS 2003 построен на базе Windows Server 2003. Не то чтобы версия iSCSI Target играла какую-то роль для наших экспериментов — с задачей хранения общих дисков для кластера замечательно справляется и WUDSS 2003. Но не могли же мы отказать себе в удовольствии попробовать на новый продукт.

Сам процесс установки WUDSS 2008 выглядит точно так же, как и для любого другого издания Windows Server 2008, — и завершается за один этап. (Процесс развёртывания WUDSS 2003, напротив, состоит из установки сначала обычного Windows Storage Server, а затем дополнительных компонентов с третьего диска дистрибутива). А вот после установки нас ждали две новости — как водится, одна хорошая, а другая плохая.

Хорошая новость заключалась в том, что после успешной установки WUDSS 2008 мы увидели знакомое приглашение командной строки Server Core. Учитывая, что выбор издания при установке не подразумевал никакого деления на Core и полную установку — получается, что WUDSS 2008 будет существовать только в одном варианте, и это будет установка в режиме Server Core. В принципе, это очень логично для ПО, которое заранее настраивает поставщик. Очевидно, предполагается, что конечный заказчик если и будет управлять WUDSS самостоятельно — то будет делать это удалённо.

А о плохой новости даже стыдно рассказывать. Смешно, но весь наш консилиум так и не нашёл, как в этой версии WUDSS 2008 включить iSCSI Target. Он явно не установлен по умолчанию, и в списке ролей и фичей, который, выдаёт утилита OClist, его тоже нет. Запускаемых файлов с похожими названиями в установленной системе мы не обнаружили. Уже было собрались сносить WUDSS 2008 и ставить старую добрую версию 2003 — когда Костя Леонтьев принёс отдельный дистрибутив Microsoft iSCSI Software Target. Оказывается, внутри Microsoft существует и такая разработка — которая, впрочем, никогда не была доступна публично.

Опыт работы с iSCSI Target на Server Core

Я всё-таки опишу в двух словах, чем установка iSCSI Target на Server Core отличалась от обычной ситуации. Это может пригодится и вам, так как WUDSS 2008 скоро должен стать доступен для публичного тестирования. Также, по неподтверждённой пока информации, партнёры Microsoft могут получить через службу Premier Support ознакомительную версию Microsoft iSCSI Software Target. Она будет работать 90 дней. Если такой дистрибутив попадёт к вам в руки — вы сможете установить его на обычный Windows Server 2008, установленный в варианте Server Core. Таким образом вы воспроизведёте те условия, в которых работали мы.

Ниже приведён порядок действий, которые потребуется произвести прежде, чем вы приступите непосредственно к настройке iSCSI Target. На том, как именно выполнять эти действия в среде Server Core, я сейчас подробно останавливаться не буду. Этому будет специально посвящена следующая статья.

  1. Задать настройки протокола IP — если они не настраиваются автоматически с помощью службы DHCP.
  2. Сменить сетевое имя сервера, затем перезагрузиться.
  3. Ввести сервер в домен, ещё раз перезагрузиться.

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

Далее потребуется установить сам iSCSI Software Target. В нашем случае это было совсем просто, так как дистрибутив оказался в стандартном формате Windows Installer. Я просто запустил команду msiexec.exe /package iscsitarget.msi" — и установка прошла, не задав ни единого вопроса.

Следующая задача — собственно, настройка iSCSI Target. Потребуется создать сами «цели» (Targets), а также виртуальные диски, которые будут предоставлены клиентским инициаторам как LUN-ы. Этот процесс несложен и никак не изменился с прошлых версий iSCSI Software Target 3.1. Поэтому я не буду на нём подробно останавливаться. Скажу лишь, что эта операция требует обязательной работы через графический интефейс MMC. Осуществить её из командной строки, сидя непосредственно перед консолью Server Core, не получится.

Строго говоря, в iSCSI Software Target всё-таки входит утилита командной строки wtcli.exe, однако все её возможности ограничены созданием «снимков» дисков (Snapshots):

Microsoft iSCSI Software Target v3.1 Command-Line Interface.
Copyright (c) 2006 Microsoft Corporation. All rights reserved.

Usage:

  * To create a snapshot of all or selected WinTarget Disks:

        wtcli.exe /snap [all|<lun list>] <ResourceGroup>

     Where:

        all - Take a snapshot of all WinTarget Disks
<lun list> - List of LUNs (e.g. 1 2 3)

     Example: wtcli.exe /snap all
Example: wtcli.exe /snap all ResourceGroup1
wtcli.exe /snap 1 2 3
wtcli.exe /lm all ResourceGroup1
wtcli.exe /lm 1 2 4 

Итак, вам требуется управлять сервером iSCSI Target через интерфейс MMC. Да, большинство стандартных оснасток позволяет подключаться к другому компьютеру — и для этого надо просто выбрать соответствующий пункт в меню «Actions». Но, к сожалению, «Microsoft iSCSI Software Target» (iSCSITarget.msc) — не тот случай. Будучи запущенной сама по себе (например, из папки «Administration Tools» в меню «Пуск»), она позволяет управлять только локальным компьютером. Но и тут решение достаточно тривиально. Достаточно запустить пустой экземпляр MMC, а затем уже добавить в неё оснастку «Microsoft iSCSI Software Target». И тут вы сможете указать удалённый компьютер для подключения.

Обратите внимание, что по умолчанию после установки iSCSI Target в Windows Firewall существует исключение под названием «Default iSCSI Target Port». Оно разрешает любой входящий трафик через порт TCP 3260. Это правило позволяет подключаться клиентским инициаторам, но его недостаточно для удалённого управления. Если вы хотите подключаться к iSCSI Target через MMC — вам потребуется создать ещё одно исключение. Например, так:

netsh advfirewall firewall add rule name="Microsoft iSCSI Software Target Remote Management" dir=in action=allow program=%SystemRoot%\System32\WinTarget.exe enable=yes profile=domain localport=rpc protocol=tcp

Будем считать, что вы успешно завершили этот этап. Настроили iSCSI Target в WUDSS, Windows Server 2008 или совместимом стороннем продукте. Теперь требуется создать клиентов для этого подключения — то есть сами узлы кластера, на которых и будут запускаться виртуальные машины. Об этом мы поговорим в следующей статье.