При хранении критически важных данных обеспечение высокой доступности является одной из основных задач. Для высокодоступных решений необходимо обеспечить избыточность на разных уровнях: на уровне дисковой подсистемы, на уровне транспорта, на уровне сервера или системы хранения. Одним из механизмов, предназначенных для обеспечения высокой доступности на транспортном уровне, является технология многопутевого ввода-вывода (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, который также можно использовать с различными СХД.
Примечание. Для работы с 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 — все запросы направляются на тот путь, в очереди которого на передачу стоит наименьшее число блоков данных.
Для обеспечения отказоустойчивости выберем самый простой вариант — политику 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, поставляемое с этим оборудованием, соответственно процедура настройки будет отличаться.
В этой статье мы рассмотрим особенности реализации, установки и настройки MPIO в Windows Server 2016/2012 R2. MPIO (Multi—Path Input Output) или многопутевой ввод-вывод, это технология для построения отказоустойчивого транспорта к системе хранения данных (СХД) или выполняющему эти функции серверу за счет использования избыточных путей. Дополнительные пути между сервером и хранилищем создаются с использованием избыточных физических компонентов (коммутаторы, кабели, адаптеры или сетевые карты). Обратная сторона такой избыточности – операционная система может видеть один и тот же LUN по разным путям и считать их разными устройствами.
Если сервер может получить доступ к логическому диску (LUN) через несколько адаптеров инициатора iSCSI или несколько портов Fibre Channel, то в диспетчере устройств/дисков на системе без установленного MPIO модуля будет присутствовать большее количество LUN, чем презентовано на самом деле ( = количество путей к LUN * количество презентованных LUN).
На следующем скриншоте видно (список подключенных дисков можно вывести с помощью get-disk), что Windows видит без MPIO видит 2 диска по разным путям, которые по факту являются одним LUN:
Если ОС поддерживает MPIO, она будет видеть каждый из презентованных ей дисков в одном экземпляре. При включенном MPIO сервер может обращаться к данным на СХД по нескольким путям, что увеличивает скорость доступа к подключенному LUN и позволяет задействовать для доступа несколько сетевых или HBA-адаптеров.
MPIO может задействовать альтернативный логический путь при выходе из строя одного/нескольких компонентов, заставив операционную систему использовать для доступа к логическому диску (LUN) резервный маршрут, сохраняя непрерывность доступа к данным. Таким образом MPIO является важным компонентом при реализации отказоустойчивой системы доступа к данным, кроме того входящие в состав MPIO модули позволяют распределять нагрузку между различными путями к одному и тому же LUN-у.
Совет. Если ОС не поддерживает MPIO, то для предотвращения потери данных нужно уменьшить количество путей к LUN до 1. На сервере нужно оставить включенным только один порт Fiber Channel или адаптер iSCSI инициатора. Также нужно отключить дополнительные пути для данного LUN на уровне СХД и коммутаторов.
Содержание:
- Установка MPIO в Windows Server 2016/2012R2
- Настройка MPIO в Windows Server 2016
- SAN Policy
Установка 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
- Откройте консоль Server Manager;
- В списке компонентов (Features) найдите и активируйте опцию Multipath I/O;
- Завершите установку компонента MPIO и перезагрузите сервер.
Установка MPIO с помощью Powershell
Запустите консоль PowerShell с правами администратора и для установки компонента выполните команду:
Add-WindowsFeature -Name 'Multipath-IO'
Чтобы убедиться, что модуль MPIO установлен в вашем Windows Server, выполните:
Get-WindowsFeature -Name '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 Multi—Paths, включите опцию Add support for SAS devices (или Add support for iSCSI devices, если вы используете iSCSI хранилище) и нажмите Add. После этого перезагрузите сервер.
После перезагрузки откройте диспетчер устройств или диспетчер дисков и убедитесь, что количество подключенных дисков (LUN), доступных серверу уменьшилось в 2 раза (при наличии подключений к СХД по двум путям).
Вы можете управлять списком устройств, для которых включена поддержка MPIO на вкладке MPIO Devices (или командой
Get-MSDSMSupportedHw
).
Вы можете добавить новые MPIO устройства, нажав кнопку Add или из PowerShell:
New-MSDSMSupportedHw -VendorId <vend> -ProductId <product>
При настройке кластера конфигурацию MPIO необходимо выполнить на всех узлах.
Если вы подключаете iSCSI таргет по 2 путям и хотите использовать MPIO для этого подключения, нужно при подключении Target выбрать iSCSI LUN, нажать кнопку Connect и включить опцию Enable multi—path.
Затем нажмите на кнопку Advanced и привяжите разные IP адреса инициатора к разным IP адресами target.
С помощью PowerShell можно получить текущие настройки MPIO:
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.
Чтобы увидеть полный список PowerShell команд, доступных в модуле MPIO, выполните команду:
Get-Command –Module Mpio
SAN Policy
В Windows имеется специальная политика дисков (SAN Policy), которая определяет, нужно ли автоматически монтировать диски при их подключении к хосту.
Текущую настройку SAN Policy можно получить с помощью diskpart. По умолчанию используется SAN политика Offline Shared.
Чтобы автоматически монтировать диски, нужно изменить значение SAN Policy на OnlineAll.
DISKPART> san policy=OnlineAll
Возможные значение SAN policy:
OfflineAll | Все диски по умолчанию в offline режиме |
OfflineInternal | Все диски на внутренних шинах в offline |
OfflineShared | Все диски, подключенные через iSCSI, FC или SAS в offline |
OnlineAll | Все диски автоматически переводятся в онлайн режим (рекомендуется) |
In this article we will consider how to install and configure MPIO on Windows Server 2016/2012 R2. MPIO (Multi—Path Input Output) is a technology that allows to build fault-tolerant transport to a data storage system (or a storage server) by using redundant paths. Additional paths between a server and a storage are created using redundant physical components (switches, cables, adapters or NICs). This redundancy type has a drawback: an operating system may see the same LUN at different paths and treat it as different drives.
If a server can access a logical disk (LUN) using multiple iSCSI initiator adapter or multiple Fibre Channel ports, the Device/Disk Manager without the MPIO module will show more LUNs than there actually are (= the number of paths to a LUN * the number of presented LUNs) if an MPIO module is not installed .
The following screenshot shows that Windows without MPIO sees 2 drives with different paths, which are in fact the same LUN (the list of presented disks may be displayed using the Get-Disk PowerShell cmdlet).
If the OS supports MPIO, it will see each of the disks presented to it in one copy. If MPIO is enabled, a server may access data on a storage using multiple paths that makes access to a connected LUN faster and allows using multiple network or HBA adapters.
MPIO may use an alternative logical path if one or more components fail, thus making an operating system use another route to access a logical disk (LUN) maintaining data access consistency. So, MPIO is an important component of a fail-tolerant storage and data access system, and MPIO modules can distribute the load on the same LUN across different paths.
Tip. If an OS doesn’t support MPIO, leave only one path to a LUN to prevent data loss. Enable only one Fibre Channel port or one iSCSI initiator adapter on a server. Also, disable additional paths to the LUN on the data storage system and SAN/network switch levels.
Contents:
- Installing MPIO Installation on Windows Server 2016/2012R2
- Configuring MPIO on Windows Server 2016
- SAN (Disk) Policy on Windows Server
Installing MPIO Installation on Windows Server 2016/2012R2
Windows Server supports multi-path input output (MPIO) starting from Windows Server 2008 R2. Microsoft MPIO provides high availability and load balancing using multiple connections to a storage, doesn’t depend on any protocols and supports disk array and storage connection using iSCSI, Fiber Channel and SAS.
By default, MPIO module is disabled on Windows Server. There are two ways to install it in Windows Server 2016:
- From a graphical interface using Server Manager console;
- From the PowerShell command line.
Enable MPIO Using Server Manager
- Open the Server Manager;
- Find and check the Multipath I/O in the Features list ;
- Finish MPIO installation and restart the server.
Installing Multipath-IO Using PowerShell
Run the PowerShell console as an administrator and use the following command to install the Windows Server feature:
Add-WindowsFeature -Name 'Multipath-IO'
To make sure that MPIO has been installed on your Windows Server, run this command:
Get-WindowsFeature -Name 'Multipath-IO'
Note. To disable MPIO, enter the following command:
Remove-WindowsFeature -Name 'Multipath-IO'
Configuring MPIO on Windows Server 2016
After installing the MPIO module, you need to activate it for the LUNs that are available by multiple paths. By default, Windows sees each connection to a disk as different logical disks (LUNs).
Tip. Among MPIO components, there is a special module, MSDSM (Microsoft Device Service Module) that allows you to manage load balancing policies. By default, MPIO is installed together with the standard Microsoft DSM. However, in most cases it is recommended to install the DSM module provided by your storage manufacturer (IBM DSM, HP DSM MPIO, etc.). Typically, native DSM offers better performance and more features than Microsoft (since the manufacturer builds its DSM based on the operating conditions and characteristics of its hardware).
Allow the DSM module by Microsoft (MSDSM) to automatically merge SAN disks based on the connection type. MSDSM automatically detects LUNs that have multiple paths to a storage and supports most popular storage devices.
You can do it from the command prompt:
- For SAS disks:
Enable-MSDSMAutomaticClaim -BusType SAS
- For iSCSI disks:
Enable-MSDSMAutomaticClaim -BusType iSCSI
Note. You can do the same using the mpclaim
tools (it appeared in Windows 2008 R2). The following command will scan all devices detected by a system, find those that have multiple paths and enable MPIO support for them:
mpclaim.exe -r -i -a ""
You can also enable DSM in the GUI. Open the Server Manager and select MPIO in the Tools menu (or run the command: mpiocpl
).
Go to the Discover Multi—Paths tab, check Add support for SASdevices (or Add supportfor iSCSI devices if you are using iSCSI storage) and click Add. Then restart your server.
After the restart, open the Device Manager (or the Disk Manager) and make sure that the number of connected disks (LUNs) available to your server has reduced twice (if there are two paths to your storage device).
You can manage the list of devices with MPIO support enabled in the MPIO Devices tab (or using the Get-MSDSMSupportedHw
command).
You can add new MPIO devices by clicking Add or from PowerShell:
New-MSDSMSupportedHw -VendorId <vend> -ProductId <product>
If you are deploying a cluster, configure MPIO on all nodes.
If you connect an iSCSI target via 2 paths and want to use MPIO for it, select iSCSI LUN when you connect a Target, click Connect and check the Enable multi—path option.
Then click Advanced and bind different initiator IP addresses to different target IP addresses.
You can get current MPIO settings using PowerShell:
Get-MPIOSetting
PathVerificationState : Disabled PathVerificationPeriod : 30 PDORemovePeriod : 20 RetryCount : 3 RetryInterval : 1 UseCustomPathRecoveryTime : Disabled CustomPathRecoveryTime : 40 DiskTimeoutValue : 60
You can change MPIO timer settings as follows (for example, let’s enable recommended settings for the all-flash array):
Set-MPIOSetting -NewPathRecoveryInterval 20 -CustomPathRecovery Enabled -NewPDORemovePeriod 30 -NewDiskTimeout 60 -NewPathVerificationState Enabled
The following MPIO balancing policies are available:
- FOO — Fail Over Only
- RR — Round Robin
- LQD — Least Queue Depth
- LB — Least Blocks
To change a balancing policy:
Set-MSDSMGlobalLoadBalancePolicy -Policy RR
You can also select the balancing policy in the MPIO tab of the connected LUN properties. In this example, the Round Robin policy is selected for the array.
To view the full list of PowerShell commands available in the MPIO module, run this command:
Get-Command –Module Mpio
SAN (Disk) Policy on Windows Server
Windows has a special disk policy (SAN Policy) that determines whether disks must be mounted automatically when they are connected to a host.
You can get the current SAN Policy setting using diskpart
. By default, Offline Shared policy for SAN is used:
diskpart
DISKPART>>san</code
To mount the drives automatically, change the SAN Policy value to OnlineAll.
DISKPART> san policy=OnlineAll
Possible SAN Policy values:
OfflineAll | All disks are offline by default |
OfflineInternal | All disks on internal buses are offline |
OfflineShared | All disks connected via iSCSI, FC or SAS are offline |
OnlineAll | All disks get online automatically (recommended) |
Что такое MPIO?
Это стандартный компонет ОС Windows, который не включен поумолчанию, его надо добавить после установки ОС. Технология MPIO не зависит от протоколов и может использоваться с интерфейсами Fibre Channel, Internet SCSI (iSCSI) и Serial Attached SCSI (SAS) в ОС Windows Server 2008 и Windows Server 2012. Архитектура Microsoft MPIO поддерживает подключения SAN с использованием iSCSI, оптоволоконных каналов и хранилищ SAS путем создания нескольких сеансов или подключений к массиву хранилища.
Год назад я убедил руководство в обновлении серверного оборудования. Было преобретено: СХД NetApp 2040, с двумя контроллерами, на каждом контроллере по 4 сетевых порта, и Блейд-сервер. Вместе с серверами имеющимися получилось 4 физических сервера и СХД. Планировалось использовать iSCSI. Вместе с оборудованием получили в подарок первоначальную настройку оборудования, так как о виртуализации слышали только в теории.
Внедренцы убедили нас в том, что необходимо использовать гипервизор VmWare, хотя у нас используются только сервера Windows. Как я выяснил позже: их специалисты лучше разбирались в этом гипервизоре, поэтому они и настояли на VmWare. При подключении дисков по iSCSI встает вопрос о скорости работы подключенных дисков. На NetApp 4 сетевых порта и на каждом сервере по 4 сетевых карточки. Для того чтобы включить Multipath в VmWare необходимо докупать дополнительные лицензии, и по словам внедренцев очень сложная настойка, которая в итоге дает только отказоустойчивость, так как подключенный диск по iSCSI будет иметь только одну сессию и передача данных с СХД на сервер будет идти только по одному каналу, то есть через один физический интерфейс. Так что имея на сервере 4 сетевых карточки, используется только одна, а остальные для отказоустойчивости и служебных нужд гипервизора. В Windows Server 2012 при включении MPIO (Microsoft Multipath) и правильной настройке, данные с СХД на сервер идут по нескольким путям, что увеличивает скорость работы подключенного диска и дает возможность использовать несколько сетевых адаптеров.
Я не буду описывать роцедуру включения и инастройки MPIO, так как уже много статей на эту тему написано. Скажу что это не сложно, главное чтобы эта компонента была включена. Для подключения к СХД я использовал утилиту SnapDrive от NetApp, в которой предусмотрено создание дополнительных ссесий подключения дисков.
При включении MPIO и настройке через три сетевых адаптера скорость обращения к диску увеличилась. Это скрин сделан внутри виртуальной машины, хотя данный тест не показатель, но все же при замере скорости без использования Multipath скорость была ниже 100 Mb/s, прошу поверить на слово, не хочется отключать Multipath и делать скрин. Эти тесты я делал пока тестировал Server 2012 и Hyper-V.
А этот скрин сделал на работающей машине:
Кода идет нагрузка на диск виртуальной машины, на хостовой системе в диспетчере задач четко видно какие сетевые адаптеры задействованы. И если MPIO настроен на две сетевых карточки, то трафик идет по двум интерфейсам. Если MPIO настроить на использование трех сетевых карточек, то при нагрузке на жесткий диск в виртуалке, на хосте четко видно в диспетчере задач, что трафик идет по трем сетевым карточкам. В мониторе ресурсов тоже четко видно по каким портам идет трафик.
Так что в Windows Srver 2012 имеется стандартный компонет Multipath и его включение и настройка не очень сложные.
Webmasters can enable Multi-Path Input-Output or MPIO on a Windows server either from a graphical interface using the Server Manager console
or from the PowerShell command line.
As a part of our Server Management Services, we help our Customers with Windows related requests regularly.
Let us today discuss the possible steps to enable MPIO on the windows server.
Installing MPIO Installation on Windows Server 2016/2012 R2
Windows Server supports multi-path input-output (MPIO) starting from Windows Server 2008 R2.
By default, Windows Server disables MPIO module. There are two ways to install it in Windows Server 2016:
- From a graphical interface using the Server Manager console
- From the PowerShell command line
Enable MPIO Using Server Manager
- Open the Server Manager
- Find and check the Multipath I/O in the Features list
- Finish MPIO installation and restart the server
Installing Multipath-IO Using PowerShell
Run the PowerShell console as an administrator and use the following command to install the Windows Server feature:
Add-WindowsFeature -Name 'Multipath-IO'
To make sure that MPIO has been installed on the Windows Server, run this command:
Get-WindowsFeature -Name 'Multipath-IO'
To disable MPIO, enter the following command:
Remove-WindowsFeature -Name 'Multipath-IO'
Configuring MPIO on Windows Server 2016
After installing the MPIO module, we need to activate it for the LUNs that are available by multiple paths. By default, Windows sees each connection to a disk as different logical disks (LUNs).
Among MPIO components, there is a special module, MSDSM (Microsoft Device Service Module) that allows you to manage load balancing policies.
Typically, native DSM offers better performance and more features than Microsoft. Thus it would be a good idea to install the DSM module provided by the storage manufacturer (IBM DSM, HP DSM MPIO, etc.) though it is present with the standard Microsoft DSM by default.
Allow the DSM module by Microsoft (MSDSM) to automatically merge SAN disks based on the connection type. MSDSM automatically detects LUNs that have multiple paths to storage and supports the most popular storage devices.
We can do it from the command prompt:
- For SAS disks: Enable-MSDSMAutomaticClaim -BusType SAS
- For iSCSI disks: Enable-MSDSMAutomaticClaim -BusType iSCSI
We can do the same using the mpclaim tools. The following command will scan all devices detected by a system, find those that have multiple paths, and enable MPIO support for them:
mpclaim.exe -r -i -a ""
Enable DSM vi GUI
We can also enable DSM in the GUI. Open the Server Manager and select MPIO in the Tools menu (or run the command: mpiocpl).
Go to the Discover Multi—Paths tab, check to Add support for SASdevices (or Add supportfor iSCSI devices if you are using iSCSI storage), and click Add. Then restart your server.
After the restart, open the Device Manager (or the Disk Manager) and make sure that the number of connected disks (LUNs) available to your server has reduced twice (if there are two paths to your storage device).
We can manage the list of devices with MPIO support enabled in the MPIO Devices tab (or using the Get-MSDSMSupportedHw command).
We can add new MPIO devices by clicking Add or from PowerShell:
New-MSDSMSupportedHw -VendorId -ProductId
while deploying a cluster, configure MPIO on all nodes.
To use MPIO while we connect an iSCSI target via 2 paths, select iSCSI LUN while we connect a Target, click Connect, and check the Enable multi-path option.
Then click Advanced and bind different initiator IP addresses to different target IP addresses.
You can get current MPIO settings using PowerShell:
Get-MPIOSetting
PathVerificationState : Disabled
PathVerificationPeriod : 30
PDORemovePeriod : 20
RetryCount : 3
RetryInterval : 1
UseCustomPathRecoveryTime : Disabled
CustomPathRecoveryTime : 40
DiskTimeoutValue : 60
We can change MPIO timer settings as follows:
Set-MPIOSetting -NewPathRecoveryInterval 20 -CustomPathRecovery Enabled -NewPDORemovePeriod 30 -NewDiskTimeout 60 -NewPathVerificationState Enabled
The following MPIO balancing policies are available:
- FOO — Fail Over Only
- RR — Round Robin
- LQD — Least Queue Depth
- LB — Least Blocks
To change a balancing policy:
Set-MSDSMGlobalLoadBalancePolicy -Policy RR
We can also select the balancing policy in the MPIO tab of the connected LUN properties. In this example, the Round Robin policy is selected for the array.
To view the full list of PowerShell commands available in the MPIO module, run this command:
Get-Command –Module Mpio
SAN (Disk) Policy on Windows Server
Windows has a special disk policy (SAN Policy) that determines whether disks must be mounted automatically when they are connected to a host.
We can get the current SAN Policy setting using diskpart. By default, Offline Shared policy for SAN is used:
diskpart
DISKPART>>san<
Due to this SAN policy, external storage LUNs may be disabled after a restart. To mount the drives automatically, change the SAN Policy value to OnlineAll.
DISKPART> san policy=OnlineAll
Possible SAN Policy values:
- OfflineAll : All disks are offline by default
- OfflineInternal : All disks on internal buses are offline
- OfflineShared : All disks connected via iSCSI, FC, or SAS are offline
- OnlineAll : All disks get online automatically (recommended)
[Need any further assistance to enable MPIO on windows server? – We’re available 24*7]
Conclusion
In short, webmasters can enable Multi-Path Input-Output or MPIO on a Windows server either from a graphical interface using the Server Manager console or from the PowerShell command line. Today, we saw how our Support Engineers perform this task.
PREVENT YOUR SERVER FROM CRASHING!
Never again lose customers to poor server speed! Let us help you.
Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.
GET STARTED
var google_conversion_label = «owonCMyG5nEQ0aD71QM»;
title | description | services | documentationcenter | author | manager | editor | ms.assetid | ms.service | ms.devlang | ms.topic | ms.tgt_pltfrm | ms.workload | ms.date | ms.author | ms.openlocfilehash | ms.sourcegitcommit | ms.translationtype | ms.contentlocale | ms.lasthandoff | ms.locfileid |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Настройка MPIO для устройства StorSimple | Документация Майкрософт |
В этой статье описывается настройка функции Multipath I/O (MPIO) для устройства StorSimple, подключенного к узлу под управлением Windows Server 2012 R2. |
storsimple |
alkohli |
timlt |
storsimple |
NA |
how-to |
NA |
NA |
03/26/2018 |
alkohli |
3d44fada1eddf2d3f80bec085d8a5bf751197eb1 |
867cb1b7a1f3a1f0b427282c648d411d0ca4f81f |
MT |
ru-RU |
03/19/2021 |
94968814 |
Настройка функции Multipath I/O для устройства StorSimple
В этом руководстве рассматриваются действия, которые необходимо выполнить для установки и использования функции MPIO (Multipath I/O) на узле под управлением Windows Server 2012 R2, который подключен к физическому устройству StorSimple. Рекомендации в этой статье относятся только к физическим устройствам StorSimple серии 8000. Сейчас функция MPIO не поддерживается для облачных устройств StorSimple.
Корпорация Майкрософт обеспечила встроенную поддержку функции Multipath I/O (MPIO) в Windows Server для создания высокодоступных и отказоустойчивых конфигураций сети iSCSI. С помощью избыточных компонентов физических путей — адаптеров, кабелей и коммутаторов — функция MPIO создает логические пути между сервером и устройством хранения. Если возникает сбой компонента, который вызывает отказ логического пути, многопутевая логика использует альтернативный путь для ввода-вывода, а приложения при этом сохранят доступ к данным. Кроме того, в некоторых конфигурациях MPIO может повысить производительность благодаря балансировке нагрузки между этими путями. Дополнительные сведения см. в разделе Общие сведения о MPIO.
Для высокого уровня доступности решения StorSimple следует настроить MPIO для устройства StorSimple. Если MPIO устанавливается на базовых серверах, работающих под управлением Windows Server 2012 R2, серверы смогут выдержать сбой канала, сети или интерфейса.
Общие сведения о конфигурации MPIO
MPIO представляет собой дополнительный компонент, который по умолчанию не устанавливается в Windows Server. Его необходимо устанавливать в качестве отдельного компонента через диспетчер сервера.
Чтобы настроить MPIO на устройстве StorSimple, выполните следующие действия:
- Шаг 1. Установка MPIO на узле Windows Server
- Шаг 2. Настройка MPIO для томов StorSimple
- Шаг 3. Подключение томов StorSimple на узле
- Шаг 4. Настройка MPIO для обеспечения высокого уровня доступности и балансировки нагрузки
В следующих разделах рассматриваются все перечисленные выше действия.
Шаг 1. Установка MPIO на узле Windows Server
Чтобы установить этот компонент на узле Windows Server, выполните следующую процедуру.
Установка MPIO на узле
-
Откройте диспетчер сервера на узле Windows Server. По умолчанию диспетчер сервера запускается, когда член группы администраторов выполняет вход на компьютер под управлением Windows Server 2012 R2 или Windows Server 2012. Если диспетчер сервера не открыт, щелкните Пуск > Диспетчер сервера.
-
Выберите Диспетчер сервера > Панель мониторинга > Добавить роли и компоненты. Это запускает мастер Добавление ролей и компонентов wizard.
-
В мастере Добавление ролей и компонентов выполните следующие шаги.
-
На странице Перед работой нажмите кнопку Далее.
-
На странице Выбор типа установки выберите вариант по умолчанию Установка ролей или компонентов. Щелкните Далее.
-
На странице Select destination server (Выбор целевого сервера) выберите Select a server from the server pool (Выбрать сервер из пула серверов). Сервер должен быть найден автоматически. Щелкните Далее.
-
На странице Выбор ролей сервера нажмите кнопку Далее.
-
На странице Выбор компонентов выберите Multipath I/O и нажмите кнопку Далее.
-
На странице Подтверждение выбора установки подтвердите выбор, а затем при необходимости выберите Автоматический перезапуск сервера назначения, как показано ниже. Щелкните Install(Установить).
-
Вы получите уведомление, когда установка закончится. Нажмите кнопку Закрыть, чтобы завершить работу мастера.
-
Шаг 2. Настройка MPIO для томов StorSimple
Настройка MPIO требуется для идентификации томов StorSimple. Чтобы настроить MPIO для распознавания томов StorSimple, выполните следующие действия.
Настройка MPIO для томов StorSimple
- Откройте раздел Конфигурация MPIO. Выберите Диспетчер сервера > Панель мониторинга > Сервис > MPIO.
- В диалоговом окне Свойства MPIO перейдите на вкладку Обнаружение нескольких путей.
- Выберите Добавить поддержку для устройств iSCSI, а затем щелкните Добавить.
- При появлении запроса перезагрузите сервер.
- В диалоговом окне Свойства MPIO перейдите на вкладку устройства MPIO . Нажмите кнопку добавить.
- В диалоговом окне Добавление поддержки многопутевого ввода-вывода введите серийный номер устройства в поле Код оборудования. Чтобы узнать серийный номер устройства, откройте службу диспетчера устройств StorSimple. Перейдите к разделу Устройства > Панель мониторинга. Серийный номер устройства отображается в правой области Краткий обзор панели мониторинга устройства.
- При появлении запроса перезагрузите сервер.
Шаг 3. Подключение томов StorSimple на узле
После настройки MPIO на сервере Windows тома, созданные на устройстве StorSimple, можно будет подключить и они смогут воспользоваться преимуществами MPIO для обеспечения избыточности. Чтобы подключить том, выполните следующие действия.
Подключение томов на узле
-
Откройте окно Свойства инициатора iSCSI на узле Windows Server. Выберите Диспетчер серверов > Панель мониторинга > Сервис > Инициатор iSCSI.
-
В диалоговом окне iSCSI Initiator Properties (Свойства инициатора iSCSI) перейдите на вкладку «Обнаружение» и нажмите кнопку Обнаружение целевого портала.
-
В диалоговом окне Обнаружение целевого портала выполните следующие шаги.
-
Введите IP-адрес порта DATA для устройства StorSimple (например, введите «DATA 0»).
-
Нажмите кнопку OK, чтобы вернуться к диалоговому окну Свойства инициатора iSCSI.
[!IMPORTANT]
При использовании частной сети для подключения iSCSI введите IP-адрес порта данных, подключенного к частной сети.
-
-
Повторите шаги 2–3 для установки второго сетевого интерфейса (например, DATA 1) на устройстве. Помните, что эти интерфейсы должны поддерживать iSCSI. Дополнительные сведения см. в разделе Изменение сетевых интерфейсов.
-
Перейдите на вкладку Целевые объекты в диалоговом окне Свойства инициатора iSCSI. На вкладке Обнаруженные целевые объекты должен быть целевой IQN устройства StorSimple.
-
Щелкните Подключение для установления сеанса iSCSI с устройством StorSimple. Появится диалоговое окно Подключение к конечному объекту.
-
В диалоговом окне Подключение к целевому объекту установите флажок Включить поддержку многопутевых накопителей. Щелкните Дополнительно.
-
В диалоговом окне Дополнительные параметры выполните следующие шаги.
- В раскрывающемся списке Локальный адаптер выберите Инициатор Microsoft iSCSI.
- В раскрывающемся списке IP-адрес инициатора выберите IP-адрес узла.
- Из раскрывающегося списка Целевой IP-адрес портала выберите IP-адрес интерфейса устройства.
- Нажмите кнопку OK, чтобы вернуться к диалоговому окну Свойства инициатора iSCSI.
-
Нажмите кнопку Свойства. В диалоговом окне Свойства нажмите кнопку Добавить сеанс.
-
В диалоговом окне Подключение к целевому объекту установите флажок Включить поддержку многопутевых накопителей. Щелкните Дополнительно.
-
В диалоговом окне Дополнительные параметры:
- В раскрывающемся списке Локальный адаптер выберите инициатор iSCSI (Майкрософт).
- В раскрывающемся списке IP-адрес инициатора выберите IP-адрес соответствующего узла. В данном случае выполняется подключение двух сетевых интерфейсов на устройстве к одному сетевому интерфейсу на узле. Таким образом, этот интерфейс является таким же, как для первого сеанса.
- Из раскрывающегося списка Целевой IP-адрес портала выберите IP-адрес для второго интерфейса данных устройства.
- Щелкните ОК для возврата в диалоговое окно «Свойства инициатора iSCSI». В целевой объект был добавлен второй сеанс.
-
Откройте Управление компьютером, для чего выберите Диспетчер серверов > Панель мониторинга > Управление компьютером. В левой области щелкните Хранилище > Управление дисками. Видимые для текущего узла тома, созданные на устройстве StorSimple, отображаются на вкладке Управление дисками в качестве новых дисков.
-
Инициализируйте диск и создайте новый том. При форматировании выберите размер блока 64 КБ.
-
В разделе Управление дисками щелкните правой кнопкой мыши Диск и выберите Свойства.
-
В диалоговом окне Свойства многопутевого диска StorSimple модели #### щелкните вкладку MPIO.
-
В разделе Имя DSM выберите сведения и убедитесь, что параметры имеют значения по умолчанию. Используются следующие параметры по умолчанию.
- Период проверки пути = 30.
- Счетчик попыток = 3.
- Период удаления PDO = 20.
- Интервал попытки = 1.
- Проверка пути включена = флажок снят.
[!NOTE]
Не изменяйте параметры по умолчанию.
Шаг 4. Настройка MPIO для обеспечения высокого уровня доступности и балансировки нагрузки
Чтобы реализовать высокий уровень доступности и балансировку нагрузки на основе нескольких путей ввода-вывода, необходимо вручную добавить несколько сеансов, чтобы объявить о наличии разных путей. Например, если узел имеет два интерфейса, подключенные к сети iSCSI, и устройство имеет два интерфейса, подключенные к сети iSCSI, потребуется четыре сеанса с настроенными путями (потребуется только два сеанса, если каждый интерфейс DATA и интерфейс узла находятся в разных подсетях IP и не поддерживают маршрутизацию).
Мы рекомендуем использовать по крайней мере 8 активных параллельных сеансов между устройством и узлом приложения. Это можно сделать, включив 4 сетевых интерфейса в системе Windows Server. Используйте физические сетевые интерфейсы или виртуальные интерфейсы (с помощью технологий виртуализации сети) на уровне оборудования или операционной системы на узле Windows Server. При наличии двух сетевых интерфейсов на устройстве эта конфигурация образует 8 активных сеансов. Такая конфигурация позволяет оптимизировать пропускную способность устройства и облака.
[!IMPORTANT]
Не рекомендуется смешивать сетевые интерфейсы 1 GbE и 10 GbE. При использовании двух сетевых интерфейсов оба интерфейса должны иметь одинаковый тип.
Далее рассматривается добавление сеансов для случая, когда устройство StorSimple с двумя сетевыми интерфейсами подключено к узлу с двумя сетевыми интерфейсами. Это дает только 4 сеанса. Используйте эту процедуру для устройства StorSimple с двумя сетевыми интерфейсами, подключенного к узлу с четырьмя сетевыми интерфейсами. Понадобится настроить 8 сеансов вместо 4, описанных здесь.
Настройка MPIO для обеспечения высокого уровня доступности и балансировки нагрузки
-
Выполните обнаружение целевого объекта. Для этого в диалоговом окне iSCSI Initiator Properties (Свойства инициатора iSCSI) на вкладке Обнаружение щелкните Обнаружить портал.
-
В диалоговом окне Подключение к целевому объекту укажите IP-адрес одного из сетевых интерфейсов устройства.
-
Нажмите кнопку OK, чтобы вернуться к диалоговому окну Свойства инициатора iSCSI.
-
В диалоговом окне Свойства инициатора iSCSI перейдите на вкладку Целевые объекты, выделите обнаруженный целевой объект и щелкните Подключить. Откроется диалоговое окно Подключение к целевому объекту.
-
В диалоговом окне Подключение к целевому объекту:
- Оставьте выбранный по умолчанию целевой объект для параметра Добавить объект к подключению (список избранных целевых объектов). В этом случае устройство автоматически пытается устанавливать подключение после каждого перезапуска компьютера.
- Установите флажок Включить поддержку многопутевых накопителей.
- Щелкните Дополнительно.
-
В диалоговом окне Дополнительные параметры:
- В раскрывающемся списке Локальный адаптер выберите Инициатор Microsoft iSCSI.
- Из раскрывающегося списка IP-адрес инициатора выберите IP-адрес узла, соответствующий первому интерфейсу в узле (интерфейсу iSCSI).
- Из раскрывающегося списка IP-адрес конечного портала выберите IP-адрес для первого интерфейса данных устройства.
- Щелкните ОК для возврата в диалоговое окно «Свойства инициатора iSCSI».
-
Щелкните Свойства и в диалоговом окне Свойства щелкните Добавить сеанс.
-
В диалоговом окне Подключение к целевому объекту установите флажок Включить поддержку многопутевых накопителей и затем щелкните Дополнительно.
-
В диалоговом окне Дополнительные параметры:
- В раскрывающемся списке Локальный адаптер выберите Инициатор Microsoft iSCSI.
- Из раскрывающегося списка IP-адрес инициатора выберите IP-адрес узла, соответствующий второму интерфейсу iSCSI в узле.
- Из раскрывающегося списка Целевой IP-адрес портала выберите IP-адрес для второго интерфейса данных устройства.
- Нажмите кнопку OK, чтобы вернуться к диалоговому окну Свойства инициатора iSCSI. В целевой объект был добавлен второй сеанс.
-
Повторите шаги 8–10, чтобы добавить дополнительные сеансы (пути) в целевой объект. С двумя интерфейсами на узле и двумя на устройстве можно добавить не более четырех сеансов.
-
После добавления необходимых сеансов (путей) в диалоговом окне Свойства инициатора iSCSI выберите целевой объект и щелкните Свойства. На вкладке «Сеансы» диалогового окна Свойства обратите внимание на четыре идентификатора сеансов, которые соответствуют возможным перестановкам путей. Чтобы отменить сеанс, установите флажок рядом с идентификатором сеанса и затем нажмите Отключить.
-
Чтобы просмотреть устройства, представленные в сеансах, перейдите на вкладку устройства . Чтобы настроить политику MPIO для выбранного устройства, нажмите кнопку MPIO. Откроется диалоговое окно Сведения об устройстве. На вкладке MPIO можно выбрать соответствующие параметры Политики балансировки нагрузки. Можно также просмотреть активный или ждущий тип пути.
Дальнейшие действия
См. дополнительные сведения об использовании службы диспетчера устройств StorSimple для изменения конфигурации устройства StorSimple.
В этой статье мы рассмотрим особенности реализации, установки и настройки MPIO в Windows Server 2016/2012 R2. Многопутевый ввод-вывод (MPIO) или многопутевый ввод-вывод – это технология для создания отказоустойчивого транспорта к системе хранения (SSS) или серверу, которая выполняет эти функции с использованием избыточных путей. Дополнительные пути между сервером и хранилищем создаются с использованием избыточных физических компонентов (коммутаторов, кабелей, адаптеров или сетевых карт). Недостатком такой избыточности является то, что операционная система может видеть один и тот же LUN в разных местах и обрабатывать их как разные устройства.
Если сервер может получить доступ к логическому диску (LUN) через несколько адаптеров инициатора iSCSI или несколько портов Fibre Channel, диспетчер устройств / дисков в системе без установленного модуля MPIO будет иметь больше LUN, чем фактически представлено (= количество путей к LUN * количество представленных LUN).
На снимке экрана ниже показано (список подключенных дисков можно просмотреть с помощью get-disk), который Windows видит без MPIO, видит 2 диска в разных путях, которые на самом деле являются LUN:
Если операционная система поддерживает MPIO, она увидит каждый из дисков, представленных в копии. Когда MPIO включен, сервер может получать доступ к данным в системе хранения по различным путям, что увеличивает скорость доступа к подключенному LUN и позволяет использовать для доступа несколько сетевых адаптеров или HBA.
MPIO может использовать альтернативный логический путь в случае отказа одного или нескольких компонентов, вынуждая операционную систему использовать резервный маршрут для доступа к логическому диску (LUN), сохраняя непрерывность доступа к данным. Следовательно, MPIO является важным компонентом в реализации отказоустойчивой системы доступа к данным, кроме того, модули, включенные в MPIO, позволяют распределять нагрузку между разными путями к одному и тому же LUN.
Совет. Если ваша операционная система не поддерживает MPIO, чтобы предотвратить потерю данных, вам необходимо уменьшить количество путей к LUN до 1. На сервере вам нужно оставить включенным только порт Fibre Channel или адаптер iSCSI инициатора. Вы также должны отключить дополнительные пути для этого LUN на уровне хранилища и коммутатора.
Windows Server поддерживает многопутевый ввод-вывод MPIO из Windows Server 2008 R2. Технология Microsoft MPIO обеспечивает высокую доступность и балансировку нагрузки с возможностью организации нескольких подключений к системам хранения, не зависит от протокола и поддерживает подключение дисков и массивов хранения через iSCSI, Fibre Channel и хранилище SAS.
Модуль MPIO не включен по умолчанию в Windows Server. Установить его на Windows Server 2016 можно двумя способами:
- Из графического интерфейса с помощью консоли Server Manager
- Из командной строки Powershell
Установка MPIO с помощью консоли Server Manager
- Откройте консоль Server Manager;
- В списке Features найдите и включите опцию multipath I / O;
- Завершите установку компонента MPIO и перезапустите сервер.
Установка MPIO с помощью Powershell
Запустите консоль PowerShell от имени администратора и выполните команду для установки компонента:
Add-WindowsFeature -Name 'Multipath-IO'
Чтобы убедиться, что модуль MPIO установлен на вашем сервере Windows, запустите:
Get-WindowsFeature -Name 'Multipath-IO'
Примечание. Чтобы отключить MPIO, выполните команду:
Remove-WindowsFeature -Name 'Multipath-IO'
Настройка MPIO в Windows Server 2016
После установки модуля MPIO вам необходимо активировать его для LUN, доступных в разных местах. По умолчанию операционная система видит каждое подключение к диску как отдельный логический диск (LUN).
Совет. Одним из компонентов MPIO является специальный модуль Microsoft Device Service Module (MSDSM), который позволяет управлять политиками балансировки нагрузки. По умолчанию MPIO устанавливается вместе со стандартным Microsoft DSM, но в большинстве случаев стоит установить модуль DSM, предоставленный поставщиком хранилища (IBM DSM, HP DSM MPIO и т.д.). Обычно скорость и функциональность нативного модуля DSM выше, чем у стандартного модуля Microsoft DSM (производитель пишет свои модули DSM с учетом специфики работы и характеристик своего оборудования)/
Разрешить Microsoft DSM (MSDSM) автоматически объединять блоки SAN в зависимости от типа подключения. MSDSM автоматически определяет наличие LUN с несколькими путями к системам хранения и поддерживает самые популярные системы хранения.
Это можно сделать из командной строки:
- Для дисков SAS:
Enable-MSDSMAutomaticClaim -BusType SAS
- Для дисков iSCSI:
Enable-MSDSMAutomaticClaim -BusType iSCSI
Примечание. Эту же операцию можно выполнить с помощью утилиты mpclaim (представленной в Windows 2008 R2). Следующая команда просканирует все устройства, обнаруженные системой, определит, какие из них имеют несколько путей, и включит для них поддержку MPIO. Параметр
-r
[автоматический перезапуск (при необходимости) без запроса] включает автоматический перезапуск сервера:
mpclaim.exe -r -i -a ""
Вы также можете включить DSM через графический интерфейс. Откройте административную консоль Server Manager и выберите MPIO в меню «Инструменты» (или запустите команду mpiocpl).
Перейдите на вкладку «Обнаружение нескольких путей», включите параметр «Добавить поддержку устройства SAS» (или «Добавить поддержку устройства iSCSI», если вы используете хранилище iSCSI) и нажмите «Добавить». Затем перезапустите сервер.
После перезагрузки откройте Диспетчер устройств или Управление дисками и убедитесь, что количество подключенных дисков (LUN), доступных серверу, уменьшилось в 2 раза (при наличии двунаправленных подключений к системе хранения).
вы можете управлять списком устройств, для которых включена поддержка MPIO, на вкладке «Устройства MPIO» (или с помощью команды
Get-MSDSMSupportedHw
).
Вы можете добавить новые устройства MPIO, нажав кнопку «Добавить» или из PowerShell:
New-MSDSMSupportedHw -VendorId <vend> -ProductId <product>
При настройке кластера настройку MPIO необходимо выполнить на всех узлах.
Если вы подключаете цель iSCSI через 2 пути и хотите использовать MPIO для этого подключения, вам необходимо выбрать iSCSI LUN при подключении цели, нажать кнопку «Подключить» и включить параметр «Включить многопутевый режим.
Затем нажмите кнопку «Дополнительно» и сопоставьте разные IP-адреса инициатора с разными IP-адресами назначения.
Используя PowerShell, вы можете получить текущие настройки MPIO:
Get-MPIOSetting
PathVerificationState: отключено PathVerificationPeriod: 30 PDOremovePeriod: 20 RetryCount: 3 RetryInterval: 1 UseCustomPathRecoveryTime: отключено CustomPathRecoveryTime: 40 DiskTimeoutValue: 60
вы можете изменить настройки таймера MPIO следующим образом (например, установить рекомендуемые настройки для флеш-массива):
Set-MPIOSetting -NewPathRecoveryInterval 20 -CustomPathRecovery Enabled -NewPDORemovePeriod 30 -NewDiskTimeout 60 -NewPathVerificationState Enabled
Доступны следующие критерии балансировки MPIO:
- FOO – Только аварийное переключение
- RR – круговая система
- LQD – Минимальная глубина хвоста
- LB – Минимальные блоки
Чтобы настроить политику балансировки (например, Round Robin):
Set-MSDSMGlobalLoadBalancePolicy -Policy RR
Также политику балансировки можно изменить в свойствах подключенного LUN на вкладке MPIO. В этом примере для массива выбран циклический перебор.
Чтобы увидеть полный список команд PowerShell, доступных в модуле MPIO, выполните команду:
Get-Command –Module Mpio
SAN Policy
В Windows есть специальная политика SAN, которая определяет, должны ли диски монтироваться автоматически при подключении к хосту.
Текущий параметр политики SAN можно получить с помощью diskpart. Политика SAN по умолчанию – Shared Offline.
именно из-за этой политики SAN внешние диски, подключенные к системе хранения, могут отключаться при перезагрузке. См. Статью «Диск отключен в соответствии с политикой, установленной администратором”.
Для автоматического монтирования дисков необходимо изменить значение политики SAN на OnlineAll.
DISKPART> san policy=OnlineAll
Возможные значения политики SAN:
OfflineВсе | По умолчанию все диски отключены |
Автономный Внутренний | Все агрегаты на внутренних шинах отключены |
Общий доступ в автономном режиме | Все диски подключены через iSCSI, FC или SAS в автономном режиме |
ОнлайнВсе | Все диски автоматически переводятся в онлайн (рекомендуется) |
Источник изображения: winitpro.ru
Пошаговое руководство: поднимаем iSCSI таргет под СХД True System Gladius L (бюджетная СХД на базе Linux для хранения бэкапов) и настраиваем MPIO (multipath IO) для iSCSI в Microsoft Windows Server 2012.
Обычно мы используем СХД на базе CentOS или Fedora в качестве репозиториев для Veeam Backup&Replication, но иногда стоит задача обеспечить резервную СХД с блочным доступом. В этом случае удобнее всего использовать targetcli под Fedora. Targetcli — достаточно удобный инструмент для управления lio-target, ставшего стандартом в ядре Linux (начиная с 2.6.38). Данный пост, как всегда, предназначен для тех случаев, когда первоисточник читать некогда и нужна простая пошаговая инструкция.
MPIO (multipath input/output, многопутевой ввод-вывод) применительно к хранению данных используется для масштабирования производительности и увеличения надежности. Принцип работы очевиден из названия: используется несколько путей от хоста к блочному устройству. Целью является повышение надежности соединения за счет отсутствия единых точек отказа в виде HBA на стороне инициатора, контроллеров на стороне таргета и прочих компонентов: трансиверов, кабелей, коммутаторов и т.д. На нижеприведенной схеме мы видим классический пример отказоустойчивого подключения: 2-контроллерную СХД с подключением к двух хостам через два коммутатора. Для каждого хоста в данном случае существует 8 путей: линк через 1-й коммутатор -> 1-й линк к первому контроллеру, линк через 1-й коммутатор -> 2-й линк к первому контроллеру и т.д. При правильной настройке многопутевого доступа мы можем сохранить доступ к СХД (а значит, избежать возможной потери данных при аварийном отключении) до тех пор, пока есть хотя бы один путь. Задетый кабель, выход из строя одного из коммутаторов, запланированное (например, для обновления прошивки) отключение отдного из контроллеров, задетый кабель — все это не приведет к отключению и простоям.
Работа с блочным устройством через MPIO обеспечивается средствами операционной системы, особенности работы зависят от конкретной ОС и используемого оборудования. Может использоваться стандартная реализация MPIO в ОС, при необходимости с использованием специальных модулей (DSM в случае Windows), учитывающих специфику работы СХД, например, существование оптимальных и неоптимальных путей для ALUA.
Алгоритм использования путей доступа определяется политиками MPIO, штатно реализованными в ОС или в сторонних DSM для Windows/Linux, PSP для VMware ESXi. Некоторые из политик, например Round Robin (циклическое переключение путей), обеспечивают балансировку нагрузки между путями. С описанием политик MPIO для Windows Server 2008R2/2012 можно ознакомиться тут.
Общие рекомендации по использованию iSCSI
Основное и важное правило: не используейте аггрегацию портов с iSCSI. Для повышения отказоустойчивости и масштабирования полосы пропускания используйте только MPIO. Для некоторых случаев есть возможность использования такой специфичной для iSCSI технологии как MCS (Multiple Connections per Session).
Gladius Storage L и Gladius Storage RTS
Различие между этими платформами заключается в том, что в Gladius Storage RTS используется RTS OS, коммерческий дистрибутив Linux от компании RisingTide Systems, разработчика LIO Target для ядра Linux. В RTS OS есть поддержка VAAI, active/passive кластеров и прочего полезного функционала. Gladius Storage L — это Fedora Linux, со свободной реализацией утилиты управления для LIO Target — targetcli, как уже упоминалось выше, для использования в качестве основной СХД не рекомендуется, только в качестве резервной или использования совместно с Veeam Backup&Replication, в роли backup repository.
LVM
Для привязывания к LUN’ам можно использовать несколько видов т.н. backstores:
- block (в RTS OS — iblock). Блочное устройство. Обеспечивает максимальную производительность.
- fileio. Обычный файл.
- pscsi. Режим проброса SCSI команд напрямую к блочному устройству. Предназначен исключительно для тестовых целей.
- ramdisk. Как и следует из названия — это рамдиск, блочное устройство, эмулироемое в ОЗУ. Можно использовать для выявления узких мест в используемых HBA или коммутаторах.
В качестве backstore удобно использовать не непосредственно блочное устройство (например, массив, презентуемый RAID контроллером), а том LVM. Прежде всего мы получаем удобный способ управления емкостью томов, во-вторых — снапшоты.
Инициализируем физический том:
[root@localhost ~]# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created
Создаем группу томов vg00
:
[root@localhost ~]# vgcreate vg00 /dev/sdb Volume group "vg00" successfully created
Создаем логический том lv00
размером в 20ГиБ: lvcreate -L 20GiB vg00 -n lv00
На выходе получаем блочное устройство /dev/vg00/lv00
.
targetcli
Предполагается, что у вас уже настроены два сетевых интерфейса 10.12.12.3 и 10.12.12.4.
Запускаем targetcli
. Это оболочка, позволяющая управлять бэксторами, таргетами, правами и другими настройками для таргетов и LUNов. Вместо громоздкого конфигурационного файла вы работаете с наглядной древовидной структуров объектов, выводится она по команде ls
:
/> ls o- / .......................................................................................... [...] o- backstores ............................................................................... [...] | o- block ................................................................... [Storage Objects: 0] | o- fileio .................................................................. [Storage Objects: 0] | o- pscsi ................................................................... [Storage Objects: 0] | o- ramdisk ................................................................. [Storage Objects: 0] o- iscsi ............................................................................. [Targets: 0] o- loopback .......................................................................... [Targets: 0] o- vhost ............................................................................. [Targets: 0]
Все изменения сохраняются при выходе из targetcli автоматически (в RTS OS по умолчанию — только вручную, по команде saveconfig
). Если сохраненная конфигурация не загружается при запуске сервера, проверьте, запущен ли сервис target
, при необходимости активируйте его:
systemctl enable targetcli.service systemctl start targetcli.service
Создаем backstore
Добавляем созданный логический том в качестве бэкстора:
/> /backstores/block create disk00 /dev/vg00/lv00 Created block storage object disk00 using /dev/vg00/lv00.
Создаем iSCSI порталы и LUNы
/> /iscsi create Created target iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.147e78151036. Created TPG 1.
Появятся новый iSCSI IQN (назначается автоматически, при необходимости можно задать IQN вручную) и группа порталов.
Создаем два портала, соответствующих двум сетевым интерфейсам:
/> /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.147e78151036/tpg1/portals create 10.12.12.3 /> /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.147e78151036/tpg1/portals create 10.12.12.4
Создаем LUN, привязанный к ранее созданному бэкстору:
/> /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.147e78151036/tpg1/luns create /backstores/block/disk00
Далее правила хорошего тона предписывают задать права доступа для LUN’а, настроить CHAP, ведь повреждение данных при случайном подключении и использовании не того LUN’а — обычное дело. Для целей тестирования это можно временно пропустить:
/> /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.147e78151036/tpg1 set attribute authentication=0 demo_mode_write_protect=0 generate_node_acls=1 cache_dynamic_acls=1
Проверяем дерево объектов:
/> ls o- / .......................................................................................................... [...] o- backstores ............................................................................................... [...] | o- block ................................................................................... [Storage Objects: 1] | | o- disk00 ..................................................... [/dev/vg00/lv00 (20.0GiB) write-thru activated] | o- fileio .................................................................................. [Storage Objects: 0] | o- pscsi ................................................................................... [Storage Objects: 0] | o- ramdisk ................................................................................. [Storage Objects: 0] o- iscsi ............................................................................................. [Targets: 1] | o- iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.147e78151036 ........................................ [TPGs: 1] | o- tpg1 ................................................................................... [gen-acls, no-auth] | o- acls ........................................................................................... [ACLs: 0] | o- luns ........................................................................................... [LUNs: 1] | | o- lun0 ................................................................... [block/disk00 (/dev/vg00/lv00)] | o- portals ..................................................................................... [Portals: 2] | o- 10.12.12.3:3260 ................................................................................... [OK] | o- 10.12.12.4:3260 ................................................................................... [OK] o- loopback .......................................................................................... [Targets: 0] o- vhost ............................................................................................. [Targets: 0]
Мы видим, что у нас есть один LUN (lun0), привязанный к блочному бэкстору /dev/vg00/lv00
. Этот LUN мы отдаем по iSCSI, у нас есть два портала в группе с адресами 10.12.12.3 и 10.12.12.4.
Устанавливаем MPIO
Предполагается, что для iSCSI настроены два сетевых интерфейса 10.12.12.1 и 10.12.12.2.
Добавляем поддержку MPIO в Windows Server и перезагружаемся:
Подключаемся к таргету
Далее нужно подключиться к таргету по одному из путей прежде чем активировать MPIO для iSCSI. Открываем свойства iSCSI-инициатора и на вкладке Discovery добавляем оба адреса порталов:
Переходим на вкладку Targets, в списке должен отображаться таргет с нашей СХД. Подключаемся к нему, отметив пункт Enable multi-path:
Статус таргета должен смениться в случае успешного подключения на Connected, LUN должен появится в Disk Manager’е:
Включаем поддержку MPIO для iSCSI
Открываем свойства MPIO. На вкладке Discover Multi-paths жмем Add support for iSCSI Drives и Add. После перезагрузки штатный инициатор iSCSI должен появится в списке устройств, работающих через MPIO:
Добавляем пути
Осталось добавить остальные пути, всего их будет 4:
- 10.12.12.1->10.12.12.3
- 10.12.12.1->10.12.12.4
- 10.12.12.2->10.12.12.3
- 10.12.12.2->10.12.12.4
Для этого просто добавляем сессии в свойствах таргета:
Список путей и назначенную политику MPIO можно видеть в свойствах устройства через свойства таргета или через Disk Manager:
Остается проверить работоспособность простым способом: запускаем нагрузку (например, через IOmeter), дергаем один из кабелей. Путей остается только два, но диск не теряется: