В этой статье поговорим о технологии, позволяющей программными средствами из обычного сервера Windows создать сетевую систему хранения наподобие SAN и позволяющей различным сетевым клиентам использовать дисковые ресурсы этого сервера по протоколу iSCSI. Для реализации такой технологии Microsoft поддерживает специальный бесплатный компонент — Microsoft iSCSI Software Target 3.3 (последняя версия на момент написания статьи). Даная технология может использоваться для построения недорогих кластерных систем с единым дисковым хранилищем, для использования в системах виртуализации (со всеми вкусностями, такими как Live Migration — LM и High Availability –HA) без необходимости покупать дорогие устройства Fiber Channel SAN или аппаратные iSCSI сервера.
Скачать Microsoft iSCSISoftware Target 3.3 можно с сайта Microsoft по ссылке http://www.microsoft.com/downloads/en/details.aspx?Family >
Системные требования Microsoft ISCSI Target
Данная версия iSCSI Software Target поддерживает установку на следующие операционные системы
- Windows Server 2008 R2 Standard
- Windows Server 2008 R2 Enterprise
- Windows Server 2008 R2 Datacenter
И требует наличия процессора не менее 1GHz и не менее 2GB оперативной памяти.
Отметим, что не поддерживается установка на Windows 2008 Server Core и бесплатный Microsoft Hyper-V Server 2008 R2, они могут выступать только в качестве клиентов iSCSI Initiator .
Программный продукт iSCSI Target состоит из двух компонент: сервера (в терминологии ISCSI – Target) и клиента (initiator — инициатора)
В этой части статьи мы поговорим об установке и настройке серверной части программного iSCSI (iSCSI), во второй части о настройке клиента iSCSI (инициатора), который будет использовать дисковые ресурсы сервера.
Установка iSCSI Target 3.3
После того, как вы скачали пакет. Необходимо его распаковать, в результате у нас появятся 2 файла:

Для установки серверной части (Target) необходимо запустить файл iscsitarget_public.msi. Мастер установки крайне прост:





После нажатия кнопки Finish, считаем, что компонент установлен.
Утилиту управления iSCSI target можно открыть из стартового меню («Microsoft iSCSI Software Target»).

Следующие этапы настройки iSCSI target – заключаются в создании устройства виртуального диска (в терминах сетей хранения LUN), и создании Target –а, к которому будут подключаться клиенты для получения доступа к виртуальному диску.
Создаем хранилище

В консоли правой кнопкой мыши щелкаем по Devices и выбираем пункт ”Create Virtual Disk”.

Указываем местоположение и имя виртуального диска (они храниться в формате vhd).

Укажем размер диска.



В результате в списке виртуальных устройств появится новый виртуальный диск.

Создаем iSCSITarget
iSCSI target по сути – это ссылка для клиента, которая поможет найти ему устройство хранения (созданный ранее виртуальный диск). Щелкнем правой кнопкой по элементу iSCSI Targets и выберем ”Create iSCSI Targets”.

Укажем осмысленное имя:

Далее можно указать каким серверам можно подключаться к данному Target-у. Мы настроим этот параметр позднее. Нажмем Next и Finish.

Чтобы перейти к тонкой настройке выберете созданный вами Target и перейдите в его свойства.

Добавим ранее созданный виртуальный диск (вкладка Virtual Disks).

Далее на вкладке iSCSI Initiators укажем каким клиентам (их IQN) можно подключаться к нашему Target-у (мы ранее пропустили этот шаг).

Вот и все мы настроили iSCSI сервер (target) на Windows Server 2008 R2. В следующей статье поговорим о том, как настраиваются клиенты iSCSI (инициаторы).
Internet Small Computer System Interface (iSCSI) — это протокол передачи данных, предназначенный для обмена данными между серверами и системами хранения данных (Storage Area Network, SAN). iSCSI представляет из себя комбинацию протокола SCSI и стека протоколов TCP/IP и предназначен для передачи блоков данных через сети Ethernet. Управляющие команды SCSI передаются внутри IP-пакетов, а протокол TCP обеспечивает управление потоком и надежность передачи данных.
При использовании iSCSI данные между сервером и системой хранения передаются блоками, в необработанном виде. Это позволяет использовать SAN практически так же, как если бы они были подключены к серверу напрямую, а не по сети. Хост-система может создавать на SAN логические разделы, форматировать их и использовать как обычные локальные жесткие диски. В этом заключается основное отличие SAN от сетевых хранилищ (Network Area Storage, NAS), которые работают на уровне файловой системы и используют протоколы передачи файлов, такие как SMB или CIFS.
Технология iSCSI была разработана как более дешевая альтернатива Fibre Channel (FC). Системы на базе iSCSI поддерживают стандартные протоколы и могут быть построены на базе любой существующей сетевой инфраструктуры, поддерживающей протокол IP. Для работы iSCSI может использовать самые обычные сетевые устройства (коммутаторы, маршрутизаторы, сетевые адаптеры и т.п), тогда как для FC требуются специальные HBA-адаптеры, оптические кабеля и прочее дорогостоящее оборудование.
Архитектура iSCSI является клиент-серверной и включает в себя следующие компоненты:
iSCSI Initiator — клиентский компонент, который отправляет запросы на подключение компоненту iSCSI Target, находящемуся на стороне сервера. Инициатор может быть реализован программно, в виде драйвера, либо аппаратно, в виде специального iSCSI адаптера.
iSCSI Target — серверный компонент, слушающий клиентские запросы и обеспечивающий установку соединения между клиентом и сервером iSCSI. Кроме того, таргет связан с виртуальными дисками iSCSI, и после установки соединения все виртуальные диски, связанные с этим таргетом, становятся доступны через инициатор. В качестве iSCSI Target может выступать как специализированная СХД, так и обычный Windows сервер с установленной ролью iSCSI Target.
Виртуальные диски iSCSI — используются для разбиения дискового пространства на логические разделы (Logical Unit Number, LUN). В Windows Server 2012 iSCSI LUN представляют из себя обычные виртуальные диски формата VHDVHDX. Кстати, в Windows Server 2012 для iSCSI поддерживался только формат VHD, что ставило ограничение в 2ТБ на максимальный размер LUN. В Windows Server 2012 R2 используется формат VHDX, что позволяет создавать LUN-ы размером до 64ТБ.
А теперь остановимся и уточним некоторые моменты:
• На каждом iSCSI сервере может быть один или несколько iSCSI Target;
• Каждый iSCSI Target может быть подключен к одному или нескольким виртуальным дискам;
• Каждый iSCSI Target может обслуживать одно или несколько подключений от iSCSI Initiator;
• В свою очередь, каждый iSCSI Initiator может подключаться к одному или нескольким iSCSI Target и, следовательно, к одному или нескольким виртуальным дискам.
Кроме того, в Windows Server 2012 поддерживается loopback-конфигурация, в которой и Target и Initiator могут находиться на одном и том же сервере.
В операционных системах Microsoft поддержка iSCSI появилась довольно давно. Первая версия Microsoft iSCSI Initiator устанавливалась в качестве отдельного компонента в Windows 2000, Windows XP SP2 и Windows Server 2003 SP1, а начиная с Windows Server 2008 и Vista iSCSI Initiator был встроен в операционную систему.
Что касается iSCSI Target, то изначально он входил в специальную версию серверной ОС Windows Data Storage Server 2003, которая была предназначена для построения систем хранения и поставлялась только в предустановленом виде. Однако с 2011 года компонент Microsoft iSCSI Software Target 3.3 стал доступен для загрузки и установки на Windows Server 2008R2, а в Windows Server 2012 он полностью интегрирован в систему и устанавливается в качестве роли сервера.
На этом закончим теоретическую часть и приступим к практике. Для настройки возьмем самый простой вариант, в качестве подопытных используем два сервера с установленной Windows Server 2012 R2: SRV2 для роли iSCSI Target и SRV3 для iSCSI Initiator.
Запуск службы iSCSI Initiator
Для начала проверим состояние службы инициатора на SRV3. Для этого открываем Server Manager и в меню «Tools» выбираем пункт «iSCSI Initiator».

Как видите, по умолчанию служба не запущена. Нажав на «Yes» в диалоговом окне, мы стартуем службу iSCSI Initiator и поставим ее в режим автоматического запуска.

Затем в окне свойств переходим на вкладку «Configuration» и запоминаем значение IQN, оно пригодится нам при настройке сервера.
IQN (iSCSI qualified name) — это уникальный идентификатор, назначаемый для каждого iSCSI Target и Initiator. IQN формируется из даты (месяц и год) регистрации домена, официального имени домена, написанного в обратном порядке и любого произвольного имени, например имени сервера. Получается примерно так: iqn:1991-05.com.microsoft:srv3.contoso.com

Стартовать сервис iSCSI Initiator и установить режим его запуска можно и из консоли PowerShell, следующими командами:
Start-Service msiscsi
Set-Service msiscsi -StartupType automatic
Установка роли iSCSI Target Server
Теперь перейдем на SRV2 и приступим к настройке серверной части. Первое, что нам надо сделать — это установить на сервер роль iSCSI Target. Открываем Server Manager, переходим по ссылке «Add roles and features»

И выбираем роль «iSCSI Target Server», которая находится в разделе File and Storage ServicesFile and iSCSI Services.

Либо воспользуемся командой PowerShell:
Install-WindowsFeature -Name FS-iSCSITarget-Server
Подготовка диска
Теперь подготовим физический диск, который будет использоваться для хранения виртуальных iSCSI дисков. Специально для этой цели к серверу подключен новый жесткий диск размером 120Гб. На данный момент диск неактивен (Offline). Для его активации в Server Manager переходим в раздел File and Storage Services -> Disks, кликаем на диске и переводим его в Online.

Теперь на этом диске надо создать новый раздел (или том), для чего в контекстном меню выбираем пункт New Volume.

Выбираем физический диск, на котором будет создаваться том

указываем размер тома

и выбираем букву диска.

Затем выбираем для диска файловую систему, размер сектора и указываем метку тома. Здесь напомню, что виртуальные диски iSCSI можно создавать только на томах NTFS, новая файловая система ReFS (Resilient File System) не поддерживается.

Смотрим суммарную информацию, и если все правильно, то жмем «Create», запуская создание тома.

Те же действия можно проделать с помощью PowerShell. Находим нужный диск:
Переводим его в online:
Set-Disk -Number 1 -IsOffline $false
Initialize-Disk -Number 1
New-Partition -DiskNumber 1 -UseMaximumSize -DriveLetter D
И форматируем его в NTFS:
Format-Volume -DriveLetter D -FileSystem NTFS -NewFileSystemLabel ″iSCSI Storage″
Создание виртуальных дисков iSCSI
Следующим пунктом нашей программы идет создание виртуальных iSCSI дисков. Для этого переходим в раздел iSCSI и кликаем по ссылке, запуская очередной мастер.

Выбираем том, на котором будет храниться виртуальный диск.

Даем диску имя и описание.

Указываем размер виртуального диска и его тип. Выбирать можно из трех вариантов:
• Fixed size (фиксированного размера) — создаваемый диск сразу занимает весь выделенный объем. Это наиболее производительный, но наименее экономичный вариант;
• Dynamically expanding (динамически расширяемый) — изначально создается диск минимального размера, который затем динамически изменяется в зависимости от количества записанных на него данных. Наилучший вариант в плане использования дискового пространства;
• Differencing (разностный) — в этом варианте нужно указать расположение родительского диска, с которым будет связан создаваемый диск. Разностный диск может быть как фиксированным, так и динамическим, в зависимости от типа родителя. У этого типа дисков есть свои преимущества, но использовать их для iSCSI лично я особого смысла не вижу.

Теперь нужно указать iSCSI Target, к которому будет подключен данный диск. Поскольку на сервере не создано ни одного таргета, выбираем «New iSCSI target».

Даем таргету имя и описание.

И указываем сервера, которые могут получить к нему доступ.

При выборе серверов можно воспользоваться двумя способами. Если инициатор находится на Windows Server 2012 или Windows 8, то можно просто нажать «Browse» и выбрать нужный сервер из списка. Для более старых систем надо вручную ввести идентификатор сервера. В качестве идентификатора можно указать IQN инициатора, DNS имя или IP-адрес сервера, либо MAC-адрес сетевого адаптера.

Идем дальше. На следующей странице можно настроить аутентификацию по протоколу CHAP между серверами. CHAP (Challenge Handshake Authentication Protocol) — это протокол для проверки подлинности партнера по подключению, основанный на использовании общего пароля или секрета. Для iSCSI можно задействовать как одностороннюю, так и двухстороннюю (reverse) проверку подлинности CHAP.

Проверяем правильность настроек и запускаем создание диска.

Попробуем сделать все то же с помощью PowerShell. Создадим еще один виртуальный iSCSI диск на 20ГБ командой:
New-IscsiVirtualDisk -Path D:iSCSIVirtualDisksiSCSI2.vhdx
Обратите внимание, что по умолчанию создается динамический диск, для создания VHD фиксированного размера надо воспользоваться ключом -UseFixed.

Теперь создаем второй iSCSI Target c именем iscsi-target-2 и в качестве сервера доступа укажем IQN SRV3:
New-IscsiServerTarget -TargetName iscsi-target-2 -InitiatorIds ″IQN:iqn.1991-05.com.microsoft:srv3.contoso.com″

И проверим результат командой:
Get-IscsiServerTarget | fl TargetName, LunMappings

Подключение
Возвращаемся на SRV3, открываем окно свойств инициатора, переходим на вкладку Discovery и жмем кнопку Discover Portal.

Вводим имя или IP-адрес портала и жмем ОК.

По умолчанию iSCSI использует все доступные IP-адреса, и если вы хотите, чтобы трафик iSCSI шел только через определенный сетевой интерфейс, то надо перейти в расширенные настройки и в поле «Connect using» указать нужный IP.

Теперь переходим на вкладку Targets, где должны отобразиться все доступные для подключения iSCSI Target. Выбираем нужный таргет и жмем «Connect».

Не забудьте отметить чекбокс «Add this connection to the list of Favorite Targets», который обеспечивает автоматическое подключение к таргету при выключении или перезагрузке машины.

Подключение состоялось, и если открыть оснастку управления дисками, то там появится новый диск. Дальше с этим диском поступаем так же, как с обычным жестким диском, подключенным локально — переводим в Online, инициализируем, создаем на нем разделы и форматируем.

То же самое можно выполнить с помощью PowerShell. Выводим список доступных таргетов:
И подключаемся к нужному:
Connect-IscsiTarget -NodeAddress ″iqn.1995-05.com.microsoft:srv2-iscsi-target-2-target″ -IsPersistent $true
Ключ -IsPersistent $true обеспечивает автоматическое подключение при выключении или перезагрузке.

Ну и для отключения можно воспользоваться командой Disconnect-IscsiTarge, вот так:
Disconnect-IscsiTarget -NodeAddress ″iqn.1995-05.com.microsoft:srv2-iscsi-target-2-target″ -Confirm:$false

Заключение
На этом настройка завершена. Как я говорил, это самый простой, базовый вариант настройки хранилища. В iSCSI имеется еще много интересных возможностей. Например, можно использовать службу имен iSCSI (iSNS) для простоты управления, многопутевой ввод-вывод (MPIO) для обеспечения отказоустойчивости, а для безопасности настроить аутентификацию по протоколу CHAP и шифрование трафика с помощью IPSec. О некоторых из этих фич я планирую написать в следующих статьях.
И в заключение важные моменты, которые надо учесть при организации системы хранения iSCSI:
• Развертывать iSCSI желательно в быстрой сети, не ниже Gigabit Ethernet;
• Сетевой трафик iSCSI рекомендуется отделить от остального трафика и вынести в отдельную сеть, например с помощью VLAN или физического разделения на подсети;
• Для обеспечения высокой доступности на сетевом уровне необходимо использовать технологию MPIO, либо сеансы с несколькими подключениями (MCS). Объединение сетевых адаптеров (NIC Teaming) для подключения к устройствам хранения iSCSI не поддерживается;
• При использовании технологии Storage Spaces можно хранить виртуальные диски iSCSI на Storage Spaces, но нельзя использовать LUN-ы iSCSI для создания Storage Spaces;
• Для хранения виртуальных дисков iSCSI нельзя использовать общие кластерные тома CSV (Cluster Shared Volume).
Мы уже не раз говорили об iSCSI и даже рассматривали процесс установки и настройки Microsoft iSCSI Target. Только ранее для этого было необходимо покупать ОС Windows Storage Server, которая поставлялась лишь с OEM оборудованием. Теперь же все желающие могут загрузить iSCSI Target с сайта Microsoft.
Что же находится внутри скачиваемого файла iSCSITargetDLC.EXE?

autorun.inf
kgd-page-servers-dynagrid.jpg
copyright.jpg
Documentation
Index.htm
wsr2logo.bmp
Описание, для начала откройте Index.htm
Microsoft iSCSI Software Target installer (64-bit only)
VSS and VDS providers for the iSCSI Target (64-bit)
VSS and VDS providers for the iSCSI Target (32-bit)
Сам iSCSI Target поддерживается на ОС Windows Server 2008 R2 Standard/Enterprise/Datacenter, только полная инсталляция (не Server Core) может выступать таргетом. Наличие Service Pack 1 крайне рекомендуется.

Установить iSCSI Target на Windows Server 2003/2008 не удастся. Также не получится установить его на 32-битной версии Windows 7.
Таргет поддерживает кластеризацию: если у вас есть общее дисковое хранилище (DAS/NAS/SAN), презентованное двум или более серверам, вы можете создать высокодоступный iSCSI Target. Для подключения дисков можно использовать стандартный iSCSI Initiator, идущий в составе с ОС или сторонние решения. Нельзя подключать инициатором диски с самого себя (совмещать Taget и Initiator на одной ОС). Для задач виртуализации iSCSI – идеальное решение. Как для построения небольших кластеров с высокодоступными виртуальными машинами, так и для создания кластеров из виртуальных машин. Напомню, в отличии от VMware в виртуальных машинах Hyper-V поддерживается создание кластеров на базе iSCSI – без ограничений на количество узлов в кластере.
В комплекте с таргетом идут VSS Provider и VDS Provider. Тем кто еще не знает, что это такое рекомендую почитать первоисточник по ссылкам.
Более детально правила поддержки iSCSI Target изложены на соответствующей странице TechNet.
Гм, по моему там всё совсем интуитивно.
Для начала на инициаторе (клиенте, которому будете отдавать диски) запустите Mictosoft iSCSI Initiator, при первом запуске он спросит, хотите ли вы перевести службу в автозапуск. Вы, конечно, хотите. и
На iSCSI Target сервере вы создаёте новый таргет. Далее в свойствах этого таргета вы должны предоставить доступ к нему, я предпочитаю делать это по IP адресу, а не по IQN, но это вопрос вкусов. Разрешите своему клиенту доступ к таргету.
Создайте новый VDisk и привяжите этот диск к этому таргету.
Теперь со стороны инициатора укажите IP таргета и соеденитесь с ним. В закладке Volumes увидите тома, доступные для этого клиента. Они же после подключения доступны в Disk Manager.
ПО предназначено для доставки виртуальных дисков. А вот кому вы будете доставлять диски – решать вам. Физическим серверам, персональным компьютерам, виртуальным машинам Hyper-V или даже (бррр) сторонним виртуальным мащинам.
Большое спасибо. Всё я делал правильно, не догадался только вот об этом: "…Далее в свойствах этого таргета вы должны предоставить доступ к нему…". Вот у меня и не находилась цель. Теперь всё в порядке.
Не могли бы Вы пояснить процесс создания таргета? Вроде всё просто, но у меня почему-то не работает. Создаю цель, прицепляю к ней vhd файл, назначаю IQN… Но подключиться не получается.
При попытке обнаружения инициатором ошибок не выходит, но конечные объекты не обнаруживаются. Может подскажете, что можно попробовать…
Я не говорю, что оно не будет работать.
Поддержки не будет. Ни от Microsoft, ни от VMware.
И это не просто я говорю, а утверждает сама VMware в своём документе.
У вас Jumbo Frames включен? Нужен как на таргете, так и на инициаторах.
Можете создавать по VHD для ОС виртуальных машин не на едином виртуально таргете, как сейчас (VHD внутри VHD), а создавать по виртуальному диску (VHD) на таргет сервере, презентовать это узлам виртуализации и использовать как Pass-through. Теоретически это будет быстрее.
Очевидно, что нормальный iSCSI должен быть аппаратным решением. В таком случае он будет быстрее чем Fibre Channel. И дешевле. И намного более гибок.
Согласно официальному документу VMware о поддержке кластеров из виртуальных машин – использование кластеров с дисками iSCSI, NFS и FCoE не поддерживается (в 4.1 включительно). Единственно поддерживаемые кластеры на VMware это ДВУХузловые (не более) кластеры с эмулируемым serial shared disk.
iSCSI, видимо, работать будет. Но раз VMware явно это не поддерживает, то ни о какой поддержке со стороны Microsoft таких систем речи не идёт. Всё честно.
Приветствую, не могли бы Вы уточни поконкретнее, что имеется ввиду: "в отличии от VMware в виртуальных машинах Hyper-V поддерживается создание кластеров на базе iSCSI"?
странно. а у нас долго уже на VMWare работает кластер на iSCSI.
но раз Alex A. Kibkalo [MSFT] говорит что не поддерживается, то пусть так и будет
Здравствуйте, это ПО предназнаечено только для "доставки" виртуальных дисков? (для виртуальных машин). Нельза шарить целиком hdd? (не для виртуальных машин)
Понятно, спасибо. Хотел "легко" отелаться :). Посмотрел StarWind – тоже виртуальный диски раздаются. Выходит отдавать "железо" можно только аппаратно? Столкнулся с тем, что большие vhd тормозят сервера (одновременный доступ) при загрузке ОС (не факт что загрузится), приходится "нарезать", что неудобно и критично.
> У вас Jumbo Frames включен
Спасибо за подсказку, был выключен. Попробую с ним. Диски раздаются не для виртуальных машин.





