Microsoft Multipath I/O

Написав заметку об использовании Microsoft MPIO, встроенного в ОС Windows Server 2008/R2, я получил неожиданно много откликов (и запретил на будущее анонимные комментарии). Сегодня я вкратце расскажу о методах работы Microsoft Multipath I/O и вариантах его настройки в Server Core.

Что такое MPIO я уже описал в прошлой заметке, сейчас поговорим о теории.

Multipath I/O в Windows Server 2008 R2 включает в себя стандартный Device-Specific Module (DSM), который умеет работать с дисковыми системами, поддерживающими технологию Asymmetric Logical Unit Access (ALUA) согласно спецификации SPC-3, а также с дисковыми системами, работающими в режиме «Active/Active».

Режимы работы Microsoft MPIO DSM

Microsoft Multipath I/O DSM позволяет использовать различные режимы балансировки. Очевидно, что возможность использовать тот или ин6ой режим зависит, в первую очередь, от аппаратных возможностей контроллера — ALUA или Active/Active — в подключенном дисковом хранилище. Рассмотрим эти режимы.

  • Failover. Не производит никакой балансировки. Указывается основной (первичный) путь и несколько резервных (вторичных) путей. Все операции с дисковым хранилищем осуществляются по первичному пути. В случае его выхода из строя (недоступности данных по этому пути) система начинает использовать один из резервных путей. Резервные пути указываются в порядке уменьшения приоритета их использования, начиная список с наиболее предпочтительного.
  • Failback. Режим, позволяющий указать заведомо предпочтительный путь. В случае выхода его из строя используются другие пути. Однако, как только дисковое хранилище вновь доступно по предпочтительному пути, система возвращается к его использованию.
  • Round-robin. Режим, когда DSM использует все возможные пути по очереди для балансировки.
  • Round-robin with subset of paths. Режим, позволяющий указать несколько путей, используемых как первичные в режиме Round-robin, а также указать один или несколько резервных путей. Пока доступен хотя бы один из первичных путей, система использует их с балнсировкой round-robin. При доступности лишь резервных путей, система использует один из них в порядке уменьшения приоритета. Как только хотя бы один из основных путей становится вновь доступен, система возвращается к использованию балансировки на работоспособных основных путях.
  • Dynamic Least Queue Depth. DSM направляет запросы на тот путь, который в настоящий момент имеет наименьшее количество запросов в очереди на исполнение.
  • Weighted Path. Сиситема назначает каждому пути некий вес (стоимость), обозначающую относительный приоритет использования данного пути. Чем больше вес, тем ниже приоритет. DSM выбирает для операций доступный путь с наименьшим весом.
  • Least Block (только в Windows Server 2008 R2). Режим, направляющий I/O запросы на тот путь, в очереди которого на передачу стоит наименьшее число блоков данных.

В Windows Server 2008 R2 по умолчанию для контроллеров Active/Active выбирается режим Round-robin, а для контроллеров ALUA SPC-3 выбирается режим Failover. В Windows Server 2008 по умолчанию всегда предлагается режим Failover.

Работа в Server Core

Для установки Microsoft Multipath I/O в Server Core следует воспользоваться одной из следующих команд.

  • start /wait "%SystemRoot%\System32\OCSetup.exe" MultipathIo (для Windows Server 2008);
  • "%SystemRoot%\System32\DISM.exe" /Online /Enable-Feature:"MultipathIo" (для Windows Server 2008 R2);
  • Add-WindowsFeature -name "Multipath-IO" (для Windwos Server 2008 R2 с установленным Windows PowerShell и импортированным модулем ServerManager).

Для настройки из командной строки используется утилита "%SystemRoot%\System32\MPClaim.exe". Синтаксис утилиты выклядит примерно так:

"%SystemRoot%\System32\MPClaim.exe" restart_option install_switch device_switch device_hwid

Посмотреть примеры использования утилиты можно на страницах TechNet.

Кроме того, в Windows Server 2008 R2 можно запустить графическую утилиту командой "%SystemRoot%\System32\MPIOCPL.exe".