Skip to main content
Pure1 Support Portal

Configuring Multipath-IO for Windows Server 2012/2012R2/2016


There are three Windows Server management tasks that need to be completed for the Pure Storage FlashArray volumes (LUNs) to work properly. The first two discussed in the Configuring Multipath-IO section are:

  1. Setup an MPIO Device
  2. Configuring MPIO Timers

The next sections walkthrough each of these management tasks using the graphical user interface (GUI) or Windows PowerShell.

Multipath-IO Devices

The Pure Storage FlashArray needs to be setup as an MPIO Device in order to support multipathing. See the Installing Multipath-IO section for more details. 

Setting up MPIO using the Control Panel Applet

These steps work for Windows Server 2012, 2012 R2 and 2016. The only differences between the graphical user interface is the changes in the dialogs visual appearances. The example provided in this section are taken from Windows Server 2016.

  1. Using the Control Panel double-click on the MPIO applet to open up the MPIO Properties dialog box.

    Note: The MPIO applet can also be started from Start > Run mpiocpl

  2. Click Add to show the Add MPIO Support dialog box. 

    Note: Pay close attention to the instructions in the dialog box for string formatting. There should be 4 extra spaces after PURE and 6 extra spaces after FlashArray.


3rd party Device Specific Modules (DSMs) will not claim Pure Storage FlashArray volumes. No 3rd party DSMs are supported. This includes EMC PowerPath, NetApp ONTAP DSM, HP 3PAR DSM or others.

3. Click OK to complete the addition of the MPIO device.

At this point configuration for Fibre Channel (FC) on the Windows Server is completed. If using iSCSI please continue to Setting up MPIO with iSCSI Support using the Control Panel Applet.

Reboot Required dialog box will be displayed on all Windows Server versions. Choose Yes or No depending on what other management or application tasks you are performing but keep in mind that a reboot is required for the new settings to take effect.

Important iSCSI Setup Note

If iSCSI connectivity is being used ignore this reboot requirement. The reason for this is to reduce the number of reboot cycles for the Windows Server host because adding iSCSI support requires an additional reboot. If iSCSI is not being planned Reboot the Windows Server host.


Setting up MPIO with iSCSI Support using the Control Panel Applet

1. iSCSI Setup Step 

Click on the Discover Multi-Paths tab in the MPIO Properties dialog. Click on Add support for iSCSI devices

After adding the support for iSCSI devices click the MPIO Devices tab and see the MSFT2005SCSIBusType_0x9 device has been added. 

2. Click OK then Reboot the Windows Server host.  

Setting up MPIO using Windows PowerShell on Windows Server 2012, 2012 R2 and 2016

Using Windows PowerShell is the preferred method for setting up MPIO devices. The reason for preferring PowerShell is the requirements of ensuring the device that is added adheres to the string formatting of Vendor (8 characters) and Product (16 characters). The PowerShell cmdlet, New-MSDSMSupportedHw, handles this formatting requirement. 

The PowerShell below shows how to add a new MPIO device for Pure Storage, retrieve the MPIO devices and remove the example MPIO device provided by Windows Server.

Start a Windows PowerShell session and run the following.

Add New MPIO Device

PS C:\> New-MSDSMSupportedHw -VendorId PURE -ProductId FlashArray

VendorId ProductId
-------- ---------
PURE     FlashArray

Retrieve Available MPIO Devices

PS C:\> Get-MSDSMSupportedHw

VendorId ProductId
-------- ---------
Vendor 8 Product       16
PURE     FlashArray

Remove Default MPIO Device

Removing the default MPIO device is not necessary but simply a recommendation as the default Vendor 8 Product 16 device does not do anything.

PS C:\> Remove-MSDSMSupportedHw -VendorId 'Vendor*' -ProductId 'Product*'
PS C:\> Get-MSDSMSupportedHw

VendorId ProductId
-------- ---------
PURE     FlashArray

The final step to perform using PowerShell is to restart the computer. This operation is performed automatically when using the graphical user interface (GUI). In the case of PowerShell a command needs to be executed. 


Multipath-IO Timers

There are 6 MPIO Timer values that are the recommended for use with a Pure Storage FlashArray for optimal performance. See MPIO Timers for full details.

When changing the Mulitpath-IO timers a Reboot is Required for the new settings to take effect.


Setting Default FlashArray Definition


0 1

Specifies whether MPIO performs custom path recovery.

Type is boolean and must be filled with either 0 (disable) or 1 (enable). By default, it is disabled.


40 20

Specifies a custom path recovery time, in seconds. This is the length of time before the server attempts path recovery. The default value is 40. 

Note: CustomPathRecovery parameter has to be enabled for this value to be used.


20 30

Specifies a physical device object (PDO) removal period, in seconds. This period is the length of time the server waits after all paths to a PDO have failed before it removes the PDO. The default value is 20.





Specifies the disk timeout value, in seconds. This value is the length of time the server waits before it marks the I/O request as timed out.

Note: Microsoft documentation has an error and states the default DiskTimeoutValue is 120. On a newly installed Windows Server using Get-MPIOSetting shows the default value is 60. This is an error in Microsoft's documentation and this value should not be changed.

PathVerificationState Disabled Enabled Specifies whether to enable path verification. 
PathVerificationPeriod 30 30 Specifies a path verification period, in seconds. This is the length of time for the server to verify every path. This parameter is not relevant unless the path verification state has a value of Enabled.

Updating MPIO Timers using Windows PowerShell

Using Windows PowerShell is the preferred method for setting the MPIO Timer values when managing Windows Server 2012, 2012 R2 or 2016 using Set-MPIOSetting cmdlet which is part of the MPIO module. 

Start a Windows PowerShell session and run the following.

Retrieving Current MPIO Timer Values

This will return the current MPIO Timer values. On a newly installed Windows Server all of the default settings will be set as shown below.

PS C:\> Get-MPIOSetting

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

The below PowerShell shows running Set-MPIOSetting four different times with new parameter values. This was done to show each new timer value for clarity. The same can be accomplished with a single line of PowerShell using each of the parameters, this alternative is shown as well. 

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


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