Заметки о Windows и других программных продуктах Microsoft...

Настройка iSCSI хранилища в Windows Server 2012

Настройка iSCSI хранилища в Windows Server 2012

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 представляют из себя обычные виртуальные диски формата VHD\VHDX. Кстати, в 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».

Запуск iSCSI Initiator

 

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

подтверждение на запуск сервиса iSCSI Initiator

 

Затем в окне свойств переходим на вкладку «Configuration» и запоминаем значение IQN, оно пригодится нам при настройке сервера.

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

свойства iSCSI Initiator

 

Стартовать сервис iSCSI Initiator и установить режим его запуска можно и из консоли PowerShell, следующими командами:

Start-Service msiscsi
Set-Service msiscsi -StartupType automatic

Установка роли iSCSI Target Server

Теперь перейдем на SRV2 и приступим к настройке серверной части. Первое, что нам надо сделать — это установить на сервер роль iSCSI Target. Открываем Server Manager, переходим по ссылке «Add roles and features»

Server Manager

 

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

установка роли iSCSI Target

 

Либо воспользуемся командой 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. Находим нужный диск:

Get-Disk | where {$_.OperationalStatus -eq ″Offline″}

Переводим его в 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 и кликаем по ссылке, запуская очередной мастер.

создание виртуального iSCSI диска

 

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

выбор тома для размещения виртуального диска

 

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

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

 

Указываем размер виртуального диска и его тип. Выбирать можно из трех вариантов:

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

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

 

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

указываем iSCSI Target

 

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

задаем имя для 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:\iSCSIVirtualDisks\iSCSI2.vhdx

Обратите внимание, что по умолчанию создается динамический диск, для создания VHD фиксированного размера надо воспользоваться ключом -UseFixed.

создание виртуального диска из PowerShell

 

Теперь создаем второй iSCSI Target c именем iscsi-target-2 и в качестве сервера доступа укажем IQN SRV3:

New-IscsiServerTarget -TargetName iscsi-target-2 -InitiatorIds ″IQN:iqn.1991-05.com.microsoft:srv3.contoso.com″

создание iSCSI Target и подключение диска

 

И проверим результат командой:

Get-IscsiServerTarget | fl TargetName, LunMappings

вывод информации о iSCSI Target

Подключение

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

окно Discover свойств iSCSI Initiator

 

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

настройка подключения к iSCSI Target

 

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

расширенная настройка подключения к iSCSI Target

 

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

выбор iSCSI Target

 

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

подключение к iSCSI Target

 

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

оснастка Disk Management

 

То же самое можно выполнить с помощью PowerShell. Выводим список доступных таргетов:

Get-IscsiTarget | fl

И подключаемся к нужному:

Connect-IscsiTarget -NodeAddress ″iqn.1995-05.com.microsoft:srv2-iscsi-target-2-target″ -IsPersistent $true

Ключ -IsPersistent $true обеспечивает автоматическое подключение при выключении или перезагрузке.

подключение к iSCSI Target из PowerShell

 

Ну и для отключения можно воспользоваться командой Disconnect-IscsiTarge, вот так:

Disconnect-IscsiTarget -NodeAddress ″iqn.1995-05.com.microsoft:srv2-iscsi-target-2-target″ -Confirm:$false

отключение к iSCSI Target из PowerShell

Заключение

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

Оба компьютера будут видеть один и тот же диск. С одновременной работой сложнее, для этого надо собрать кластер и создать на этом диске общий кластерный ресурс (Cluster Shared Volume).

Вадим

Скажите пожалуйста, если диск подключенный по iSCSI в определенный момент отключился, например компьютер с таргетом временно отключился от сети, то есть ли способ восстановить подключение автоматически после того ка компьютер с таргетом снова подключится к сети?

Насколько я помню, подключение и так восстанавливается автоматически.

Вадим

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

Вадим

проблему удалось решить. в случае использования mpio необходимо произвести настройку iSCSI инициатора так как описано в данном руководстве, но в самом последнем диалоговом окне Connect To Target нажать кнопку Adwanced и, попав тем самым в диалоговое окно Adwanced Settings, задать настройки Local adapter, Initiator IP, Target portal IP

Андрей

Спасибо большое за статью, а то зае.. искать

В разделе «Подключение» указано «…Возвращаемся на SRV2…». Это ошибка? Нам же нужен Initiator, а инициатором выступает SRV3. Спасибо за статью!

Да, ошибся немного 🙂
Сейчас поправим.

Сергей

При настройке Targeta для аутентификации CHAP есть возможноть ввода имени пользователя и пароля, а при настройке инициатора для аутентификации CHAP есть возможность ввода только пароля. Вопрос: под каким именем пользователя будет аутентифицироваться инициатор к target — у ?

В данном случае имя пользователя — это имя, с которым инициатор будет обращаться к таргету, напр. его IQN. Соответственно на таргете прописываем имя инициатора и секрет для него, на инициаторе прописываем секрет, с которым он будет обращаться к таргету.

Сергей

А если на таргете настроен инициатор по ip адресу? то тогда надо прописывать в качестве пользователя на таргете имя типа 10.6.56.19 ?

По идее да.

У меня возникло пара проблем при настройке iSCSI А именно:
На шаге «Подготовка диска» оказалость, что физический диск уже «В сети» что не совпадает с вашей инсрукцией. И когда на нем я кликал правой кнопкой мыши (ПКМ) чтобы создать том, то все четыре команды меню были неактивны. Я решил пропустить эти шаги и попробовал отформатировать диск, что тоже было безуспешно! Я получил сообщение: «Windows не удалось закончить форматирование D» Даже в программе «Управление дисками» через ПКМ на нужном разделе команда «Форматировать» была неактивна. И в последствии, когда я попробовал создать виртуальный диск iSCSI снова получил ошибку «Не удается подключиться к компьютеру» Помогите пожалуста решить проблемму!

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

Как это сделать??? Я не силен в системном администрировании( Подскажите, какие команды ввести в PowerShell, чтобы выполнить подготовку диска? Спасибо!

Я в статье описывал эти команды:

Get-Disk | where {$_.OperationalStatus -eq ″Offline″}
Set-Disk -Number 1 -IsOffline $false
Initialize-Disk -Number 1
New-Partition -DiskNumber 1 -UseMaximumSize -DriveLetter D
Format-Volume -DriveLetter D -FileSystem NTFS -NewFileSystemLabel ″iSCSI Storage″

Максим

Кирилл, скажите, а можно ли размещать на подключенном iScsi диске виртуальные машины Hyper-V?
То есть на физическом сервере подключен по сети iSCSI диск, и на нём расположен VHD файл виртуальной машины.

Да, конечно можно.

Александр

Кирилл, здравствуйте.
Есть два сервера Xeon x6 e5 с дисками sas по 600 мб, но нет внешнего СХД (денег не дают). На серверах установлен Win 2012 R2. Возможно ли создание кластера в такой комплектации, без внешнего СХД, используя дисковое пространство серверов, установив на них цель и инициатор iSCSI? Под этот вариант используют StarWind, но с некоторых пор она стала платной к сожалению, неужели средствами майкрософт нельзя выполнить аналогичную задачу?

Сергей

Пишете, что максимальный размер iSCSI диска 64 ТБ, однако мастер говорит, что от 2 до 16. Причем позволяет сделать только 15.9 ТБ. На физическом диске создался файл с расширением vhdx.

Павел

Добрый день!
Создал iSCSI подключил к виртуалкам и после перезагрузки диск появляется не сразу, а через 20-30 секунд. На тот диск летят логи sql и соответственно из за этого простоя sql выпадает в ошибку. Что можете посоветовать?

Очень помогла статья!

Максим

Спасибо!!!!
Если создаю диск в винде, то есть смысл выбирать динамический или в для аскази любой диск можно растянуть потом?

Ответить