How to Set Up iSCSI Initiator on Windows Server 2012 R2
The iSCSI Initiator allows Windows Server 2012 R2 to connect to iSCSI storage targets — shared storage devices that expose block-level storage over a standard IP network. iSCSI is widely used for connecting servers to SAN (Storage Area Network) devices, NAS appliances with iSCSI target capability, and Windows Server iSCSI Target Server instances. When connected, iSCSI LUNs (Logical Unit Numbers) appear to Windows as physical disks that can be initialized, partitioned, and formatted like local drives. Combined with MPIO (Multipath I/O), iSCSI connections can use multiple network paths for redundancy and load balancing. This guide covers the full workflow from configuring the iSCSI Initiator service through discovery, connection, MPIO configuration, and disk initialization.
Prerequisites
The iSCSI Initiator service is built into Windows Server 2012 R2 — no additional installation is required, but the service must be started. You need the IP address or hostname of the iSCSI target and the target IQN (iSCSI Qualified Name). Dedicated network adapters for iSCSI traffic are strongly recommended — separate iSCSI storage traffic from regular LAN traffic. For MPIO, at least two network paths to the iSCSI target are needed. If CHAP authentication is configured on the target, you need the initiator name and CHAP secret. Jumbo frames (9000 MTU) should be configured on iSCSI NICs and switches for optimal performance.
Step 1: Start the iSCSI Initiator Service
The iSCSI Initiator service (MSiSCSI) must be running before you can connect to targets:
Start-Service MSiSCSI
Set-Service MSiSCSI -StartupType Automatic
# Verify the service is running
Get-Service MSiSCSI | Select-Object Name, Status, StartType
Note the local iSCSI Initiator Name — this is what the iSCSI target uses to identify this server:
(Get-InitiatorPort).NodeAddress
The IQN will look like: iqn.1991-05.com.microsoft:server01
Step 2: Install MPIO Feature
Install the MPIO feature before connecting to iSCSI targets if you plan to use multiple network paths:
Install-WindowsFeature Multipath-IO -IncludeManagementTools
# A restart is required after MPIO installation
Restart-Computer -Force
After restart, enable MPIO support for iSCSI devices:
Enable-MSDSMAutomaticClaim -BusType iSCSI
Step 3: Configure iSCSI Network Adapters
Configure dedicated IP addresses on iSCSI network adapters. Best practice is to use separate subnets for iSCSI traffic:
# Configure first iSCSI NIC
New-NetIPAddress -InterfaceAlias "iSCSI-NIC-1" `
-IPAddress "192.168.10.10" `
-PrefixLength 24
# Configure second iSCSI NIC for MPIO
New-NetIPAddress -InterfaceAlias "iSCSI-NIC-2" `
-IPAddress "192.168.11.10" `
-PrefixLength 24
# Disable DNS registration and default gateway on iSCSI NICs
Set-DnsClient -InterfaceAlias "iSCSI-NIC-1" -RegisterThisConnectionsAddress $false
Set-DnsClient -InterfaceAlias "iSCSI-NIC-2" -RegisterThisConnectionsAddress $false
Step 4: Add iSCSI Target Portal
Add the iSCSI target server’s IP address as a target portal. This tells the initiator where to discover iSCSI targets:
# Add target portal on first iSCSI path
New-IscsiTargetPortal -TargetPortalAddress "192.168.10.50" `
-TargetPortalPortNumber 3260 `
-InitiatorPortalAddress "192.168.10.10"
# Add target portal on second iSCSI path for MPIO
New-IscsiTargetPortal -TargetPortalAddress "192.168.11.50" `
-TargetPortalPortNumber 3260 `
-InitiatorPortalAddress "192.168.11.10"
# Verify target portals
Get-IscsiTargetPortal | Select-Object TargetPortalAddress, InitiatorPortalAddress
Step 5: Discover iSCSI Targets
Discover available iSCSI targets advertised by the target portal:
Get-IscsiTarget | Select-Object NodeAddress, IsConnected | Format-Table
If targets are not discovered automatically, perform an explicit discovery:
Update-IscsiTarget
Step 6: Connect to iSCSI Target
Connect to the discovered iSCSI target. For single-path connections:
$targetIQN = "iqn.2014-09.com.contoso:storage01-lun1"
Connect-IscsiTarget -NodeAddress $targetIQN `
-IsPersistent $true `
-InitiatorPortalAddress "192.168.10.10" `
-TargetPortalAddress "192.168.10.50"
For MPIO — add a second session over the second network path:
Connect-IscsiTarget -NodeAddress $targetIQN `
-IsPersistent $true `
-IsMultipathEnabled $true `
-InitiatorPortalAddress "192.168.11.10" `
-TargetPortalAddress "192.168.11.50"
Verify the connection:
Get-IscsiSession | Select-Object TargetNodeAddress, IsConnected, IsPersistent, ConnectionCount | Format-Table
Step 7: Configure MPIO Load Balancing Policy
Set the MPIO load balancing policy for iSCSI connections. Round Robin distributes I/O across all available paths:
# Get the MPIO disk
$mpioDisk = Get-MSDSMSupportedHW
# Set load balancing policy for iSCSI devices
Set-MSDSMGlobalDefaultLoadBalancePolicy -Policy RR
# Verify the policy
Get-MSDSMGlobalDefaultLoadBalancePolicy
Check MPIO path status for connected disks:
Get-MSDSMPathInfo
Step 8: Initialize and Format iSCSI Disks
After connecting, the iSCSI LUN appears as an offline disk. Initialize, partition, and format it:
# Find the new offline disk
Get-Disk | Where-Object {$_.OperationalStatus -eq "Offline"} | Select-Object Number, Size, BusType
# Bring disk online
Set-Disk -Number 2 -IsOffline $false
# Initialize with GPT (recommended for disks over 2TB)
Initialize-Disk -Number 2 -PartitionStyle GPT
# Create a partition using all available space
New-Partition -DiskNumber 2 -UseMaximumSize -AssignDriveLetter
# Format the new volume
Format-Volume -DriveLetter "E" -FileSystem NTFS -NewFileSystemLabel "iSCSI-Data" -AllocationUnitSize 65536 -Confirm:$false
Step 9: Configure CHAP Authentication
If the iSCSI target requires CHAP authentication, configure the initiator CHAP credentials before connecting:
Set-IscsiChapSecret -ChapSecret "YourStrongCHAPSecret123!"
# Connect with CHAP
Connect-IscsiTarget -NodeAddress $targetIQN `
-AuthenticationType ONEWAYCHAP `
-ChapUsername "initiator-chap-user" `
-ChapSecret "YourStrongCHAPSecret123!" `
-IsPersistent $true
Summary
The Windows Server 2012 R2 iSCSI Initiator provides full-featured iSCSI block storage connectivity with MPIO support. By configuring dedicated iSCSI network adapters, adding target portals, establishing persistent connections, and enabling MPIO with appropriate load balancing policies, you can build resilient iSCSI storage connections that survive individual network path failures. The iSCSI LUNs become local-looking disks that can be used for Failover Clustering shared storage, Hyper-V virtual machine storage, SQL Server data files, and general-purpose high-availability storage.