Step-by-Step to Configure iSCSI Datastores on ESXi
search cancel

Step-by-Step to Configure iSCSI Datastores on ESXi

book

Article ID: 410819

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

The article provides the steps to configure and mount an iSCSI datastore on an ESXi host. This is required when connecting ESXi to external storage arrays via iSCSI, so that the presented LUNs can be discovered and used as datastores.

  • iSCSI datastores appear as "Degraded" in the vSphere Client.
  • Physical switch logs show errors related to iSCSI initiator connectivity.
  • Inability to ping storage targets despite correct IP configuration.

Environment

VMware ESXi 7.x
VMware ESXi 8.x

Resolution

To confgure the iSCSI Datastore to ESXi:

1. Create network for iSCSI connectivity

In vSphere Client → select host → Configure → Networking.
Create a new vSwitch (or use a Distributed vSwitch if you manage multiple hosts) dedicated to iSCSI.

2. Create VMkernel adapter(s) for iSCSI

  1. Host → Configure → Networking → VMkernel adapters → Add VMkernel adapter.
  2. Select the vSwitch/portgroup for iSCSI, assign a static IP from the iSCSI subnet, set the MTU.
  3. If planning for multipathing, create one VMkernel per physical NIC (one per uplink) or multiple VMkernels on the same subnet for port binding.
  4. To configure iSCSI port binding with multiple NICS - Configuring iSCSI port binding with multiple NICs in one vSwitch for VMware ESXi
    Note: Ensure iSCSI VMkernel adapters are not placed on the same subnet as other management or vMotion traffic unless explicit Port Binding is used. If multiple iSCSI VMkernels share a subnet, Port Binding is mandatory to prevent routing loops that can result in 0 active paths.

3. Add the iSCSI software adapter (if using software iSCSI)

Host → Configure → Storage → Storage Adapters → Click Add Software Adapter → choose Add iSCSI Adapter.
Select the newly added iSCSI adapter → Network Port Binding → Add → select the iSCSI vmk interfaces (vmk1, vmk2, etc).
For more refer to - Configure the Software iSCSI Adapter with ESXi

4. Add iSCSI target portals (Discovery)

With the iSCSI adapter selected → Targets or Dynamic Discovery → Add → enter the storage target IP (portal).
Click Rescan for the adapter. The host will query the target and list available targets/LUNs.

5. Make sure storage array is configured with all credentials.

  1. Rescan storage adapters:
    1. Storage Adapters → select the iSCSI adapter → Rescan (or Actions → Rescan All). LUNs should appear under Devices.
    2. Create the datastore on the discovered LUN.
  2. Verification of Path Redundancy
    1.  In ESXi 8.0, the Pluggable Storage Architecture (PSA) can sometimes report "Online" for the adapter before the VMFS volumes are fully enumerated, leading to empty datastore lists. Verify that the "Paths" count matches the expected physical redundancy (e.g., 2 or 4 paths) before attempting to mount the VMFS volume.
      Note: A secondary rescan of only VMFS volumes may be required if the hardware paths appear but the datastore does not.

Note: For each ESXi host ensure to have iSCSI vmk interfaces configured, iSCSI adapter has the same discovery portals, then rescan adapters so the new datastore appears.

--

  • Uplink Verification: Ensure each iSCSI VMkernel adapter is bound to a unique physical uplink (vmnic) if path redundancy is required. Tagging multiple iSCSI VMkernels to a single 1Gb uplink provides no benefit and can cause discovery issues.
  • MTU Consistency: Verify that the MTU is consistent (e.g., 9000 for Jumbo Frames) across the VMkernel, the physical switch, and the storage array.
  • Storage Presentation: Confirm that LUNs are explicitly presented/masked to the correct Host Initiator IQN on the storage array before rescanning in ESXi.

Additional Information

Troubleshooting  "Paths not appearing despite successful vmkping."

  • If vmkping works, but you still see no paths, you may need to clear the stale iSCSI interface entries with the following command:
    • vmkiscsid -x "delete from ifaces where \"iface.phydev\" is null"