I tested my environment during the 30 day trial and really liked it but now I want to make it work with the free version. I started over and followed these walk-through from Starwind Creating HA Device with StarWind Virtual SAN Free and StarWind Virtual SAN Hyper-Converged 3 Nodes Scenario with Hyper-V Cluster

I have 2 devices (Storage and witness) on 3 nodes, all my targets were created with Starwind's scripts and I was able to figure out they were synchronized.

One of my problems is that I cannot add more then one path to the target. I can configure two of my nodes to use the 10.0.0.0 adresses but not adresses 10.0.0.128 and the third node can use 10.0.0.128 but not 10.0.0.0

The other problem is if I continue and follow the Hyper-converged link, under "Multipath Configuration" it says to configure all devices for MPIO but my devices don't have any connections??

I tried it with only one path when I had the trial and it worked without this kind of problem so I know it's a misconfiguration somewhere but I cannot seem to find it.

The scripts I used :

  • CreateHA (created the devices)
  • enumDevicesTargets (confirm the devices and targets are there)
  • haSyncPriority (the name says it all)
  • SyncHaDeviceAdvanced (check if they are synchronized, stuff to do if not)

I redid the installation of starwind to see if I made a mistake but the problem is still there.

Here is the "CreateHA" config :

Import-Module StarWindX

try
{
    $server = New-SWServer -host 127.0.0.1 -port 3261 -user root -password starwind

    $server.Connect()

    $firstNode = new-Object Node

    $firstNode.HostName = "127.0.0.1"
    $firstNode.ImagePath = "My computer\S\Storage"
    $firstNode.ImageName = "Storage"
    $firstNode.Size = 1536000
    $firstNode.CreateImage = $true
    $firstNode.TargetAlias = "Storage"
    $firstNode.AutoSynch = $true
    $firstNode.SyncInterface = "#p2=10.0.0.2:3260;#p3=10.0.0.3:3260"
    $firstNode.HBInterface = "#p2=10.0.0.130:3260;#p3=10.0.0.131:3260"
    $firstNode.PoolName = ""
    $firstNode.SyncSessionCount = 1
    $firstNode.ALUAOptimized = $true
    $firstNode.SectorSize = 4096

    $secondNode = new-Object Node

    $secondNode.HostName = "192.168.0.42"
    $secondNode.HostPort = "3261"
    $secondNode.Login = "root"
    $secondNode.Password = "starwind"
    $secondNode.ImagePath = "My computer\S\Storage"
    $secondNode.ImageName = "Storage"
    $secondNode.Size = 1536000
    $secondNode.CreateImage = $true
    $secondNode.TargetAlias = "Storage"
    $secondNode.AutoSynch = $true
    $secondNode.SyncInterface = "#p1=10.0.0.1:3260;#p3=10.0.0.3:3260"
    $secondNode.HBInterface = "#p1=10.0.0.129:3260;#p3=10.0.0.131:3260"
    $secondNode.SyncSessionCount = 1
    $secondNode.ALUAOptimized = $true

    $thirdNode = new-Object Node

    $thirdNode.HostName = "192.168.0.43"
    $thirdNode.HostPort = "3261"
    $thirdNode.Login = "root"
    $thirdNode.Password = "starwind"
    $thirdNode.ImagePath = "My computer\S\Storage"
    $thirdNode.ImageName = "Storage"
    $thirdNode.Size = 1536000
    $thirdNode.CreateImage = $true
    $thirdNode.TargetAlias = "Storage"
    $thirdNode.AutoSynch = $true
    $thirdNode.SyncInterface = "#p1=10.0.0.1:3260;#p2=10.0.0.2:3260"
    $thirdNode.HBInterface = "#p1=10.0.0.129:3260;#p2=10.0.0.130:3260"
    $thirdNode.SyncSessionCount = 1
    $thirdNode.ALUAOptimized = $true

    $device = Add-HADevice -server $server -firstNode $firstNode -secondNode $secondNode -thirdNode $thirdNode -initMethod "Clear"

    $syncState = $device.GetPropertyValue("ha_synch_status")

    while ($syncState -ne "1")
    {
        #
        # Refresh device info
        #
        $device.Refresh()

        $syncState = $device.GetPropertyValue("ha_synch_status")
        $syncPercent = $device.GetPropertyValue("ha_synch_percent")

        Start-Sleep -m 2000

        Write-Host "Synchronizing: $($syncPercent)%" -foreground yellow
    }
}
catch
{
    Write-Host $_ -foreground red
}
finally
{
    $server.Disconnect()
}

First off, get rid of NIC teams for your storage and synchronization networks. ISCSI networks leverage MPIO, there is no need for trunking, teaming, bonding, etc. Also, don't forget to enable MPIO in Add Roles and Features wizard.

Assuming you want to use the 10.0.0.x networks for iSCSI traffic, your ISCSI Initiator configuration should look like this:

Node 1 used as an example

ISCSI Discovery portals:

127.0.0.1 (Initiator IP - Default)

10.0.0.130 (Initiator IP - local IP of ISCSI network between Node1 and Node2)

10.0.0.131 (Initiator IP - local IP of ISCSI network between Node1 and Node3)

Then you will need to connect each target under "Targets" tab.

Local targets must be connected through 127.0.0.1 (loopback). Targets on partner nodes 2 and 3 must be connected via corresponding iSCSI networks.

The detailed guide on how to connect each target can be found on their website.

By the way, the guide you have mentioned looks outdated. They have a more recent one: https://www.starwindsoftware.com/resource-library/starwind-virtual-san-hyper-converged-3-nodes-scenario-with-hyper-v-cluster

After discovering portals and connecting each target on all three nodes, you should properly configure MPIO paths. Just follow the rest of the guidance to achieve this.

P.S.: 3-way "active-active-active" replication configuration is the most complex one so prepare a big mug of coffee, pay maximum attention and carefully follow each step in their guide.


After talking to support the problem was the version of Starwind Free used. After going to an older version the problem was solved. The newest Starwind Free does not have this problem anymore (as far as I know).