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.