The Latest Gartner® Magic Quadrant™Hyperconverged Infrastructure Software
Hi yaroslav,yaroslav (staff) wrote: ↑Tue Jul 29, 2025 11:20 amHi,
Sadly there's no script for that. Let me please figure it out internally.
Code: Select all
param($addr="172.27.31.198", $port=3261, $user="root", $password="starwind",
$addr2="172.27.31.199", $port2=$port, $user2=$user, $password2=$password,
#common
$initMethod="syncfromfirst",
#$size=1024,
$sectorSize=512,
$failover=0,
$bmpType=1,
$bmpStrategy=0,
#primary node
$imagePath="/mnt/sdb1/volume1",
$imageName="test2",
$createImage=$false,
$storageName="imagefile1",
$targetAlias="test2",
$poolName="pool1",
$syncSessionCount=1,
$aluaOptimized=$true,
$cacheMode="none",
$cacheSize=0,
$syncInterface="#p2=172.16.20.231:3260,172.27.21.231:3260",
$hbInterface="#p2=172.16.10.231:3260,172.27.31.199:3260",
$createTarget=$false,
$bmpFolderPath="",
#secondary node
$imagePath2="/mnt/sdb1/volume1",
$imageName2="test2",
$createImage2=$true,
$storageName2="",
$targetAlias2="test2",
$poolName2="pool1",
$syncSessionCount2=1,
$aluaOptimized2=$false,
$cacheMode2=$cacheMode,
$cacheSize2=$cacheSize,
$syncInterface2="#p1=172.16.20.230:3260,172.27.21.230:3260",
$hbInterface2="#p1=172.16.10.230:3260,172.27.31.198:3260",
$createTarget2=$true,
$bmpFolderPath2=""
) Code: Select all
Request to 192.168.30.101 ( 192.168.30.101 ) : 3261
-
control ImageFile -CreateHeader:"Headers\vlab\vlab.swdsk" -pathDirHeaderBackup:"/mnt/md0/vol1" -file:"/mnt/md0/vol1\vlab.img" -Size:"0" -CacheMode:"none" -CacheSizeMB:"0" -BlockSize:"0" -psectorSize:"4096" -sectorSize:"512"
-
200 Failed: file already exists.Code: Select all
param($addr="192.168.30.101", $port=3261, $user="root", $password="starwind",
$addr2="192.168.30.201", $port2=$port, $user2=$user, $password2=$password,
$initMethod="syncfromfirst",
#$size=487930,
$sectorSize=512,
$failover=0,
$bmpType=1,
$bmpStrategy=0,
#primary node
$imagePath="/mnt/md0/vol1",
$imageName="vlab",
$createImage=$false,
$storageName="",
$targetAlias="vlab",
$poolName="pool1",
$syncSessionCount=1,
$aluaOptimized=$true,
$cacheMode="none",
$cacheSize=0,
$syncInterface="#p2=192.168.35.201:3260,192.168.40.201:3260",
$hbInterface="#p2=192.168.45.201:3260,192.168.30.201:3260",
$createTarget=$false,
$bmpFolderPath="",
#secondary node
$imagePath2="/mnt/md0/vol1",
$imageName2="vlab",
$createImage2=$true,
$storageName2="",
$targetAlias2="vlab",
$poolName2="pool1",
$syncSessionCount2=1,
$aluaOptimized2=$false,
$cacheMode2=$cacheMode,
$cacheSize2=$cacheSize,
$syncInterface2="#p1=192.168.35.101:3260,192.168.40.101:3260",
$hbInterface2="#p1=192.168.45.101:3260,192.168.30.101:3260",
$createTarget2=$true,
$bmpFolderPath2=""
)
Import-Module StarWindX
try
{
Enable-SWXLog -level SW_LOG_LEVEL_DEBUG
$server = New-SWServer -host $addr -port $port -user $user -password $password
$server.Connect()
$firstNode = new-Object Node
$firstNode.HostName = $addr
$firstNode.HostPort = $port
$firstNode.Login = $user
$firstNode.Password = $password
$firstNode.ImagePath = $imagePath
$firstNode.ImageName = $imageName
$firstNode.Size = $size
$firstNode.CreateImage = $createImage
$firstNode.StorageName = $storageName
$firstNode.TargetAlias = $targetAlias
$firstNode.AutoSynch = $autoSynch
$firstNode.SyncInterface = $syncInterface
$firstNode.HBInterface = $hbInterface
$firstNode.PoolName = $poolName
$firstNode.SyncSessionCount = $syncSessionCount
$firstNode.ALUAOptimized = $aluaOptimized
$firstNode.CacheMode = $cacheMode
$firstNode.CacheSize = $cacheSize
$firstNode.FailoverStrategy = $failover
$firstNode.CreateTarget = $createTarget
$firstNode.BitmapStoreType = $bmpType
$firstNode.BitmapStrategy = $bmpStrategy
$firstNode.BitmapFolderPath = $bmpFolderPath
#
# device sector size. Possible values: 512 or 4096(May be incompatible with some clients!) bytes.
#
$firstNode.SectorSize = $sectorSize
$secondNode = new-Object Node
$secondNode.HostName = $addr2
$secondNode.HostPort = $port2
$secondNode.Login = $user2
$secondNode.Password = $password2
$secondNode.ImagePath = $imagePath2
$secondNode.ImageName = $imageName2
$secondNode.CreateImage = $createImage2
$secondNode.StorageName = $storageName2
$secondNode.TargetAlias = $targetAlias2
$secondNode.AutoSynch = $autoSynch2
$secondNode.SyncInterface = $syncInterface2
$secondNode.HBInterface = $hbInterface2
$secondNode.SyncSessionCount = $syncSessionCount2
$secondNode.ALUAOptimized = $aluaOptimized2
$secondNode.CacheMode = $cacheMode2
$secondNode.CacheSize = $cacheSize2
$secondNode.FailoverStrategy = $failover
$secondNode.CreateTarget = $createTarget2
$secondNode.BitmapFolderPath = $bmpFolderPath2
$device = Add-HADevice -server $server -firstNode $firstNode -secondNode $secondNode -initMethod $initMethod
while ($device.SyncStatus -ne [SwHaSyncStatus]::SW_HA_SYNC_STATUS_SYNC)
{
$syncPercent = $device.GetPropertyValue("ha_synch_percent")
Write-Host "Synchronizing: $($syncPercent)%" -foreground yellow
Start-Sleep -m 2000
$device.Refresh()
}
}
catch
{
Write-Host $_ -foreground red
}
finally
{
$server.Disconnect()
}Code: Select all
Request to 192.168.30.101 ( 192.168.30.101 ) : 3261
-
control 0x0000000002E0E1C0 -InitSynchronize:"" -SynchronizationType:"1" -SynchronizerTargetName:"iqn.2008-08.com.starwindsoftware:192.168.30.101-vlab"
-
101 Failed: operation cannot be completed..Code: Select all
root@vSAN1:/opt/starwind/starwind-virtual-san/drive_c/starwind/headers# root@vSAN1:/opt/starwind/starwind-virtual-san/drive_c/starwind/headers# ls -lh
total 8.0K
drwxr-xr-x 2 root root 4.0K Jul 30 19:45 vl
drwxr-xr-x 2 root root 4.0K Jul 31 10:17 vlab
root@vSAN1:/opt/starwind/starwind-virtual-san/drive_c/starwind/headers# cd vlab/
root@vSAN1:/opt/starwind/starwind-virtual-san/drive_c/starwind/headers/vlab# ls -lh
total 8.0K
-rw-r--r-- 1 root root 4.0K Jul 31 10:17 vlab_HA.swdsk
-rw-r--r-- 1 root root 4.0K Jul 31 10:17 vlab.swdsk
root@vSAN1:/opt/starwind/starwind-virtual-san/drive_c/starwind/headers/vlab#Thanks yaroslav..yaroslav (staff) wrote: ↑Thu Jul 31, 2025 10:02 amHi,
Remove the HA headers on the underlying storage and under /headers.
Storagename is missing. Please run EnumDevices script and fill in the field.
Please review my script once again and rework yours.
Code: Select all
The replication partner is not synchronisedCode: Select all
Request to 192.168.30.201 ( 192.168.30.201 ) : 3261
-
add HAImage1 -OwnTargetName:"iqn.2008-08.com.starwindsoftware:192.168.30.201-vlab" -header:"Headers\vlab\vlab_HA.swdsk" -asyncmode:yes -readonly:no -buffering:no -reservation:no
-
110 .I'll check the Starwind.cfg and see what it has regarding HA..yaroslav (staff) wrote: ↑Thu Jul 31, 2025 12:53 pmIt looks like the StarWind.cfg file is referring to a broken Header (check StarWind.cfg for anything that points to HA). Try removing HA partner with the script and running AddHA Partner one.
Code: Select all
PS C:\Users\Administrator\Desktop> .\AddHaPartner.ps1
Method invocation failed because [System.__ComObject] does not contain a method named 'AddPartner'.Code: Select all
param($addr="192.168.30.101", $port=3261, $user="root", $password="starwind", $deviceName="imagefile1",
$addr2="192.168.30.201", $port2=$port, $user2=$user, $password2=$password,
#secondary node
$imagePath2="/mnt/md0/vol1",
$imageName2="vlab",
$createImage2=$true,
$targetAlias2="vlab",
$autoSynch2=$true,
$poolName2="pool1",
$syncSessionCount2=1,
$aluaOptimized2=$true,
$syncInterface2="#p1={0}:3260" -f $addr,
$hbInterface2="",
$bmpType=1,
$bmpStrategy=0,
$bmpFolderPath="",
$selfSyncInterface="#p1={0}:3260" -f $addr2,
$selfHbInterface=""
)
Import-Module StarWindX
try
{
Enable-SWXLog
$server = New-SWServer $addr $port $user $password
$server.Connect()
$device = Get-Device $server -name $deviceName
if( !$device )
{
Write-Host "Device not found" -foreground red
return
}
$node = new-Object Node
$node.HostName = $addr2
$node.HostPort = $port2
$node.Login = $user2
$node.Password = $password2
$node.ImagePath = $imagePath2
$node.ImageName = $imageName2
$node.CreateImage = $createImage2
$node.TargetAlias = $targetAlias2
$node.SyncInterface = $syncInterface2
$node.HBInterface = $hbInterface2
$node.AutoSynch = $autoSynch2
$node.SyncSessionCount = $syncSessionCount2
$node.ALUAOptimized = $aluaOptimized2
$node.PoolName = $poolName2
$node.BitmapStoreType = $bmpType
$node.BitmapStrategy = $bmpStrategy
$node.BitmapFolderPath = $bmpFolderPath
Add-HAPartner $device $node $selfSyncInterface $selfHbInterface $selfBmpFolderPath
}
catch
{
Write-Host $_ -foreground red
}
finally
{
$server.Disconnect()
}
Code: Select all
HAImage1Code: Select all
<device name="HAImage1" OwnTargetName="iqn.2008-08.com.starwindsoftware:192.168.30.101-vlab" header="Headers\vlab\vlab_HA.swdsk" PoolName="pool1" asyncmode="yes" readonly="no" buffering="no" reservation="no"/>
<target name="iqn.2008-08.com.starwindsoftware:192.168.30.101-vlab" devices="HAImage1" alias="vlab"/>
<!-- CHAP authentication
root@vSAN1:/opt/starwind/starwind-virtual-san/drive_c/starwind# cat StarWind.cfg | grep vlab
<device name="imagefile1" header="Headers\vlab\vlab.swdsk" node="0"/>
<device name="HAImage1" OwnTargetName="iqn.2008-08.com.starwindsoftware:192.168.30.101-vlab" header="Headers\vlab\vlab_HA.swdsk" PoolName="pool1" asyncmode="yes" readonly="no" buffering="no" reservation="no"/>
<target name="iqn.2008-08.com.starwindsoftware:192.168.30.101-vlab" devices="HAImage1" alias="vlab"/>Code: Select all
PS C:\Users\Administrator\Desktop> .\enumDevicesTargets.ps1
Target:
Name : iqn.2008-08.com.starwindsoftware:192.168.30.201-vlab
Id : 0x00000000011D0E00
Alias : vlab
IsClustered : True
Devices :