iSCSI Multipath with Windows Server made easy

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

richardm

Member
Sep 27, 2013
47
16
8
The GUI applet for the MS iSCSI Initiator is a bit confusing and sort of runs you in a circle. I prefer PowerShell instead.

Be sure to install the MPIO feature.

Code:
Add-WindowsFeature -Name Multipath-IO -IncludeManagementTools -Verbose
Code:
Connect to an iSCSI Target:
# Replace the below with your initiator and target IPs
$init1 = "192.168.3.254"
$targ1 = "192.168.3.61"
$targport1 = "3260"
$init2 = "192.168.4.254"
$targ2 = "192.168.4.61"
$targport2 = "3260"

# Make initial discovery:
New-IscsiTargetPortal -InitiatorPortalAddress $init1 -TargetPortalAddress $targ1 -TargetPortalPortNumber $targport1 -Verbose
New-IscsiTargetPortal -InitiatorPortalAddress $init2 -TargetPortalAddress $targ2 -TargetPortalPortNumber $targport2 -Verbose

# Add MPIO support for a new hardware type:
New-MSDSMSupportedHW -VendorId MSFT2005 -ProductId iSCSIBusType_0x9 -Verbose

# Make the connections:
Get-IscsiTarget | Connect-IscsiTarget -InitiatorPortalAddress $init1 -TargetPortalAddress $targ1 -IsMultipathEnabled $true -IsPersistent $true -Verbose -TargetPortalPortNumber $targport1
Get-IscsiTarget | Connect-IscsiTarget -InitiatorPortalAddress $init2 -TargetPortalAddress $targ2 -IsMultipathEnabled $true -IsPersistent $true -Verbose -TargetPortalPortNumber $targport2

# Set default MPIO policy to "Least Blocks"
# Some experimentation is required -- round robin is often slightly better...
Set-MSDSMGlobalDefaultLoadBalancePolicy -Policy LB -Verbose

# Make MPIO functionality automatic for new devices:
Enable-MSDSMAutomaticClaim -BusType iSCSI -Verbose

# Verify:
Get-MSDSMAutomaticClaimSettings
I believe this is the more modern and performant way to multipath with Windows vs the legacy "Multiple Connected Sessions."

Supposedly higher performance can be obtained by running Connect-IscsiTarget multiple times to establish parallel connections on each interface. I've tried it and found zero benefit. Perhaps useful in a busy multiuser environment with more parallelism?