MPIO Prerequisites:

· Configure Windows Server 2008/2012 with at least two network adapters with an IP address each.
· Configure iSCSI server on VNXe with two or more IP interfaces.
· Start iSCSI initiator service on Windows server

Here is the overview of configuration steps:

I.    Install MPIO
II.   Configure iSCSI initiator for multipathing
III.  Configure it for iSCSI storage
IV.  Change registry values
V.   Configuring MPIO in Microsoft Failover Cluster

I.  Install MPIO

On a Windows Server 2008:
1.    Open Server Manager
2.    Right click on Features and select Add Features
3.    In Add Features Wizard, tick the box for Multipath I/O and click Next
4.    Click Next on confirmation window.
5.    Once installation completes click on Close.
On a Windows server 2012:
1.    Open Server Manager
2.    In the Dashboard click on Add roles and Features
3.    Select ‘Role-based or feature-based installation’ and click Next
4.    Select ‘Select a server from the server pool’ and click on the server name and click Next.
5.    If you are seeing Roles list, click Next again to go to Features list. Tick the box for Multipath I/O and click Next.
6.    Click on Install and close on completion.

II.  Configuring iSCSI Initiator with multiple paths:

When iSCSI initiator is opened for the first time in Control Panel, it may prompt you to start the service, click yes to start iSCSI service. Before we start configuring iSCSI initiator on Windows host we should understand how iSCSI connectivity works in different models of VNXe. Though VNXe3100, VNXe3150, VNXe3300 and VNXe320 are from same VNXe family, there is a difference in how failover works in old and new models.

    In models VNXe3100, VNXe3150 and VNXe3300 (released in 2011):
iSCSI runs as a service and LUNs are bound to that server. If one SP fails, then iSCSI servers on that SP failover to peer SP along with LUNs they own. Also same IP address interfaces start to function from their new SP. You can create multiple iSCSI servers up to maximum of 12 per VNXe system. Each of these servers carries unique IQNs. It also means whenever failover occurs iSCSI server moves over to peer SP along with its IP interfaces, IQN and LUNs. However this is transparent to host and during failover it experiences disconnection from LUN for a brief period. For this reason you need to make some modifications in Windows registry to tolerate this disconnection (registry path given below).

   In model VNXe3200:
This model has block level implementation of iSCSI target. You just create interfaces for iSCSI (be it Ethernet or FC) on each SP. Though you can have single interface for iSCSI, it is recommended to create one interface on each SP. When SP fails, the LUN is trespassed and it is accessible from PEER SP’s IP interface.  Though these same steps can be followed for setting up multiple paths for VNXe3200, it is recommended referring to ‘Using a VNXe3200 System with Fibre Channel (FC) or iSCSI LUNs’ document on

Follow these steps to configure iSCSI initiator with multiple paths to iSCSI target on VNXe3100 / 3150 / 3300: (same steps apply to both Windows Server 2008 and 2012)

1.    Open iSCSI initiator and click on Discovery tab.
2.    Click on ‘Discover Portal…’ button
3.    Enter the IP address of iSCSI server.
4.    Click on Targets tab. Depending on how many iSCSI servers are created on that SP (VNXe3100/3150/3300), you will see that many IQNs listed here. Connection status will be ‘Inactive’.
User-added image

5.    Select the appropriate iSCSI server’s IQN and click on ‘Connect’ button.
6.    Check the box for ‘Enable multi-path’ and then click on Advanced button.
User-added image

7.    Select ‘Microsoft iSCSI Initiator’ for Local adapter.
8.    Select primary IP on host for Initiator IP: (In our example –
9.    Select primary IP on VNXe for Target Portal IP: (in our example –
User-added image

10.    Click OK twice to come back to iSCSI Initiator Properties page. Now the connection status should show Connected.
11.    Click on that Connected IQN and click on Properties button.
12.    In the Properties window click on ‘Add session’ button.
13.    Check the box for ‘Enable multi-path’ and click on ‘Advanced…’ button.
14.    Select ‘Microsoft iSCSI Initiator’ for Local adapter.
15.    Select secondary IP on host for Initiator IP: (In our example –
16.    Select primary IP on VNXe for Target Portal IP: (in our example –
User-added image

17.     Click on OK and OK again. Now you should see two sessions for this iSCSI target in Properties window.
User-added image

18.    If you have more than two IP interfaces configured for a particular iSCSI server (target) and Initiator pair, you can add more sessions.
19.    Click on OK to close this Properties window.
20.    Select the same IQN name and click on ‘Devices…’ button. Depending on number of LUNs provided to this host, you will see all paths to those disks. In this example only one disk is provided and you’ve added two sessions.
User-added image

21.    To set the load balancing policies, click on MPIO… button. Select appropriate policy for your need; default option is Round Robin. Refer to Microsoft documents for more details.
User-added image

22.    Repeat steps 1 through 21 for additional iSCSI servers on VNXe.

III.     Configure MPIO for iSCSI storage (identical for both Windows 2008 and 2012)

1.    Open MPIO properties window from Control Panel.
2.    Following screenshots show how first two tabs of MPIO properties window look initially without any configuration.
User-added image
We need to check the box for ‘Add support for iSCSI devices’, however until you add a valid iSCSI disk to server you cannot do it. If you have not provisioned any iSCSI storage to this host yet, please follow the steps below under section ‘Configuring iSCSI Initiator with multiple paths:’ and come back to this step to enable it.
3.    It may ask for a reboot, select No because we will reboot after completing one more step.
4.    Click on Discover Multi-Paths tab and check the box ‘Add support for iSCSI devices’.
5.    Click on MPIO Devices tab and click on Add button.
6.    Enter Device Hardware ID as follows
EMC     Celerra 
(Please note, there are 5 spaces after EMC and 9 spaces after Celerra. This is because Hardware ID consists of Vendor ID and Product ID which are 8 characters and 16 characters respectively).
7.    After clicking OK it prompts to reboot the host. Click Yes to reboot.
8.    After the reboot the MPIO properties may look like this:
User-added image

IV.    Change registry values

With the above configuration with iSCSI initiator and MPIO, iSCSI LUN should be available on the host. However, in the event of Storage Processor (SP) failure, the iSCSI servers running on that SP will failover to peer SP if that is healthy. This process takes around 2 minutes. During this period host cannot see the iSCSI LUNs and disk manager may show disk as offline. To avoid this you need to modify few registry values.
1.    In Windows, run the regedit.exe command to start the Windows Registry Editor.
2.    Using the Windows Registry Editor, navigate to  ComputerHKEY_LOCAL_MACHINESYSTEMCurrentControlSet, then right-click CurrentControlSet, select Find to search for, and edit the registry values shown below. They will be located under the following registry key:

Where *** signifies a number specific to your computer.

Note: There are multiple “ControlSet” values in the registry. Verify that the path to the value that you found is in the CurrentControlSet. If you are not in the CurrentControlSet, run Find again until you are. If you make changes to ControlSets other than the  CurrentControlSet those changes will not affect the system.
Registry Value Instructions Description of Registry Value
LinkDownTime Set to 600. (Decimal value) This value determines how long requests will be held in the device queue and retried if the connection to the target is lost. If MPIO is installed this value is used. If MPIO is not installed MaxRequestHoldTime is used instead.
The default value for this is 15 seconds.
AsyncLogoutPauseTimeout (New Value) Add this REG_DWORD value to the same key as LinkDownTime. Set it to 600. (Decimal value) This is the number of seconds that the initiator will pause the I/O queue after receiving an async logout.

The default value is 10 seconds.

If one needs to change this value, a reboot is required for the change to take effect.

Alternatively, one can also unload and reload the initiator driver for the change to take effect. In Windows “Device Manager” GUI, look under “SCSI and RAID Controllers”. Right click on “Microsoft iSCSI Initiator” and select “Disable” to unload the driver. Then select “Enable” to reload the driver.



Find the
Set the PortalRetryCount value such that
PortalRetryCount * DelayBetweenReconnect = 600 (decimal)
PortalRetryCount: This value is used to determine how many times a connect request to a target portal should be retried if the portal is down.

The default value for this is 1

DelayBetweenReconnect : If a connection is dropped while it is in FullFeature phase, the driver will attempt to relogin. This parameter sets the delay between each re-login attempts.

The default value is 1 second.

MaxRequestHoldTime Verify that the MaxRequestHoldTime value is set to 600 (decimal) Maximum time (in seconds) for which requests will be queued if connection to the target is lost and the connection is being retried. After this hold period, requests will be failed with “error no device” and device (disk) will be removed from the system.
The default value is 60 seconds
SRBTimeoutDelta If you are using PowerPath, you need to set this. Set it to 100. (decimal) The timeout set by class drivers (such as disk.sys, etc) for various requests does not take into account network delays. This value is used to increment the timeout set by class drivers.

SRBTimeoutDelta can be as low as 5 seconds. If it is lower than that, initiator will use 15 instead. SRBTimeoutDelta gets added to the timeout set by the class driver.

The default value is 15 seconds.

If you do not find these values at all, confirm that iSCSI initiator has been installed.

V.      Configuring MPIO in Microsoft Failover Cluster

1.    All nodes participating in the Failover Cluster should be configured identically by following steps mentioned above   (MPIO, iSCSI Initiator and registry values).

2.    After setting up the nodes with all prerequisites of Failover Cluster, follow steps in the documents mentioned below to install and configure it.
For Windows Server 2008 –
For Windows Server 2012 –

3.    Storage configuration requirement is same for Failover Cluster on Windows Server 2008 or Windows Server 2012. Same is true whether you are using this cluster for Hyper-V, File Server, SQL, Exchange or any other application.

How to verify the multipathing after configuration?
Run mpclaim command to see the disks and all paths available to reach it. Though we can do lot of configurations using mpclaim command, it is out of scope for this article.
To know the path and number of disks run – mpclaim –v <filename_to_save_output>.
For example mpclaim –v mpio-config.txt

When you open this mpio-config.txt file it may look like this.

MPIO Storage Snapshot on Friday, 18 July 2014, at 09:49:28.641
Registered DSMs: 1
|DSM Name                        |      Version      |PRP | RC | RI |PVP| PVE |
|Microsoft DSM                   |006.0001.07600.16385|0020|0003|0001|030|False|
Microsoft DSM
MPIO Disk13: 02 Paths, Fail Over Only, Implicit and Explicit
        SN: 606160DE0340B520C8535C6AE160
        Supported Load Balance Policies: FOO RRWS LQD WP LB
    Path ID          State              SCSI Address      Weight
    0000000077030001 Active/Optimized   003|000|001|000   0
      * TPG_State: Active/Optimized  , TPG_Id: 2, TP_Id: 14
        Adapter: Microsoft iSCSI Initiator…              (B|D|F: 000|000|000)
        Controller: 46616B65436F6E74726F6C6C6572 (State: Active)
    0000000077030000 Active/Unoptimized 003|000|000|000   0
        TPG_State: Active/Unoptimized, TPG_Id: 1, TP_Id: 1
        Adapter: Microsoft iSCSI Initiator…              (B|D|F: 000|000|000)
        Controller: 46616B65436F6E74726F6C6C6572 (State: Active)
MSDSM-wide default load balance policy: NA
No target-level default load balance policies have been set.
In the above output there are two paths and one iSCSI LUN provisioned to this host. It is using Microsoft DSM which is default built-in MPIO driver. For VNXe there is no Device Specific Module (DSM) provided by EMC. If you are using EMC PowerPath for multipathing, it comes with several DSMs to manage different types of arrays. and it can also manage VNXe. Following mpclaim output shows when PowerPath is installed.

MPIO Storage Snapshot on Monday, 25 August 2014, at 23:33:22.985
Registered DSMs: 6
|DSM Name                        |      Version      |PRP | RC | RI |PVP| PVE |
|Microsoft DSM                   |006.0001.07600.16385|0005|0003|0001|030|0True|
|EMC PowerPath DSM for Symmetrix |005.0007.00168.0000|0005|0003|0001|030|0True|
|EMC PowerPath DSM for CLARiiON  |005.0007.00168.0000|0005|0003|0001|030|0True|
|EMC PowerPath DSM for Generic   |005.0007.00168.0000|0005|0003|0001|030|0True|
|EMC PowerPath DSM for Invista   |005.0007.00168.0000|0005|0003|0001|030|0True|
|EMC PowerPath DSM for XtremIO   |005.0007.00421.0000|0005|0003|0001|030|0True|
Microsoft DSM
No devices controlled by this DSM at this time!
EMC PowerPath DSM for Symmetrix
No devices controlled by this DSM at this time!
EMC PowerPath DSM for CLARiiON
No devices controlled by this DSM at this time!
EMC PowerPath DSM for Generic
MPIO Disk0: 02 Paths, Vendor-specfic, ALUA Not Supported
        SN: 6006048C5E2366948989EC60AFFBA41F
        Supported Load Balance Policies: FOO RR LQD LB VS
    Path ID          State              SCSI Address      Weight
    0000000080030900 Active/Optimized   003|000|009|006   0
        Adapter: Microsoft iSCSI Initiator…              (B|D|F: 000|000|000)
        Controller: CKM00130900674           (State: No Controller)
    0000000080030800 Active/Optimized   003|000|008|006   0
        Adapter: Microsoft iSCSI Initiator…              (B|D|F: 000|000|000)
        Controller: CKM00130900674           (State: No Controller)
EMC PowerPath DSM for Invista
No devices controlled by this DSM at this time!
Categories: MicrosoftServerStorage

1 Comment

John Hardwick · December 21, 2014 at 3:40 am

Helpful article. I just wish the screenshots loaded. 🙁

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Posts


Azure Password Reset – The Password you’ve selected does not meet your Active Directory password policy

This is a common error message when you try to reset a password from Azure management port or Self service portal.  The error message is very clear here – “The Password you’ve selected does not Read more…


Azure – Your account is temporarily locked to prevent unauthorized use

Here is the another common error message when dealing with directory and password synchronization.  Error Message: Your account is temporarily locked to prevent unauthorized use. Try again later. Contact Customer Support if the problem persists Read more…


Verify Service Status Remotely Using Local Account – PowerShell Script

I have modified one of my previously published script – Stop, Start, Disable Service Remotely–PowerShell Script ( to use Local account (instead of a domain account) to verify the status of the service.   Input Read more…