Search
Join the Technical Preview Program
See how NVMe-oF removes iSCSI
bottlenecks in your HCI
The Best Hyperconverged
Infrastructure
(HCI) for Enterprise
ROBO, SMB & Edge
The Best Virtual SAN
for Enterprise ROBO, SMB & Edge

StarWind NVMe-oF Initiator: Installation Guide

Annotation 

Relevant Products 

StarWind NVMe over Fabrics (NVMe-oF) Initiator 

Purpose 

This guide outlines the process for installing and configuring the StarWind NVMe over Fabrics (NVMe-oF) Initiator on Windows Server. It includes instructions for server initial configuration, verifying RDMA connectivity, and step-by-step installation. Additionally, it covers methods to manage the initiator using a command-line utility, the StarWind NVMe-oF Initiator graphical user interface (GUI), and PowerShell. 

Audience 

This guide is intended for IT professionals, system administrators, and technology enthusiasts looking to implement high-performance NVMe over Fabrics shared storage solutions in a Windows Server environment. 

Expected Outcome 

By following this guide, users will be able to successfully install and configure the StarWind NVMe-oF Initiator on a Windows Server. The configuration connects the initiator to NVMe-oF target with an NVMe drive over an RDMA network, enabling efficient and high-speed shared storage access through NVMe over Fabrics functionality.

Solution Diagram

Here is the network diagram for the configuration described in this guide.

Preconfiguring the Servers

Prerequisites

Before installing StarWind NVMe-oF, please make sure that the latest network card firmware and drivers are installed.

For connecting storage over NVMe-oF/RMDA, please make sure that NIC supports RoCE v2.

For successful installation, please make sure that none of the antivirus or security settings do not block the creation of directories in C:\ and modifying the registry. For fresh installations, please install StarWind NVMe-oF Initiator before AV or joining the server to the domain.

For Microsoft Failover Cluster deployments and third-party targets, please make sure the target and its licensing support NVM reservations.

If MPIO is needed (for Windows server OS), add MPIO feature from the Server Manager and make sure to configure it on the hosts. Open MPIO settings (cmd or Win+R > mpio.cpl), enable MPIO support for SAS devices and press Add. Once done, press OK and restart the host if needed.

Configuration description

In this document, the first host with Mellanox ConnectX-5 adapter and NVMe SSD drives is running Windows Server 2022 with Hyper-V Role installed. As NVMe-oF target server, StarWind VSAN deployed as Controller virtual machine. The NVMe SSDs are passed through to VSAN CVM and exposed to the network as NVMe over Fabrics (NVMe-oF) target 

The second host is running Windows Server 2022 and has Mellanox ConnectX-5 adapter installed accordingly. StarWind NVMe-oF Initiator is deployed on the second Windows Server 2022 and connected to the StarWind Virtual SAN NVMe-oF target via 172.16.10.x subnet. 

Windows Server 2022 should have the latest Mellanox driver installed, which is available here: 

https://www.mellanox.com/products/adapter-software/ethernet/windows/winof-2 

 

Network Connections

 

To check the RDMA connectivity and bandwidth between the initiator server and target server, use the StarWind rPerf utility, which can be downloaded here: https://www.starwindsoftware.com/starwind-rperf 

Installing StarWind NVMe over Fabrics Initiator

NOTE: StarWind NVMe-oF Initiator GUI requires .NET Desktop Runtime to operate. For using StarWind NVMe-oF Initiator cmdlet and PowerShell no additional components are required.

1. Download StarWind NVMe-oF from the following link:  https://www.starwindsoftware.com/starwind-nvme-of-initiator#download

2. Execute the .exe to install StarWind NVMe-oF Initiator and follow the steps in the wizard.

Рисунок

3. Apply the license key to activate the product

Рисунок

4. Optionally, check the Installing Multipath IO Windows feature and optimize its settings.

NOTE: For desktop OS, MPIO is not available, so to proceed with the installation, just press Next.

Рисунок

5. Once installed, restart the server.

Рисунок

6. Install .NET Desktop Runtime to run StarWind NVMe-oF Initiator GUI. Click Download it now to get and install the software.

Рисунок

7. Open Device Manager to check that StarWind NVMe-oF Initiator is installed on the system.

Рисунок

Working with StarWind NVMe over Fabrics Initiator

The StarWind NVMe-oF Initiator offers three methods for establishing and managing connections between the target and initiator hosts: 

  • StarWind NVMe-oF Initiator GUI (Preferred)
    A user-friendly graphical interface for discovering, connecting, and managing NVMe-oF targets with minimal configuration effort. 
  • StarNVMeoF_Ctrl Command-Line Utility
    A powerful command-line tool offering full control over connection setup, ideal for advanced users and script-based automation. 
  • PowerShell Cmdlets
    Enables seamless integration with Windows PowerShell, allowing for automated workflows and complex configuration scenarios. 

Choose any of these methods to establish an NVMe-oF connection between the target and the initiator hosts.

Using StarWind NVMe-oF Initiator GUI

Discovering targets

1. Launch StarWind NVMe-oF Initiator: Start -> Control Panel -> StarWind NVMe-oF Initiator.

Рисунок

2. Navigate to the Configuration tab.

3. Press Change to modify the Initiator name if needed.
NOTE: Some targets have access control lists that allow only certain NQNs. Make sure the host NQN aligns with the one in the target settings. Also, make sure that the target allows for connectivity over NVMe-oF.

4. Press Advanced to modify StarWind NVMe over Fabrics Storage Controller settings. Parameters can be left default.

NOTE: Certain use cases might require adjusting Max Transfer Length. Max Transfer Length is to be aligned with the target. 64K works with most of the known targets. This value can be left as is.
Max Namespaces allows for adding multiple LUNs per target. Can be adjusted for multi-LUN setups.

5. It is possible to review the License details or apply the license via GUI. Press Upload to navigate to the license key.

6. Press Report to generate the support bundle.

7. Navigate to the Discovery tab and press Discover Portal.

Рисунок

8. In the Discover Target Portal dialog enter the IP address of the NVMe-oF target server to connect to the provisioned targets, along with the appropriate port number.

NOTE: Default values: for NVMe-oF/TCP, use port 8009; for NVMe-oF/RDMA, use port 4420. Make sure that the corresponding port is opened.

 

 

9. Specify a Custom Initiator Name. Use this option if you need the client connection to use a name other than the default hostname. This allows for more flexible identification of the initiator in the target server configuration.

10. Select Initiator IP.

11. Specify Connection Type (RDMA or TCP).

12. Add a Label for the Target Connection (Optional).

13. Press OK to Start Discovery.

14. Once the Target Portal is Discovered navigate to the Targets tab.

Рисунок

15. The target(s) should be visible under Targets. Select the Target Name and Press Connect.

Рисунок

16. Specify the Target Portal IP address to establish the connection.

Рисунок

17. Verify Connection. Once the target shows the status “has sessions,” it is connected.

Establish additional connections to other NVMe-oF targets using different Target Portal IP addresses (Network adapter ports) as needed.

18. Open the Disk Management snap-in. The connected disk(s) will appear as unallocated and offline.

Рисунок

19. Bring the disks online by right-clicking on them and selecting the Online menu option.

Disconnecting targets

1. To disconnect the NVMe-oF target choose the specified target from the Discovered Targets list and press the Disconnect button.

NOTE: Make sure that LUNs are not used by other applications at the moment of disconnection, as removing LUNs with active file operations may lead to data corruption.

]

Using command-line utility

The StarNVMeoF_Ctrl.exe command-line utility is used to work with the NVMe-oF initiator.

 

Рисунок

 

Usage: StarNVMeoF_Ctrl.exe [switches] command [parameters]

Switches:

  -p<rdma|tcp|hv> -- use the protocol to access targets 

  -a<N> -- use ScsiPortN instead of the first found one 

  -j -- use JSON format for output data instead of text

parameters

  adapters - list of existing StarNVMeoF adapters 

  discovery <target_ip4_addr[:port]> <local_ip4_addr> [<Horstman> [<queueDepth>]]- discovery RDMA controllers 

  discovery_tcp <target_ip4_addr[:port]> <local_ip4_addr> [<HostNQN>] - discovery TCP controllers 

  insert <target_ip4_addr[:port]> <local_ip4_addr> <SubNQN> [<HostNQN> [<numIoQueues> [<ioQueueDepth> [<numaNode> [<firstCore>]]]]] - connect to a RDMA controller 

  insert_tcp <target_ip4_addr[:port]> <local_ip4_addr> <SubNQN> [<HostNQN> [<numIoQueues> [<ioQueueDepth> [<numaNode> [<firstCore>]]]]] - connect to a TCP controller 

  insert_all <target_ip4_addr[:port]> <local_ip4_addr> [<HostNQN> [<queueDepth>]] - connect to all discovered RDMA controllers 

  insert_all_tcp <target_ip4_addr[:port]> <local_ip4_addr> [<HostNQN> [<queueDepth>]] - connect to all discovered TCP controllers 

  list [<mode={0-3}> [<start> [<count>]]] - show all attached controllers/targets 

  remove <controllerId> - disconnect and remove a controller 

  remove_all [ControllerNQN] - disconnect and remove all controllers 

  status - query status and information for the driver

Examples:

  StarNVMeoF_Ctrl.exe -j list 3 -- list of existing controllers in JSON format 

  StarNVMeoF_Ctrl.exe discovery_tcp 10.0.0.1:4420 10.0.0.2 -- list of connected controllers 

  StarNVMeoF_Ctrl.exe -ptcp insert 10.0.0.1:4420 10.0.0.2 nqn.2020-02.com.sample.target:1 -- connect to a TCP controller 

  StarNVMeoF_Ctrl.exe -prdma remove_all -- disconnect and remove all connected RDMA controllers

Discovering targets

1. To discover the target, run the discovery command: StarNVMeoF_Ctrl.exe <discovery|discovery_tcp> <target_ip_addr:[port]> <local_ip_addr> by specifying the protocol, target host IP address and port number:

RDMA example : StarNVMeoF_Ctrl.exe discovery 172.16.10.10:4420 172.16.10.100

TCP example : StarNVMeoF_Ctrl.exe discovery_tcp 172.16.10.10:8009 172.16.10.100

Where:

<172.16.10.10:4420> — NVMe-oF target host IP and port;
<172.16.10.100> — initiator host IP.

 

Рисунок

Connecting targets

1. To connect the target, run the command: StarNVMeoF_Ctrl.exe <insert|insert_tcp> <target_ip_addr[:port]> <local_ip_addr> <SubNQN> <HostNQN> [<num_io_queues> <io_queue_depth> <numaNode> <first_core>]

RDMA example: StarNVMeoF_Ctrl.exe insert 172.16.10.10:4420 172.16.10.100 nqn.2008-08.com.starwindsoftware:NVMeofTarget nqn.2008-08.com.starwind:pve-hv1 128 128 1 0

TCP example: StarNVMeoF_Ctrl.exe insert_tcp 172.16.10.10:8009 172.16.10.100 nqn.2008-08.com.starwindsoftware:NVMeofTarget nqn.2008-08.com.starwind:pve-hv1 128 128 1 0

Where:

<172.16.10.10:4420 > — target host IP and port.

<172.16.10.10> — initiator host IP.

<nqn.2008-08.com.starwindsoftware:NVMeofTarget> — SubNQN of the target (may be copied from the discovery results screen).

<nqn.2008-08.com.starwind:pve-hv1> — local HostNQN.

<128> — quantity of connections to the target.

<128> — queue depth.

<1> — number of the numa node.

<0> — number of the initial core.

 

Рисунок

 

2. After the “insert” or “insert_tcp” command is executed, disk LUNs for the connected target devices should appear in the Disk Management.

 

Рисунок

Getting information about targets

1. To show the list of connected NVMe-oF controllers, run the “StarNVMeoF_Ctrl.exe list” command.

 

Рисунок

 

Disconnecting targets

1. To disconnect LUNs from the system, run the controller disconnection command:  StarNVMeoF_Ctrl.exe remove <controllerId>

Example: StarNVMeoF_Ctrl.exe remove 0
Where:

<1> — controller Id

Рисунок

 

NOTE: Make sure that LUNs are not used by other applications at the moment of disconnection, as removing LUNs with active file operations may lead to data corruption.

Using PowerShell

Discovering targets

1. To discover the target, run the discovery commandlet in Powershell: New-IscsiTargetPortal -TargetPortalAddress <target IP> -TargetPortalPortNumber <target port> -InitiatorPortalAddress <initiator IP> -InitiatorInstanceName <‘initiator controller‘> by specifying target host IP address and port number:

Example:

New-IscsiTargetPortal -TargetPortalAddress 172.16.10.10 -TargetPortalPortNumber 8009 -InitiatorPortalAddress 172.16.10.100 -InitiatorInstanceName ‘ROOT\SCSIADAPTER\0000_0’

Where:

<172.16.10.10> -TargetPortalAddress;

<8009> -InitiatorPortalAddress

<172.16.10.10> -InitiatorPortalAddress

<‘ROOT\SCSIADAPTER\0000_0’> -InitiatorInstanceName – StarWind NVMe over Fabrics Storage Controller

 

Рисунок

 

2. To get NVME targets name, run the commandlet Get-IscsiTarget:

Get-IscsiTarget

 

Рисунок

 

Connecting targets

1. To connect the target, run the commandlet: Connect-IscsiTarget -NodeAddress <NodeAddress>-IsPersistent $True

Example:

Connect-IscsiTarget -NodeAddress tcp:nqn.2016-06.io:volume-simple-nvmeof-target -IsPersistent $True

2.  To get the information about the sessions, run the command:

Get-iSCSISession | select *

Disconnecting targets

1. To disconnect the target, run the command: Disconnect-IscsiTarget -NodeAddress <NodeAddress>

Example:

Disconnect-IscsiTarget -NodeAddress tcp:nqn.2016-06.io:volume-simple-nvmeof-target

NOTE: Make sure that LUNs are not used by other applications at the moment of disconnection, as removing LUNs with active file operations may lead to data corruption.

Conclusion

The StarWind NVMe-oF Initiator installation guide provides a clear and structured approach to deploying NVMe over Fabrics in a Windows Server environment. By carefully following the outlined steps, users can establish high-performance storage connectivity, taking full advantage of NVMe technology’s low-latency and high-speed capabilities across a network fabric. This setup not only optimizes storage efficiency but also positions the server infrastructure for modern, scalable, and robust data management solutions.

Hey! Don’t want to tinker with configuring all the settings? Looking for a fast-track to VSAN deployment?
Dmytro Malynka
Dmytro Malynka StarWind Virtual SAN Product Manager
We've got you covered! First off, all trial and commercial StarWind customers are eligible for installation and configuration assistance services. StarWind engineers will help you spin up the PoC setup to properly evaluate the solution and will assist with the production deployment after the purchase. Secondly, once deployed, StarWind VSAN is exceptionally easy to use and maintain. Hard to believe? Wait no more and book a StarWind VSAN demo now to see it in action!