Scenario: You connect your Windows or Hyper-V system to a new iSCSI target device that supports multi-path I/O (MPIO) and add a session for each iSCSI NIC in the server. When you get the disk established in Disk Management, it shows up twice. You can bring one online, but any others show “Offline (The disk is offline because it has a redundant path with another device)”.
The basic issue is that multipath I/O needs to be configured at the Windows level. If you have specialized software from your hardware vendor, use that first. They will often enable and configure the necessary Windows components for you.
Before you can correct the connection issue, you must first enable multipath I/O.
Method 1: Enable MPIO in Server Manager
In a GUI installation of Windows, open Server Manager. Access the Features section. Choose “Add Features”. Find Multipath I/O, place a check in its box, and step through the wizard. The following picture was taken from 2012 R2, but the basic process is the same from 2008 onward.
Multipath I/O Installation in Server Manager
Method 2: Enable MPIO at the Command Line
In Hyper-V or a Core installation prior to 2012, first run:
DISM /Online /Get-Features
“MultipathIo” should be one of the top entries. If it is listed as disabled, run:
DISM /Online /Enable-Feature /FeatureName:MultipathIo
(the feature name itself is case-sensitive).
Method 3: Enable MPIO in PowerShell
In 2012 and later, you can check the installed status of MPIO with the following:
Enable it with the following:
Enable MPIO for iSCSI Devices
Installing MPIO doesn’t mean that your devices will use it right away. Now you need to tell them to take advantage of it.
In a GUI installation of Windows, access the MPIO control panel by going to Start->Administrative Tools->MPIO. In Hyper-V or a Core installation, run mpiocpl.exe.
In the MPIO window, switch to the “Discover Multi-Paths” tab and click “Add support for iSCSI devices”, then click “Add”. Note: If you haven’t already established a connection to your iSCSI device, you may have to repeat this step.
MPIO: Add iSCSI
A reboot will be required. Before you reboot, you can flip back to the first tab of the MPIO panel; it should show an entry for the device.
The item Vendor 8Product 16 is just a placeholder that shows hardware developers how their entries will look. It doesn’t do anything, doesn’t mean anything, and doesn’t hurt anything. You can remove it or leave it.
Establish the Multiple Paths
The precise steps to work with iSCSI connectors is a little different between the control panels in 2008 and later Windows/Hyper-V versions. I’m only going to provide directions for these later versions. The differences are minor enough that users of the earlier versions should be able to follow along pretty closely.
In a GUI installation of Windows, there is an “iSCSI Initiator” entry under Administrative Tools in the Start menu. For Hyper-V or Core, run iscsicpl.exe and you’ll get the same thing. If your server doesn’t know about the device yet, you’ll want to start on the Discovery tab and add in the device’s portal IP. On the Targets tab, if you don’t see the device, click Refresh. If you still can’t see the device, then there is a problem connecting to the portal. Otherwise, highlight the device and click Properties. If you’ve already connected before, there will be at least one entry under the Identifier section. You can add one session per iSCSI NIC. If you’d already tried to set up MPIO and added the multiple sessions, they should already appear and you’re finished. Otherwise, click Add Session. Check the Enable multi-path box and click Advanced…. If you need to select a particular adapter, do so (in a Hyper-V environment, you generally do, because Default means the management adapter and that’s probably not what you want). Pick the Source IP. Whether or not you need to select anything for the Target portal depends on the device, but you probably don’t. Repeat this step for all remaining iSCSI NICs.
Now, Disk Management should show only one disk. If your iSCSI device has a monitoring system, it should show the different IPs of your server connected to the target.
Verifying the Change and Setting MPIO Policies
You’ll want to check the MPIO properties of your connected devices to ensure it is operating in your preferred mode. For a GUI installation of Windows, use Disk Management and check the properties of the disks. There is no graphical way to do this in Core/Hyper-V even by connecting Disk Management from a remote computer, so you’ll need to use mpclaim.exe.
- Check the current MPIO configuration of all disks:
mpclaim –s –d
- The “MPIO” column shows if MPIO is functional for a disk. The “MPIO Disk” column contains the number you’ll use for any other mpclaim commands. The “System Disk” column number corresponds to the volume number in Disk Management. The “LB Policy” shows how MPIO behaves for that disk. My preferred method is “Least Queue Depth” (LQD). Other options are Fail-Over Only, Round Robin, Round Robin with Subset, Weighted Paths, and Least Blocks. You can read up on the various options on the Technet site.
- Change the MPIO setting for a disk to Least Queue Depth:
mpclaim –l –d # 4
where # is the MPIO disk number from the mpclaim –s –d command. Instead of 4 for Least Queue Depth, you can use a 0 to clear the policy and set it to system default, 1 is Fail-Over Only, 2 is Round Robin, 3 is Round Robin with Subset, 5 is Weighted Paths, and 6 is Least Blocks.
Special Note for Specified Discovery NICs
To avoid having your management NIC get involved in iSCSI, you can use the Advanced… button when setting up Discovery to restrict which NIC is being used. If you do that, you’ll need to set up a separate discovery entry to match every target IP with every initiator NIC. So, if you’ve got two NICs in your server, then you’ll need two entries for it on the Discovery tab for every unique portal IP that you want to connect to. If not, when you try to add a session for a second NIC, it will gray out the Target portal IP: field and if you try to OK out of that dialog and then the Connect To Target dialog, it will error with The target name is not found or is marked as hidden from login.
About MCS (Multiple Connected Sessions)
MCS is a different technology that behaves similarly to MPIO, but at a different level. MPIO enjoys wider support and is easier to control and monitor. Using MPIO at the same time with MCS is rarely supported and will probably not improve performance.