Установка и настройка MPIO в Windows Server 2016/2012R2

Установка и настройка MPIO в Windows Server 2016/2012R2

В этой статье мы рассмотрим особенности реализации, установки и настройки MPIO в Windows Server 2016/2012 R2. MPIO (MultiPath Input Output) или многопутевой ввод-вывод, это технология для построения отказоустойчивого транспорта к системе хранения данных (СХД) или выполняющему эти функции серверу за счет использования избыточных путей. Дополнительные пути между сервером и хранилищем создаются с использованием избыточных физических компонентов (коммутаторы, кабели, адаптеры или сетевые карты). Обратная сторона такой избыточности – операционная система может видеть один и тот же LUN по разным путям и считать их разными устройствами.

Если сервер может получить доступ к логическому диску (LUN) через несколько адаптеров инициатора iSCSI или несколько портов Fibre Channel, то в диспетчере устройств/дисков на системе без установленного MPIO модуля будет присутствовать большее количество LUN, чем презентовано на самом деле ( = количество путей к LUN * количество презентованных LUN).

На следующем скриншоте видно (список подключенных дисков можно вывести с помощью get-disk), что Windows видит без MPIO видит 2 диска по разным путям, которые по факту являются одним LUN:

windows server видит дубли LUN дисков при подключении без mpio

Если ОС поддерживает MPIO, она будет видеть каждый из презентованных ей дисков в одном экземпляре. При включенном MPIO сервер может обращаться к данным на СХД по нескольким путям, что увеличивает скорость доступа к подключенному LUN и позволяет задействовать для доступа несколько сетевых или HBA-адаптеров.
MPIO может задействовать альтернативный логический путь при выходе из строя одного/нескольких компонентов, заставив операционную систему использовать для доступа к логическому диску (LUN) резервный маршрут, сохраняя непрерывность доступа к данным. Таким образом MPIO является важным компонентом при реализации отказоустойчивой системы доступа к данным, кроме того входящие в состав MPIO модули позволяют распределять нагрузку между различными путями к одному и тому же LUN-у.

Совет. Если ОС не поддерживает MPIO, то для предотвращения потери данных нужно уменьшить количество путей к LUN до 1. На сервере нужно оставить включенным только один порт Fiber Channel или адаптер iSCSI инициатора. Также нужно отключить дополнительные пути для данного LUN на уровне СХД и коммутаторов.

Установка MPIO в Windows Server 2016/2012R2

Windows Server поддерживает многопутевой ввод-вывода MPIO начиная с версии Windows Server 2008 R2. Технология Microsoft MPIO позволяет обеспечить высокую доступность и балансировку нагрузки посредством возможности организации нескольких подключений к СХД, не зависит от протоколов и поддерживает подключение дисковых массивов и хранилищ по iSCSI, Fiber Channel и хранилищ SAS.

MPIO-модуль в Windows Server по умолчанию не включен. Установить его в Windows Server 2016 можно двумя способами:

  • Из графического интерфейса с использованием консоли Server Manager
  • Из командной строки Powershell

Установка MPIO с помощью консоли Server Manager

  1. Откройте консоль Server Manager;
  2. В списке компонентов (Features) найдите и активируйте опцию Multipath I/O;установка Multipath-IO в windows server 2016
  3. Завершите установку компонента MPIO и перезагрузите сервер.

Установка MPIO с помощью Powershell

Запустите консоль PowerShell с правами администратора и для установки компонента выполните команду:

Add-WindowsFeature -Name 'Multipath-IO'

Add-WindowsFeature Multipath-IO powershell

Чтобы убедиться, что модуль MPIO установлен в вашем Windows Server, выполните:

Get-WindowsFeature -Name 'Multipath-IO'

powershell проверить наличие модуля Multipath-IO

Примечание. Для отключения MPIO выполните команду:

Remove-WindowsFeature -Name 'Multipath-IO'

Настройка MPIO в Windows Server 2016

После установки MPIO модуля, необходимо активировать его для LUN, которые доступны по нескольким путям. По умолчанию ОС видит каждое подключение к диску как разные логические диски (LUN).

Совет. Одним из компонентов MPIO является специальный модуль MSDSM (Microsoft Device Service Module), позволяющий управлять политиками балансировки нагрузки. По умолчанию MPIO устанавливается со стандартным Microsoft DSM, однако в большинстве случаев стоит установить DSM модуль, предоставляемый производителем СХД (IBM DSM, HP DSM MPIO и т.д.). Обычно скорость работы и функционал нативного DSM модуля выше, чем у стандартного DSM-модуля Microsoft (производитель пишет свои DSM модули с учетом специфики работы и особенностей своего железа)/

Разрешите модулю DSM от Microsoft (MSDSM) автоматически объединять SAN диски в зависимости от типа подключений. MSDSM автоматически определяет наличие LUN, имеющих несколько путей к СХД и поддерживает большинство популярных систем хранения.

Сделать это можно из командной строки:

  • Для SAS дисков:
    Enable-MSDSMAutomaticClaim -BusType SAS
  • Для iSCSI дисков:
    Enable-MSDSMAutomaticClaim -BusType iSCSI
Примечание. Эту же операцию можно выполнить с помощью утилиты mpclaim (появившуюся в Windows 2008 R2). Следующая команда проанализирует все устройства, обнаруженные системой, определит какие из них имеют несколько путей и включит поддержку MPIO для них. Опция
-r
[automatically reboot (if needed) without prompting] разрешает автоматическую перезагрузку сервера:

mpclaim.exe -r -i -a ""

Также вы можете включить DSM через графический интерфейс. Откройте консоль управления Server Manager и в меню Tools выберите пункт MPIO (или выполните команду mpiocpl).

Перейдите на вкладку Discover MultiPaths, включите опцию Add support for SAS devices (или Add support for iSCSI devices, если вы используете iSCSI хранилище) и нажмите Add. После этого перезагрузите сервер.

mpio windows server - включить поддержку iscsi

После перезагрузки откройте диспетчер устройств или диспетчер дисков и убедитесь, что количество подключенных дисков (LUN), доступных серверу уменьшилось в 2 раза (при наличии подключений к СХД по двум путям).

Вы можете управлять списком устройств, для которых включена поддержка MPIO на вкладке MPIO Devices (или командой
Get-MSDSMSupportedHw
).

доступные mpio устройства

Вы можете добавить новые MPIO устройства, нажав кнопку Add или из PowerShell:

New-MSDSMSupportedHw -VendorId  -ProductId 

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

Если вы подключаете iSCSI таргет по 2 путям и хотите использовать MPIO для этого подключения, нужно при подключении Target выбрать iSCSI LUN, нажать кнопку Connect и включить опцию Enable multipath.

включить поддержку mpio для iscsi LUN в Windows Server

Затем нажмите на кнопку Advanced и привяжите разные IP адреса инициатора к разным IP адресами target.

привязка IP адресов iscsi target к iniciator

С помощью PowerShell можно получить текущие настройки MPIO:

Get-MPIOSetting

Get-MPIOSetting

PathVerificationState     : Disabled
PathVerificationPeriod    : 30
PDORemovePeriod           : 20
RetryCount                : 3
RetryInterval             : 1
UseCustomPathRecoveryTime : Disabled
CustomPathRecoveryTime    : 40
DiskTimeoutValue          : 60

Можно изменить настройки MPIO таймеров так (например, установим рекомендованные настройки для flash массива):

Set-MPIOSetting -NewPathRecoveryInterval 20 -CustomPathRecovery Enabled -NewPDORemovePeriod 30 -NewDiskTimeout 60 -NewPathVerificationState Enabled

Доступны следующие политики балансировки MPIO:

  • FOO — Fail Over Only
  • RR — Round Robin
  • LQD — Least Queue Depth
  • LB — Least Blocks

Чтобы задать политику балансировки (например, Round Robin):

Set-MSDSMGlobalLoadBalancePolicy -Policy RR

Также политику балансировки можно изменить в свойствах подключенного LUN на вкладке MPIO. В этом примере для массива выбрана политика Round Robin.

настройка mpio балансировки для lun в свойствах диска

Чтобы увидеть полный список PowerShell команд, доступных в модуле MPIO, выполните команду:

Get-Command –Module Mpio

Список posh команд для mpio модуля

SAN Policy

В Windows имеется специальная политика дисков (SAN Policy), которая определяет, нужно ли автоматически монтировать диски при их подключении к хосту.

Текущую настройку SAN Policy можно получить с помощью diskpart. По умолчанию используется SAN политика Offline Shared.

Чтобы автоматически монтировать диски, нужно изменить значение SAN Policy на OnlineAll.

DISKPART> san policy=OnlineAll

san-policy OnlineAll

Возможные значение SAN policy:

OfflineAll Все диски по умолчанию в offline режиме
OfflineInternal Все диски на внутренних шинах в offline
OfflineShared Все диски, подключенные через iSCSI, FC или SAS в offline
OnlineAll Все диски автоматически переводятся в онлайн режим (рекомендуется)

Windows Server 2016
Установка и настройка MPIO в Windows Server 2016/2012R2