Using MPIO with the Windows Server iSCSI Initiator

windows server network controller
In this post, I will show you how to use the Windows Server iSCSI Initiator to create a network fault-tolerant connection to an iSCSI target by configuring MPIO. Note that the lab used for the below scenario was based on a Windows Server 2016 connecting to an Azure StorSimple 1200 virtual appliance.
 

 

iSCSI Networks

Add two network interfaces to the server that will be connecting to the storage appliance. Each interface will connect to the iSCSI storage system. Various vendors will have requirements for the network configurations:

  • Some will require both iSCSI NICs to be on different networks/VLANs.
  • Others will require both iSCSI NICs to be on the same network/VLAN.
  • And some vendors will be okay with either option.

In my case, both iSCSI NICs are on different networks:

  • iSCSI NIC1: 10.0.1.13/255.255.255.0
  • iSCSI NIC2: 10.0.2.13/255.255.255.0

Each iSCSI NIC on the server will have 1 connection to a corresponding NIC on the storage appliance. This means that there will be 2 iSCSI sessions for each iSCSI volume on the storage appliance that the server will connect to.
If I used a single VLAN/subnet for all iSCSI traffic, each iSCSI NIC on the server could connect to both iSCSI NICs on the storage appliance. There are 2 sessions per iSCSI NIC per volume. This means that there would be 4 sessions per volume that the server will connect to.
Make sure that the two iSCSI interfaces on the server can communicate reliably with the corresponding iSCSI NICs or the same networks on the storage appliance.

Add and Configure MPIO

Launch Server Manager in the server from the storage that you want to connect to.

  1. Click Manage > Add Roles And Features.
  2. Click Next to get to the Features screen.
  3. Check the box for Multipath I/O (MPIO).
  4. Complete the wizard and wait for the installation to complete.

We will now configure MPIO to enable support for iSCSI:

  1. Click Start and run MPIO.
  2. Navigate to the Discover Multi-Paths tab.
  3. Check the box to Add Support For iSCSI Devices.
  4. Click OK and reboot the server when prompted.
Enabling MPIO support for iSCSI [Image Credit: Aidan Finn]
Enabling MPIO Support for iSCSI [Image Credit: Aidan Finn]

Configuring iSCSI

Launch iSCSI on the application server and select the iSCSI service to start automatically. Browse to the Discovery tab. Do the following for each iSCSI interface on the storage appliance:

  1. Click Discover Portal.
  2. Enter the IP address of the iSCSI appliance.
  3. Click OK.

Repeat the above for each IP address on the iSCSI storage appliance.

Browse to Targets. An entry will appear for each available volume/LUN that the server can see on the storage appliance.

Available iSCSI volumes that are not yet connected [Image Credit: Aidan Finn]
Available iSCSI Volumes that Are Not Yet Connected [Image Credit: Aidan Finn]

Configure Each Volume

For each volume, do the following:

  1. Click Connect to open the Connect To Target dialogue.
  2. Check the box to Enable Multi-Path.
  3. Click Advanced. This will allow us how to connect the first iSCSI session from the first NIC on the server. We can connect to the first interface on the iSCSI appliance.
  4. In the Advanced Settings box, select Microsoft iSCSI Initiator in Local Adapter, the first NIC of the server in Initiator IP, and the first NIC of the storage appliance in Target Portal IP.
  5. Click OK to close Advanced Settings.
  6. Click OK to close Connect To Target.

Adding the initial connection to the iSCSI volume [Image Credit: Aidan Finn]
Adding the Initial Connection to the iSCSI Volume [Image Credit: Aidan Finn]
 
The volume is now connected. However, we only have 1 session between the first NIC of the server and the first NIC of the storage appliance. We do not have a fault-tolerant connection enabled:

  1. Click Properties in the Targets dialogue to edit the properties of the volume connection.
  2. Click Add Session.
  3. Check the box to Enable Multi-Path.
  4. Click Advanced.
  5. Select Microsoft iSCSI Initiator in Local Adapter. Select the second iSCSI NIC of the server in Initiator IP and the second NIC of the storage appliance in Target Portal IP.
Adding the second connection to the iSCSI volume [Image Credit: Aidan Finn]
Adding the Second Connection to the iSCSI Volume [Image Credit: Aidan Finn]
  1. Click OK to close Advanced Settings.
  2. Click OK to close Connect to Target.
Two fault tolerant volume sessions [Image Credit: Aidan Finn]
Two Fault-Tolerant Volume Sessions [Image Credit: Aidan Finn]
  1. Click OK to close Properties
  2. Close iSCSI.

Repeat steps 1-14 for each volume that the server will connect to.

If you open Disk Management, your new volume(s) should appear. You can right-click a disk or volume that you connected, select properties, and browse to MPIO. From there, you should see the paths and the MPIO customizable policies that are being used by this disk.

A disk connected using MPIO and iSCSI [Image Credit: Aidan Finn]
A Disk Connected Using MPIO and iSCSI [Image Credit: Aidan Finn]