Mpio для windows 10

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

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

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

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

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

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

Add-WindowsFeature -Name ‘Multipath-IO’

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

Get-WindowsFeature -Name ‘Multipath-IO’

Remove-WindowsFeature -Name ‘Multipath-IO’

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

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

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

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

  • Для SAS дисков: Enable-MSDSMAutomaticClaim -BusType SAS
  • Для iSCSI дисков: Enable-MSDSMAutomaticClaim -BusType iSCSI

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. После этого перезагрузите сервер.

Читайте также:  Windows команды для работы с dns

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

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

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

New-MSDSMSupportedHw -VendorId -ProductId

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

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

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

Можно изменить настройки 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.

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

Get-Command –Module Mpio

SAN Policy

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

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

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

Настройка MPIO для iSCSI в Windows Server 2012

При хранении критически важных данных обеспечение высокой доступности является одной из основных задач. Для высокодоступных решений необходимо обеспечить избыточность на разных уровнях: на уровне дисковой подсистемы, на уровне транспорта, на уровне сервера или системы хранения. Одним из механизмов, предназначенных для обеспечения высокой доступности на транспортном уровне, является технология многопутевого ввода-вывода (Multi-Path Input-Output, MPIO).

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

Однако недостаточно просто подключить к серверу один LUN по нескольким путям. Операционная система не сможет понять, что она видит одно и то же устройство и подключит его дважды. Это чревато тем, что данные на диске будут перезаписаны или повреждены.

Технология MPIO как раз и предназначена для того, чтобы система видела каждый из презентованных ей дисков в единственном экземпляре. При наличии нескольких путей между сервером и устройством хранения MPIO обеспечивает маршрутизацию операций ввода\вывода по этим путям и перенаправление запросов в случае сбоя одного из путей. MPIO в Windows Server 2012 позволяет операционной системе определять и использовать до 32 путей между сервером и устройством хранения.

MPIO не зависит от протокола и может использоваться с интерфейсами Fibre Channel, Internet SCSI (iSCSI) и Serial Attached SCSI (SAS). В Windows Server MPIO состоит из двух элементов: компонента операционной системы под названием Multipath I/O и специального программного модуля Device-Specific Module (DSM). Модуль DSM поставляется производителем СХД и обеспечивает работу Microsoft MPIO с данной конкретной моделью оборудования. Кроме того, в Windows Server 2012 есть встроенный DSM, который также можно использовать с различными СХД.

Читайте также:  Узнать расположение папки linux

Примечание. Для работы с Microsoft DSM система хранения должна поддерживать SCSI Primary Commands-3 (SPC-3).

В предыдущей статье была описана настройка хранилища iSCSI на базе Windows Server 2012. Продолжая эту тему, я опишу настройку MPIO для обеспечения отказоустойчивости при подключении по iSCSI. В качестве хранилища выступает сервер SRV2 c установленной ролью iSCSI Target, в качестве клиента сервер SRV3. На каждом сервере несколько сетевых интерфейсов, подключенных к разным свичам для обеспечения большей надежности.

Все настройки будут производиться на клиенте, поэтому подключаемся к SRV3 и приступаем.

Установка компонента Multipath I/O

MPIO в Windows Server 2012 является дополнительным компонентом (Feature) и по умолчанию неактивен. Установить его можно из оснастки Server Manager, запустив мастер добавления ролей и компонентов и выбрав компонент Multipath I/O.

Также для включения MPIO мы можем воспользоваться PowerShell. Сначала проверяем состояние компонента:

Get-WindowsOptionalFeature -Online -FeatureName MultiPathIO

И если он неактивен (disabled), устанавливаем его:

Enable-WindowsOptionalFeature -Online -FeatureName MultiPathIO

Включение MPIO для iSCSI

Сама по себе установка компонента еще не означает, что система определит диски правильно. Поэтому следующим шагом является включение MPIO для iSCSI, для чего нам понадобится оснастка MPIO. Для ее запуска в Server Manager открываем меню Tools и выбираем пункт MPIO, либо нажимаем Win+R и вводим команду mpiocpl.exe.

Для включения поддержки MPIO для устройств iSCSI переходим на вкладку «Discover Multi-Paths», отмечаем чекбокс «Add support for iSCSI devices» и жмем кнопку Add.

После чего перезагружаем сервер.

Настройка MPIO для iSCSI

Теперь, когда MPIO включен и доступен для использования, приступим к подключению iSCSI устройств. Открываем оснастку iSCSI Initiator, переходим на вкладку «Discovery», жмем кнопку «Discover Portal» и вводим один из IP-адресов (любой) сервера SRV2, на котором запущен iSCSI Target.

Переходим на вкладку Targets, выбираем наш таргет и жмем «Properties» для перехода к его свойствам.

В свойствах откроем вкладку «Portal Groups», на которой отображены все доступные пути до выбраного таргета. Выберем два из них.

Теперь переходим на вкладку «Sessions» и жмем на кнопку «Add session».

Отмечаем чекбокс «Enable multi-path» и жмем «Advanced» для перехода к дополнительным настройкам.

В дополнительных настройках в поле «Initiator IP» выбираем адрес локального интерфейса, а в поле «Target portal IP» — соответствующий адрес iSCSI-сервера. Как видите, оба IP находятся в одной подсети. Таким образом мы определяем путь, по которому будет производиться подключение к iSCSI Target на SRV2. Жмем OK, затем таким же способом добавляем второй путь.

Теперь надо сконфигурировать диск iSCSI для использования MPIO. Возвращаемся на вкладку «Sessions», выбираем обе сессии и жмем кнопку «Devices».

В списке у нас одно устройство — Disk 1. Выбираем его и жмем кнопку MPIO.

Здесь нам надо настроить политику использования путей. Выбирать можно из следующих вариантов:

• Fail Over Only — используется только один путь, указанный в качестве основного (active), остальные пути находятся в режиме ожидания (standby). При недоступности основного пути все подключения переводятся на резервный путь. Как только основной путь становится доступен, все подключения возвращаются обратно на основной путь;
• Round Robin — все возможные пути используются по очереди, для балансировки нагрузки;
• Round Robin with Subset — можно указать несколько основных путей, используемых как в предыдущем режиме Round Robin, а также один или несколько дополнительных путей. Пока доступен хотя бы один из основных путей, система использует их в режиме Round Robin. Если же ни один из основных путей недоступен, то используются дополнительные пути в порядке уменьшения приоритета. Когда восстанавливается работоспособность хотя бы одного из основных путей, система возвращается в режим балансировки.
• Least Queue Depth — запросы направляются на тот путь, который в данный момент имеет наименьшее число запросов в очереди;
• Weighted Paths — для каждого пути назначается некий вес (или стоимость), которая обозначает приоритет использования данного пути. Чем больше вес, тем ниже приоритет, соответственно для операций выбирается доступный путь с наименьшим приоритетом;
• Least Blocks — все запросы направляются на тот путь, в очереди которого на передачу стоит наименьшее число блоков данных.

Читайте также:  Как отключить ins windows 10

Для обеспечения отказоустойчивости выберем самый простой вариант — политику Fail Over Only.

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

А по кнопке «Edit» — выбрать активный путь (для Fail Over Only) или указать вес пути (для Weighted Paths).

Настройка MPIO с помощью PowerShell

Управлять MPIO можно и с помощью PowerShell, где для этого есть специальный модуль. Выведем все командлеты этого модуля командой:

Get-Command -Module MPIO

Так например можно включить MPIO для iSCSI:

Enable-MSDSMAutomaticClaim -BusType iSCSI

Так настроить политику Fail Over Only :

Set-MSDSMGlobalDefaultLoadBalancePolicy -Policy FOO

А вот так посмотреть все доступные для MPIO устройства iSCSI:

Get-MPIOAvailableHW -BusType iSCSI

Также стоит упомянуть о дополнительных параметрах MPIO, доступных из консоли PowerShell. Вывести их можно командой Get-MPIOSetting. Это настройки таймера, которые отвечают за таймауты при переключении:

• PathVerificationState — определяет, нужна ли проверка доступности пути;
• PathVerificationPeriod — указывает время в секундах, в течение которого сервер будет проверять каждый путь. Этот параметр действует только при включенном параметре PathVerificationState;
• PDORemovePeriod — задает время в секундах, по истечении которого физическое устройство будет полностью удалено, если все пути к устройству недоступны;
• RetryCount — задает количество повторов запроса ввода\вывода;
• RetryInterval — задает период времени, по истечении которого сервер повторяет попытку запроса ввода\вывода;
• UseCustomPathRecoveryTime — указывает, задавать ли вручную период восстановления. Если этот параметр отключен, то используется удвоенное значение PDORemovePeriod;
• CustomPathRecoveryTime — задает период времени в секундах, по истечении которого выполняется попытка восстановления подключения. Этот параметр действует только при включенном UseCustomPathRecoveryTime;
• DiskTimeoutValue — указывает, сколько времени должен ожидать сервер перед тем, как считать запрос ввода\вывода к диску истекшим.

В большинстве случаев эти параметры можно оставить без изменения, однако в некоторых ситуациях для получения оптимальной производительности может потребоваться их изменить. К примеру, если используется отказоустойчивый кластер и балансировка нагрузки по нескольким путям, то уменьшение таймаута может ускорить переключение между узлами. И наоборот, для одиночного сервера некоторые из значений можно увеличить, для обеспечения большей надежности.

Для изменения этих параметров воспользуемся командой Set-MPIOSetting . Для примера изменим таймаут переключения диска:

Set-MPIOSetting -NewDiskTimeout 30

Напомню, что при изменении параметров MPIO может потребоваться перезагрузка сервера.

Примечание. Также сконфигурировать MPIO можно c помощью утилиты командной строки mpclaim.exe. Для просмотра ее возможностей наберите в командной строке mpclaim /?.

Отработка отказа

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

Но по истечении таймаута процесс возобновляется и успешно завершается.

А если теперь посмотреть в настройки устройства, то мы увидим, что переключение произошло и запасной путь стал активным.

Таким образом с помощью MPIO мы настроили отказоустойчивое подключение к хранилищу iSCSI.

В завершение напомню, что в данной статье приведен вариант настройки MPIO с использованием встроенного модуля Microsoft DSM. При использовании системы хранения других производителей рекомендуется использовать DSM, поставляемое с этим оборудованием, соответственно процедура настройки будет отличаться.

Оцените статью