Настройка и подключение iSCSI-хранилища в Windows Server

В этой статье мы рассмотрим, как создать iSCSI хранилище на базе виртуальных дисков на хосте Windows Server 2025 и подключить его по сети на других хостах (в Windows Server 2022/2019/2016 все настраивается аналогично).

Сетевой протокол iSCSI (Internet Small Computer System) используется для организации доступа к удаленной системе хранения через IP сеть. Протокол iSCSI позволяет подключать удаленные хранилища через обычную TCP/IP сеть без использования Fibre Channel и дополнительного оборудования (контроллеров). Основные компоненты iSCSI:

  • iSCSI Target Server — серверный компонент протокола iSCSI, предоставляющий клиентам доступ к блочным устройствам хранения (в Windows это виртуальные VHDX диски)
  • iSCSI Initiator — клиентская часть протокола, которая устанавливает соединение с таргетом и позволяет организовать доступ к удаленному диски так, как будто он подключен локально
  • IQN (iSCSI Qualified Name) — уникальный идентификатор iSCSI устройства (есть как у таргета, так и инициатора)

Настройка iSCSI target в Windows Server

Хост с Windows Server может выступать в качестве iSCSI таргета, который публикует виртуальные диски и предоставляет к ним доступ другим сервера (iSCSI инициаторам

На хосте Windows Server, который будет предоставлять доступ к своему хранилищу нужно включить iSCSI target (роль iSCSI Target Server). Включить ее можно через Server Manager -> File and Storage Services -> File and iSCSI Services.

Или установить роль с помощью PowerShell:

Install-WindowsFeature -Name FS-iSCSITarget-Server

В целях улучшения производительности iSCSI хранилищ на сервере для трафика хранения желательно выделить отдельный сетевой адаптер или группу адаптеров (NIC teaming).

Теперь на iSCSI сервере нужно создать виртуальный диск iSCSI. Перейдите в Server Manager -> File and Storage Services -> iSCSI, нажмите New iSCSI Virtual Disk.

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

При создании диска нужно указать его размер и тип диска.

  • Fixed Size – диск фиксированного размера, который при создании сразу занимает все выделенное для него место. Это формат диска обеспечивает лучшую производительность и подходит для продуктивных систем с высокой дисковой активностью и повышенными требованиями к IOPS
  • Dynamically expanding – такой диск занимает изначально немного место и расширяется по мере записи в него. Такой тип диска позволяет сэкономить место на хранилище, но уступает в скорости фиксированным дискам из за необходимости постоянного расширения
  • Differencingдифференциальный (или разностный диск), который основывается на некотором родительском диске и содержит изменения относительного родительского (используется крайне редко, обычно в сценариях виртуализации с базовым образом/VDI).

На шаге Access Servers нужно указать iSCSI инициаторы, которые смогут подключаться к данному iSCSI таргет. Выберите один из вариантов подключения:

  • IQN (придется сначала включить iSCSI initiator на сервере и скопировать IQN)
  • DNS Name
  • IP Address
  • MAC Address

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

На следующем этапе можно включить аутентификацию CHAP для доступа к iSCSI таргету. Это позволит подключаться к iSCSI таргету только после выполнения аутентификации (нужно указать имя и пароль для подключения).

Проверьте, что виртуальный диск iscsiDisk2.vhdx создался в каталоге D:iSCSIVirtualDisks (папка по умолчанию).

Можно создать iSCSI диск с помощью PowerShell. Создадим виртуальный диск размером 200 Гб:

New-IscsiVirtualDisk -Path D:iSCSIVirtualDisksiscsiDisk2.vhdx -Size 200GB

По умолчанию создается динамический диск размером 4,096 Кб, независимо от того, сколько было указано параметром Size.

Чтобы создать диск фиксированного размер, добавьте UseFixed:

New-IscsiVirtualDisk -Path D:iSCSIVirtualDisksiscsiDisk2.vhdx -Size 200GB –UseFixed

Далее присвоим таргету имя и разрешим доступ с IP адреса сервера-инициатора:

New-IscsiServerTarget -TargetName "iscsiTarget33" -InitiatorId @("IPAddress:172.17.244.8")

Вместо IP-адреса для идентификации инициатора можно использовать IQN:

New-IscsiServerTarget -TargetName iscsiTarget33 -InitiatorIds “IQN: 1991-05.com.microsoft:win2019test.ddd.com”

Для получения IQN на инициаторе используйте команду:

(Get-InitiatorPort).NodeAddress

Вывести текущие настройки iSCSI таргета:

Get-IscsiServerTarget | fl

Вывести список iSCSI-дисков, привязанных к таргету:

Get-IscsiServerTarget | Format-List TargetName, LunMappings

Получить полное имя таргета можно с помощью командлета
Get-IscsiTarget , а затем подключить таргет:

Connect-IscsiTarget -NodeAddress iqn.1991-05.com.microsoft:win2019test-iscsitarget33-target

Настройка iSCSI Initiator в Windows Server

Следующий шаг – подключение к созданному iSCSI диску со сервера-инициатора. Перейдите в панель управления Control Panel, запустите iSCSI initiator (или выполните команду iscsicpl.exe ).

Графическая консоль iscsicpl доступна в редакциях Windows Server без графического интерфейса (Windows Server Core и Windows Hyper-V Server).

При первом запуске панели управления iSCSI initiator вам будет предложено запустить службу Microsoft iSCSI Initiator Service и настроить для нее автоматический запуск.

Перейдите на вкладку Discovery, нажмите на кнопку Discover Portal и введите ввести IP-адрес сервера iSCSI-таргет. По умолчанию iSCSI использует все доступные IP-адреса для доступа к таргету. Чтобы iSCSI трафик ходил только через определённый сетевой интерфейс (выше мы уже писали, что для iSCSI трафика лучше выделить отдельную NIC), нужно нажать кнопку Advanced, и изменить значения по умолчанию в выпадающих списках: Local Adapter –> Microsoft iSCSI Initiator, Initiator IP –> 172.17.244.8.

Для подключения к iSCSI хранилищу необходимо открыть TCP порты 860 и 3260 в Windows Firewall.

Теперь переключитесь на первую вкладку Targets, где появится новое подключение. Чтобы включить его, нажмите Connect -> Advanced, выберите значения из выпадающих полей, включите галочку Enable CHAP log on, укажите имя пользователя и пароль (который был задан на таргете). Проверьте, что включена опции Add the connection to the list of Favorite Targets (обеспечит автоматическое подключение к iSCSI таргету после перезагрузки хоста).

Если между iSCSI-инициатором (клиентом) и iSCSI-таргетом (устройством хранения) доступно несколько сетевых путей, нужно включить опцию Enable multi-path. Это позволит обеспечить отказоустойчивость и балансировку нагрузки с помощью функции MPIO (Multipath I/O) (рассмотрено ниже).

Статус подключения должен изменится на Connected.

Осталось инициализировать сам iSCSI-диск, который сначала находится в состоянии Offline. Для этого на сервере-инициаторе необходимо в консоли Disk Management (diskmgmt.msc) в контекстном меню нового диска выбрать пункт Online, а затем – Initialize Disk. Создайте на новом диске один или несколько разделов, присвойте метку и букву диска. Отформатируйте в файловой системе NTFS.

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

Такие виртуальные iSCSI диски можно использовать в Windows Server для создания виртуального RAM диска в оперативной памяти.

Можно подключить диск с iSCSI таргета на инициаторе через PowerShell.

Запустите службу Microsoft iSCSI Initiator Service

Start-Service -Name MSiSCSI

Set-Service -Name MSiSCSI -StartupType Automatic

Добавьте iSCSI таргет:

New-IscsiTargetPortal -TargetPortalAddress "192.168.15.10"

Вывести список доступных iSCSI таргетов:

Get-IscsiTarget

Подключите нужный таргет (используя NodeAddress) и введите данные для CHAP аутентфикации (если используется):

Connect-IscsiTarget -NodeAddress iqn.1991-05.com.microsoft:s-fs01-wsfs-q1-target -AuthenticationType ONEWAYCHAP -ChapUsername "user" -ChapSecret "Passw0rd1" -IsPersistent $true -IsMultipathEnabled $true

Для быстрой инициализации и форматирования нового диска можно использовать следующий однострочный PowerShell (см. пример в статье об управления дисками и разделами из PowerShell):

Get-Disk |Where-Object PartitionStyle -eq 'RAW' |Initialize-Disk -PartitionStyle MBR -PassThru |New-Partition -AssignDriveLetter -UseMaximumSize |Format-Volume -FileSystem NTFS -Confirm:$false

Включаем MPIO для iSCSI в Windows Server

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

Для этого в Windows Server должен быть установлен компонент Multipath I/0 (MPIO):

Enable-WindowsOptionalFeature -Online -FeatureName MultiPathIO

Откройте консоль управления MPIO:

mpiocpl.exe

Перейдите на вкладку Discover Multi-Paths, включите опцию Add support for iSCSI devices и нажмите Add.

Перезагрузите сервер.

После включения MPIO добавьте таргет по второму (и последующему) пути (например по второму IP адресу сервера iSCSI) с включенной опцией Enable multi-path.

Теперь, если на вкладке Target кликнуть по кнопке Device, можно увидеть что теперь LUN доступен по двум разным путям.

Если нажать кнопку MPIO, здесь можно настроить политику выбора путей. Для Load balance policy доступы такие опции:

  • Round Robin — все возможные пути используются по очереди, для балансировки нагрузки (по умолчанию)
  • Fail over only — используется только один активный путь, остальные находятся в режиме ожидания
  • Round Robin with Subset — позволяет указать несколько основных путей (как в Round Robin), а также несколько дополнительных
  • Least Queue Depth — использовать путь с наименьшей глубиной очереди I/O
  • Weighted Paths — для каждого пути назначается вес (приоритет). Используется доступный путь с наименьшим весом
  • Least Blocks — выбирается путь, по которому было передано наименьшее количество блоков данных (равномерное распределение нагрузки)

Вы можете выбрать нужную вам политику выбора путей и балансировки.

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


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *