StarWind free vsan - cannot sync two HA nodes

Software-based VM-centric and flash-friendly VM storage + free version

Moderators: anton (staff), art (staff), Max (staff), Anatoly (staff)

Post Reply
Ev3nt
Posts: 2
Joined: Tue Nov 15, 2022 5:19 pm

Tue Nov 15, 2022 5:32 pm

Greetings to All,

I've tried to install simple two node HA cluster, but the initial sync is stuck at 0%.
The setup is very simple and just for test purposes - two vmware workstation VMs with three cards.
The first is for general management, the second is dedicated for starwind heartbeat and the third for sync (also starwind).

My 'CreateHA_2' powershell script looks that way:

Code: Select all

param($addr="10.10.30.9", $port=3261, $user="root", $password="starwind",
	$addr2="10.10.30.10", $port2=$port, $user2=$user, $password2=$password,
#common
	$initMethod="Clear",
	$size=2048,
	$sectorSize=512,
	$failover=0,
#primary node
	$imagePath="C:\SharedStorage",
	$imageName="masterImg21",
	$createImage=$true,
	$storageName="",
	$targetAlias="targetha21",
	$autoSynch=$true,
	$poolName="pool1",
	$syncSessionCount=1,
	$aluaOptimized=$true,
	$cacheMode="wb",
	$cacheSize=128,
	$syncInterface="#p2=10.10.30.101:3260" -f $addr2,
	$hbInterface="#p2=10.10.30.100:3260,10.10.30.9:3260",
	$createTarget=$true,
#secondary node
	$imagePath2="C:\SharedStorage",
	$imageName2="partnerImg22",
	$createImage2=$true,
	$storageName2="",
	$targetAlias2="partnerha22",
	$autoSynch2=$true,
	$poolName2="pool1",
	$syncSessionCount2=1,
	$aluaOptimized2=$false,
	$cacheMode2=$cacheMode,
	$cacheSize2=$cacheSize,
	$syncInterface2="#p1=10.10.30.103:3260" -f $addr,
	$hbInterface2="#p1=10.10.30.102:3260,10.10.30.10:3260",
	$createTarget2=$true
	)
	
Import-Module StarWindX

try
{
	Enable-SWXLog

	$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
    
	#
	# 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
        
	$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()
}
Here is the StarWind.cfg as well:

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="config.xsd" version="8.1">
  <parameters>
    <logging>
      <!--LogLevel values: 0-Disabled, 1-Errors, 2-Warnings, 3-all messages   -->
      <LogLevel value="1"/>
      <!--Don't change the LogMask if you have no idea what does it mean!-->
      <LogMask value="0xbfffffffffffffff"/>
      <!--Log rotate period (in seconds) -->
      <!--<LogRotatePeriod value="30"/>-->
      <!--Log rotate size (in MBs) -->
      <LogRotateSize value="100"/>
      <!--Log rotate - number of log files to keep (0 - keep all) -->
      <LogRotateKeepLastFiles value="20"/>
    </logging>
    <updatetracker>
      <!--check for updates every n days, if value=0 then update tracker is disabled -->
      <UpdatePeriod value="7"/>
      <!--Update host -->
      <UpdateHost value="www.starwindsoftware.com"/>
      <!--Page on update host -->
      <UpdatePage value="/updatetracker/index.php"/>
      <!--Port used for access to the host -->
      <UpdatePort value="80"/>
      <!--Copy Id -->
      <!--Last update request date -->
      <UpdateCopyId value="6648DBCD-7FC6-4013-9357-5F4119DF75EE"/>
      <UpdateLastRequest value="20221115"/>
    </updatetracker>
    <wuservicecontrol>
      <!--WU service control feature is enabled-->
      <WUSCEnabled value="yes"/>
      <!--WU service was disabled by starwind service-->
      <SrvWasDisabled value="no"/>
      <!--WU service start type that must be restored-->
      <SrvRestoreStartType value="2"/>
    </wuservicecontrol>
    <hardwareacceleration>
      <!--VAAI extended copy feature is enabled-->
      <VaaiExCopyEnabled value="yes"/>
      <!--VAAI compare and write feature is enabled-->
      <VaaiCawEnabled value="yes"/>
      <!--VAAI write same feature is enabled-->
      <VaaiWriteSameEnabled value="yes"/>
      <!--ODX feature is enabled-->
      <OdxEnabled value="no"/>
      <!--ODX optimal ROD size in MBs-->
      <OdxOptimalRodSizeMB value="64"/>
      <!--ODX maximum ROD size in MBs-->
      <OdxMaximumRodSizeMB value="256"/>
      <!--ODX ROD token default timeout in seconds-->
      <OdxRodTokenDefaultTimeoutSec value="10"/>
      <!--ODX ROD token maximum timeout in seconds-->
      <OdxRodTokenMaximumTimeoutSec value="30"/>
    </hardwareacceleration>
    <connections>
      <!--Port number for iSCSI connections (default 3260)-->
      <Port value="3260"/>
      <!--Interface to listen to. "0.0.0.0" corresponds to "listen to all interfaces".-->
      <Interface value="0.0.0.0"/>
      <!-- Interface to listen to filtering by MAC-address. Default value is empty string.-->
      <!-- It can be full MAC-address like "10-10-10-10-10-10" or partial template like "10-10-10*" -->
      <!-- <InterfaceByMAC value=""/> -->
      <!--Port number for Control connections (default 3261)-->
      <!-- <CtlPort value="3261"/> -->
      <!--Interface to listen to Control connections. "0.0.0.0" corresponds to "listen to all interfaces".-->
      <!-- <CtlInterface value="0.0.0.0"/> -->
      <!-- StarWind location protocol -->
      <BCastEnable value="yes"/>
      <BCastInterface value="0.0.0.0"/>
      <BCastPort value="3261"/>
    </connections>
    <authentication>
      <!--Username and password used for the control connection.-->
      <Login value="root"/>
      <Password value="##evVRsIJtRmAEEd2sCslZDg=="/>
      <!--CHAP authentication for control connections-->
      <!--
            <CtlAuthMode value="chap"/>
            <CtlAuthServerName value="srv"/>
            <CtlAuthServerSecret value="123"/>
            <CtlAuthClientName value="user"/>
            <CtlAuthClientSecret value="345"/>
            -->
    </authentication>
    <options>
      <!--Minimal 'maximum transfer length' should be supported by all SPTI devices-->
      <MinBufferSize value="65536"/>
      <!--Minimal 'alignment mask' for SPTI devices - all buffers passed to SPTI will 
            be aligned according to this mask at least. Sure if an adapter requests 
                bigger alignment target will supply correctly alignmed buffers.  -->
      <AlignmentMask value="0x0000"/>
      <!--Length of iSCSI queue. (min 1, max 1024)-->
      <MaxPendingRequests value="256"/>
      <!--Global target id name-->
      <!--<DefTargetName value="iqn.2008-08.com.starwindsoftware:$(host).$(symid)"/>-->
      <!--Setting value of AllowOnlyRecordableCd to 'yes' forces the target to filter out all but recordable CD/DVD.-->
      <!--<AllowOnlyRecordableCd value="no"/> -->
      <!--Auto Export some of the found Devices-->
      <!--<AutoExportDevices value="spti:disk,spti:cd/dvd"/>-->
      <!--Devices are autoexported as read/write by default.
            Set value of AutoConfigMode to "ro" to allow only readonly access to all the devices-->
      <!--<AutoExportMode value="ro"/>-->
      <!--Devices are autoexported with share=rw by default.
            Value may be '', 'r', 'w' or 'rw'. 'r' means that device will be 
            shared for reading. 'w' - for writing. Default is ''.-->
      <!--<AutoExportShare value=""/>-->
      <!--Address of an iSNS server to register targets with-->
      <!--<iSnsServer value="127.0.0.1:3205"/>-->
      <!--Time in seconds between TCP keepalive packets to the initiator
                By default, this value = 5 seconds. Use 0 to disable it.-->
      <!--<TcpKeepAlivePeriod value="0"/>-->
      <!-- TCP Receive Timeout on socket, in seconds. 
            Value 0 - timeout not set. 
            Value > 0 - timeout applied during all lifetime of connection. 
            Value < 0 - timeout applied to period of connection establishing and iSCSI negotiation. -->
      <!--<TcpRecvTimeout value="-5"/> -->
      <!--Time in seconds between iSCSI pings from the target to the initiator
                By default, this value = 5 seconds. Use 0 to disable pings.-->
      <iScsiPingPeriod value="0"/>
      <!-- Allow listing of interfaces in response to SendTargets=All -->
      <iScsiDiscoveryListInterfaces value="0"/>
      <!--Force set of default parameters for iSCSI sessions-->
      <!--<iScsiInitialR2T value="0"/>-->
      <!--<iScsiImmediateData value="1"/>-->
      <!--<iScsiDefaultTime2Wait value="0"/>-->
      <!--<iScsiFirstBurstLength value="65536"/>-->
      <!--<iScsiMaxBurstLength value="262144"/>-->
      <!--<iScsiMaxReceiveDataSegmentLength value="65536"/>-->
      <!-- <iScsiStrictProtocolChecking value="yes"/>-->
      <!--Default server node to create devices, targets and run workers-->
      <!--<ServerDefaultNode value="0"/>-->
      <!--Number of server nodes per NUMA node (1 - by default)-->
      <!--ServerNodesPerNumaNode value="1"/>-->
      <!--Number of I/O worker threads per server node (by default=0 - that means 1 worker per active core of the server node)-->
      <ServerIoWorkersCount value="0"/>
      <!--Number of active I/O worker threads per server node (by default=0 - that means 1 worker per active core of the server node)-->
      <ServerIoWorkersConcurency value="0"/>
      <!--Priority of the I/O worker threads (by default=0 - that means normal priority)-->
      <!--<ServerIoWorkersPriority value="0"/>-->
      <!--Max number of I/O completion records to get at once in I/O worker threads (by default=1)-->
      <!--<ServerIoWorkersNumberOfEntries value="1"/>-->
      <!--Assign an ideal core for each I/O worker thread (by default=0 - that means we let the system to schedult the threads to any core)-->
      <!--<ServerUseIdealProcForThreads value="0"/>-->
      <!--Set the affinity of the I/O worker threads to odd cores - for better performance on HyperThreaded processors (default=1)-->
      <!--<ServerUseOnlyOddCoresForThreads value="1"/>-->
      <!--Increase the process' min working set to minimize page faults-->
      <!--<WorkingSetAddMBs value="64"/>-->
      <iSerListen value=""/>
      <!--List of interfaces for iSER protocol.-->
      <LocalizationDir value="Localizations"/>
      <DefaultStoragePoolPath value="My Computer\C\SharedStorage\"/>
    </options>
    <ExperimentalFeatures>
      <ExperimentalLSFS value="no"/>
    </ExperimentalFeatures>
    <cluster>
      <!-- Settings for scale-out cluster. -->
      <!-- Name of the cluster -->
      <ClusterName value=""/>
      <!-- Uniqie identifier of the cluster -->
      <ClusterGUID value=""/>
      <!-- Version of cluster settings. Can be used to resolve configuration conflicts between nodes -->
      <ClusterSettingsVersion value="0"/>
      <!-- List of nodes in cluster. List contains comma-separated address:port values. 
                For example, "192.168.1.1:3261,192.168.1.2:3261,192.168.1.3:3261,192.168.1.4:3261"
            -->
      <ClusterNodes value=""/>
      <!-- List of synchronization networks for the cluster. List contains comma-separated address/mask values. 
                 For example, "192.168.1.1/23,10.10.10.0/24,10.10.20.0/24"
            -->
      <ClusterSync value=""/>
      <!-- List of heartbeat networks for the cluster. List contains comma-separated address/mask values. 
                 For example, "10.30.10.0/24,10.40.40.0/24"
            -->
      <ClusterHeartbeat value=""/>
    </cluster>
    <notification>
      <DataBaseRoot value=".\NotifyDB"/>
      <DBRotationDays value="5"/>
      <DBFileSizeDays value="1"/>
    </notification>
    <PerfromanceMonitor>
      <PerformanceMonitorEnabled value="yes"/>
      <PerformanceRoot value=".\PerformanceDB"/>
    </PerfromanceMonitor>
    <FreeSpaceMonitor>
      <FSMThresholdPercent value="30"/>
      <FSMCheckPeriodSeconds value="30"/>
      <FSMEnabled value="yes"/>
    </FreeSpaceMonitor>
  </parameters>
  <filebrowser>
    <imagedir path="*" flags="cdmfv" alias="My Computer" extensions="*"/>
    <imagedir path="*" flags="cdmfv" alias="Image Files" extensions="img,dat"/>
    <imagedir path="*" flags="cmdfv" alias="VTLs" extensions="swdsk"/>
    <imagedir path="*" flags="cmdfv" alias="VTapes" extensions="VTape"/>
    <imagedir path="*" flags="cdmfv" alias="Event Logs" extensions="txt,log"/>
    <imagedir path="*" flags="cdmfv" alias="Headers" extensions="swdsk"/>
  </filebrowser>
  <!-- Free space monitor works with thin-provisioned devices to inform administrator 
    about potential lack of free disk space for thin-provisioned virtual disk to grow.
    It works with Deduplication and IBV devices now -->
  <reactions>
    <!-- Event notification settings.
	type - type of notification 
		"eventlog" - add event record to Windows Applications Event Log;
		"textfile" - add line to  text file log;
		"smtp" - send e-mail message using basic SMTP protocol

  	maskSeverity - message level (1 - Information, 2 - Warnings, 3 - Errors), may be bitwise OR of several levels
	maskCode - event code (check Windows event log for code of exact event). -1 - do not check for event code.

	type "eventlog":
	<reaction maskSeverity="14" maskCode="-1" type="eventlog"/>
	
	type "textfile":
	<reaction maskSeverity="14" maskCode="254" type="textfile" filename="Event Logs\D\tst.txt" separator=""/>
	fileaname sets text log file name using alias from "filebrowser" list
	separator value - when set is used to devide list of message parameters after the message line. May be useful for scripts that parse the text log. If empty or not set - list of parameters is not added to message line.
	
	type "smpt"	  
	<reaction maskSeverity="8" maskCode="254" type="smtp" smtpHost="a.com" smtpPort="25" recepient="aa@a" mailFrom="aa" subj="Event notification"/>
	smtpHost - address of SMTP server
	smtpPort - port number for SMTP server
	recepient - "send to" address 
	mailFrom - "mail from" address
	subj - message subject line
	
  -->
    <reaction maskSeverity="14" maskCode="-1" type="eventlog"/>
  </reactions>
  <plugins>
    <!--Plugins configuration.
        Parameters (mandatory):
        "module" attribute  - plugin dll
        symlink  - device name prefix for all devices managed by the plugin
        type     - type of devices managed by the plugin
        (optional):
         "loglevel value="0-3" - override log level for a plugin (by default global LogLevel value is used)-->
    <!--* | DD Disk plugin | * -->
    <plugin module="DDDisk.dll">
      <symlink value="DDDisk"/>
      <type value="Deduplicated disk"/>
      <imagedir path="*" flags="cmdfv" alias="My Computer" extensions="spbitmap"/>
      <imagedir path="*" flags="cmdfv" alias="Metadata" extensions="spmetadata"/>
      <imagedir path="*" flags="cmdfv" alias="Data" extensions="spdata"/>
      <volumes value="no"/>
    </plugin>
    <!--* | DD EX Disk plugin | * -->
    <plugin module="DDDiskEx.dll">
      <symlink value="DDDiskEx"/>
      <type value="Deduplicated disk Ex"/>
      <imagedir path="*" flags="cmdfv" alias="My Computer" extensions="spdata"/>
      <imagedir path="*" flags="cmdfv" alias="Metadata" extensions="spmetadata"/>
      <volumes value="no"/>
    </plugin>
    <!--* | LSFS Disk plugin | * -->
    <plugin module="lsfs.dll">
      <symlink value="lsfs"/>
      <type value="LSFS Disk"/>
      <imagedir path="*" flags="cmdfv" alias="My Computer" extensions="spsp,swdsk"/>
      <volumes value="no"/>
      <CacheFlags value="131080"/>
      <L2CacheFlags value="131080"/>
    </plugin>
    <!--Ram Disk plugin-->
    <plugin module="RamDisk.dll">
      <symlink value="RamDrive"/>
      <type value="RAM disk"/>
    </plugin>
    <!--
        ImageFile-specific parameters (mandatory):
         imagedir  - image files directory. several "imagedir"
         elements can be set. "imagedir" must contain following attributes: 
         "path" - directory path (* - all drives allowed)
         "flags" - directory access rights (c - create images, d - delete images, f - create directories, v - view subdirectories, m - mount images, p - mount point)
         "alias" - directory alias
         "extensions" - comma separated extension list. only files with these extensions can be viewed  
         "comment" - (optional) comment 
         optional:
          volumes value="no|yes" - allows browsing and using of hard disk RAW partitions-->
    <plugin module="ImageFile.dll">
      <symlink value="ImageFile"/>
      <type value="Image file"/>
      <imagedir path="*" flags="cmdfv" alias="My Computer" extensions="img,swdsk"/>
      <volumes value="no"/>
      <QueueFlags value="0"/>
      <QueueWorkersCount value="0"/>
      <QueueWorkersActive value="0"/>
      <CacheFlags value="0"/>
      <L2CacheFlags value="0"/>
      <!--By default, this value = 3 seconds. Use 0 to disable notification.-->
      <ReqExecTimeLogWarningLimitInSec value="3"/>
    </plugin>
    <!--

        VirtualDVD-specific parameters (mandatory):
        imagedir  - image files directory. several "imagedir"
         elements can be set. "imagedir" must contain following attributes: 
         "path" - directory path (* - all drives allowed)
         "flags" - directory access rights ( v - view subdirectories, m - mount images)
         "alias" - directory alias
         "extensions" - comma separated extension list. only files with these extensions can be viewed  
         "comment" - (optional) comment 
         optional:
         share - sharing option flags. Value may be '', 'r', 'w' or 'rw'. 'r' means that device will be 
            shared for reading. 'w' - for writing. Default is ''.   
        sessions - number of simultaneous iSCSI session allowed for this device. Default is 1.-->
    <plugin module="VirtualDvd.dll">
      <symlink value="VirtualDvd"/>
      <type value="Virtual DVD"/>
      <imagedir path="*" flags="mv" alias="My Computer" extensions="mds,iso"/>
    </plugin>
    <!--
        IBVolume-specific parameters (mandatory):
         imagedir  - image files directory. several "imagedir"
         elements can be set. "imagedir" must contain following attributes: 
         "path" - directory path (* - all drives allowed)
         "flags" - directory access rights (c - create images, d - delete images, f - create directories, v - view subdirectories, m - mount images)
         "alias" - directory alias
         "extensions" - comma separated extension list. only files with these extensions can be viewed  
         "comment" - (optional) comment 
         optional:
          volumes value="no|yes" - allows browsing and using of hard disk RAW partitions-->
    <plugin module="IBVolume.dll">
      <symlink value="IBV"/>
      <type value="IBV"/>
      <imagedir path="*" flags="cdmfv" alias="My Computer" extensions="ibv"/>
      <imagedir path="*" flags="dmfv" alias="Snapshots" extensions="ibvss"/>
      <imagedir path="*" flags="v" alias="Database" extensions="ibvdb"/>
      <imagedir path="*" flags="cv" alias="Image Files" extensions="img,dat"/>
    </plugin>
    <!--
        Mirror-specific parameters (mandatory):
         imagedir  - image files directory. several "imagedir"
         elements can be set. "imagedir" must contain following attributes: 
         "path" - directory path (* - all drives allowed)
         "flags" - directory access rights (c - create images, d - delete images, f - create directories, v - view subdirectories, m - mount images)
         "alias" - directory alias
         "extensions" - comma separated extension list. only files with these extensions can be viewed  
         "comment" - (optional) comment 
         optional:
          volumes value="no|yes" - allows browsing and using of hard disk RAW partitions
        -->
    <plugin module="Mirror.dll">
      <symlink value="Mirror"/>
      <type value="Mirror"/>
      <imagedir path="*" flags="cdmfv" alias="Mirror Volumes" extensions="mir"/>
      <imagedir path="*" flags="cdmfv" alias="Image Files" extensions="img,dat"/>
    </plugin>
    <plugin module="DiskBridge.dll">
      <symlink value="DiskBridge"/>
      <type value="DiskBridge"/>
    </plugin>
    <plugin module="VirtualTape.dll">
      <symlink value="VirtualTape"/>
      <type value="Virtual tape"/>
      <imagedir path="*" flags="cmdfv" alias="My Computer" extensions="vtl"/>
      <volumes value="no"/>
      <LogLevel value="1"/>
      <!--
            <VendorId value="QUANTUM "/>
            <ProductId value="SuperDLT1       "/>
            <RevisionLevel value="2424"/>
            -->
    </plugin>
    <!-- 
        HA-specific parameters:
            transport : sync-channel transport. Can be one of the next values: 
            "msinitiator" - system transport, 
            "internal" - plugin internal transport
        "auto" - automatic transport selection
        -->
    <plugin module="HAImage.dll">
      <symlink value="HAImage"/>
      <type value="HA Image"/>
      <imagedir path="*" flags="cmdfv" alias="My Computer" extensions="img,swdsk,swcbt"/>
      <imagedir path="*" flags="cdmfv" alias="Headers" extensions="swdsk"/>
      <imagedir path="Device Headers" flags="cdmfv" alias="DefaultHeaderPath" extensions="swdsk"/>
      <transport value="auto"/>
      <rpl_threshold value="4"/>
      <!--Node shutdown type can be close_clients_conn or alua_unavalable_state -->
      <node_shutdown_type value="close_clients_conn"/>
      <!--Maximum synchronization queue size.-->
      <MaxSyncQueueSize size="16"/>
      <!--If underlying storage of HA device suffers from performance degradation then this value(minutes) defines period for automatic synchronization attempts.
          By default, this value = 30 minutes. Use 0 to disable automatic synchronization for device with performance degradation.-->
      <!--<AutoSyncPeriodForStorPerfDegInMin value="0"/> -->
      <!--Storage performance degradation time limit in milliseconds. 
          By default, this value = 7000 milliseconds.-->
      <StorPerfDegTimeLimitMs value="7000"/>
      <!--Period of time to keep information about storage performance degradation events in minutes. 
          By default, this value = 3 minutes.-->
      <StorPerfDegDetectPeriodMin value="3"/>
      <!--If request execution time is more than this value then warning notification will be generated in the events journal.
          By default, this value = 10 seconds. Use 0 to disable notification.-->
      <ReqExecTimeWarningLimitInSec value="10"/>
      <!--By default, this value = 10 seconds.-->
      <iScsiGenCmdSendCmdTimeoutInSec value="10"/>
      <!--By default, this value = 5 seconds.-->
      <iScsiPingCmdSendCmdTimeoutInSec value="5"/>
      <!--By default, this value = 1 seconds.-->
      <iScsiPingCmdSendCmdPeriodInSec value="1"/>
      <!--By default, this value = 5 second.-->
      <iScsiConnectRetryPeriodInSec value="5"/>
      <!--By default, this value = 1 second.-->
      <iScsiDisconnectRetryPeriodInSec value="1"/>
      <!--By default, this value = 10 second.-->
      <UnderlyingStorageTimeoutInSec value="10"/>
    </plugin>
    <plugin module="LWC.dll">
      <symlink value="LWC"/>
      <type value="LWC"/>
      <imagedir path="*" flags="cmdfv" alias="My Computer" extensions="swdsk,swcbt,swcbm"/>
      <imagedir path="*" flags="cdmfv" alias="Headers" extensions="swdsk"/>
      <imagedir path="Device Headers" flags="cdmfv" alias="DefaultHeaderPath" extensions="swdsk"/>
      <transport value="auto"/>
    </plugin>
    <!--VTL plugin-->
    <plugin module="VTL.dll">
      <symlink value="VTL"/>
      <type value="VTL"/>
      <LogLevel value="1"/>
      <!-- replicator values - 3 S3, 4 BB, 8 SFT, 16 Azure, 32 S3Like, 64 Wasabi -->
      <!-- replicator value="23" S3+BB+Azure -->
      <replicator value="119"/>
      <closedatafiles value="yes"/>
      <imagedir path="*" flags="cmdfv" alias="My Computer" extensions="swdsk"/>
      <imagedir path="*" flags="cmdfv" alias="VTapes" extensions="VTape"/>
      <imagedir path="VTL\" flags="cmdfv" alias="Patterns" extensions="VTLP"/>
    </plugin>
    <!--System Manager plugin-->
    <plugin module="SysMan.dll">
      <symlink value="SysMan"/>
      <type value="System Manager"/>
      <deduplicationmanager value="no"/>
      <deploymenttasks value="no"/>
      <LogLevel value="1"/>
    </plugin>
    <!--Azure Manager plugin-->
    <plugin module="Azure.dll">
      <symlink value="Azure"/>
      <type value="Azure Manager"/>
      <LogLevel value="3"/>
    </plugin>
    <plugin module="NVMfTarget.dll">
      <symlink value="NVMfTarget"/>
      <type value="NVMf Target"/>
      <imagedir path="*" flags="cmdfv" alias="My Computer" extensions="img,conf"/>
      <volumes value="no"/>
    </plugin>
  </plugins>
  <devices>
    <!-- Common device parameters:
          reservation="yes|[no]" - allows emulation of SCSI persistent reservation in the server
        -->
    <!-- SPTI-specific device parameters (optional)
        timeout="nnn"  - SCSI command execution timeout (in seconds). Default is 108000 (30 hours).#  
        share="rw|r" - to allow multiple initiators to access the device (shared mode)
        sessions="nnn" - set maximum number of initiators allowed to mount the device in shared mode
        readonly="no|yes" - to export hard drives in readonly mode-->
    <!-- Hard drive accessible through SPTI -->
    <!--<device name="\\.\Physicaldrive0"/> -->
    <!-- CD-ROM accessible through SPTI -->
    <!--<device name="\\.\F:" timeout="256" share="rw" sessions="8" state="1"/> -->
    <!-- ImageFile device parameters:
          file  - image files name. This name is relative to 'imagedir'. The file should exists. It can be created by means of 'mksparse' utility.
          header - if not 0 the plugin will not use given amount of bytes in the beginning of the file. This value should be sector aligned.
          asyncmode="no|yes" - if 'yes' the image is opened in asynchronous mode (you can benefit from this on stripped volumes)
          clustered="no|yes" - if 'yes' the image is opened in shared mode and allows several iSCSI initiators to be connected to it
          CacheMode="wt|wb|none" - cache mode, optional parameter. 
                                If parameter is omitted or has value 'none' - cache is not used,
                                'wt' - write-through caching mode,
                                'wb' - write-back caching.
          CacheSizeMB - optional, cache size in megabytes. 
          CacheBlockExpiryPeriodMS - optional, cache block expiry period in milliseconds.
        -->
    <!--<device name="ImageFile0" file="image.img" asyncmode="yes"/>
        <device name="ImageFile1" file="\\.\X:" header="65536"/> -->
    <!-- DiskBridge device caching parameters:
          CacheMode="wt|wb|none" - cache mode, optional parameter. 
                                If paramter is omitted or has value 'none' - cache is not used,
                                'wt' - write-through caching mode,
                                'wb' - write-back caching.
          CacheSizeMB - optional, cache size in megabytes. 
          CacheBlockExpiryPeriodMS - optional, cache block expiry period in milliseconds.
        -->
    <!-- RAM disk device parameters:
          size   - size of RAM disk to create (in MB).
          format - if 'yes' created disk will be formatted as FAT16 partition.
          useawe="no|yes" - allows creating of huge ram drives (>1GB) -->
    <!--<device name="RamDrive0" size="16" format="no"/>-->
    <!-- Virtual DVD device parameters:
          file - image (iso or mds) file name.
          type - 'iso' or 'mds' depending on type of the image. -->
    <!--<device name="VirtualDvd0" file="My Computer\D\temp\iwin2k.iso" type="iso"/>-->
    <!-- IBVolume device parameters:
           file   - image files name. This name is relative to 'imagedir'. The file should exists. 
                      It can be created by means of 'MirrorCtl.exe' utility.
           clustered="no|yes" - if 'yes' the image is opened in shared mode 
                and allows several iSCSI initiators to be connected to it
           mode="1|2|3" - mode of the volume:
                1 - Growing Image mode (journals are not incremented, space is allocated on demand)
                2 - Incremental backup volume (each session creates a new journal file pair)
                3 - Auto-Restored Snapshot (all session changes are rolled back automatically on logout)
        -->
    <!--<device name="IBV0" file="My Computer\j\temp\1.ibv" clustered="no" mode="2"/>-->
    <!-- device name="Mirror0" target="128-remote" file="Mirror Volumes\T\_img\mir-128-remote.mir" asyncmode="no" clustered="no" CacheSizeMB="64" CacheBlockExpiryPeriodMS="5000"/-->
    <!-- <device name="ImageFile0" target="img" file="My Computer\D\test.img" asyncmode="yes" clustered="no" readonly="no" CacheMode="wt" CacheSizeMB="300" CacheBlockExpiryPeriodMS="5000"/> -->
    <device name="imagefile1" file="C:\SharedStorage\masterImg21.swdsk"/>
    <device name="HAImage1" OwnTargetName="iqn.2008-08.com.starwindsoftware:clu01.vlab.local-targetha21" file="C:\SharedStorage\masterImg21_HA.swdsk" serialId="C875BEFBD7D3EBD3" asyncmode="yes" readonly="no" highavailability="yes" buffering="no" header="65536" reservation="no" CacheMode="wb" CacheSizeMB="128" Storage="imagefile1" PoolName="pool1"/>
  </devices>
  <targets>
    <!--<target name="targetname" alias="my target" devices="ImageFile0,ImageFile1"/>-->
    <!--<target name="targetname" alias="my target" devices="ImageFile0,ImageFile1" XcopyMode="3"/>-->
    <!--Target XcopyMode parameter value: 0 - none, 1 - VAAI, 2 - ODX, 3 - ODX+VAAI, 4 - use global options
        By default, this value = 4 that means we choose mode from 0 to 3 depends on VaaiExCopyEnabled and OdxEnabled global options.-->
    <target name="iqn.2008-08.com.starwindsoftware:clu01.vlab.local-targetha21" alias="targetha21" devices="HAImage1"/>
  </targets>
  <permissions>
    <!-- CHAP authentication
        <permission device="RamDrive0" chapLocalName="iqn.1991-05.com.microsoft:home.MSHOME.NET" chapLocalSecret="5432109876543210" chapPeerSecret="0123456789012345"/>
        <permission chapLocalName="test" chapLocalSecret="5432109876543210" chapPeerName="" chapPeerSecret="0123456789012345"/>-->
  </permissions>
  <!--
    Notifications configuration. Required parameters are:
    type = <smtp|snmp|file>. Type defines the way notifications are made. "smtp" means notification is send as email, "snmp" means notification is send as
    SNMP trap, in case of "file" notification is written to file.
    recipient - notification destination. This should be recipient email address for "smtp", hostname or ip address for "snmp" and file name  for "file".
    Following parameters are required only for "smtp" notifications:
    mailFrom - address that is passed in email From field
    smtpHost - hostname of SMTP server
    smtpPort - port of SMTP server.
    
    event element defines what events will generate notifications. Each event is identified by unique id. Following events are supported:  
    1 - Device is added or removed
    2 - Image is created or deleted 
    3 - Device is not available
    4 - Initiator login/logoff
    5 - Initiator disconnect (without logoff)
    6 - iSCSI service is started/stopped
    7 - Password changed 
    All events with "id" set to other value are ignored.    
    -->
  <acltable>
    <aclrecord name="allow for partner(s) of iqn.2008-08.com.starwindsoftware:clu01.vlab.local-targetha21" source="iqn.2008-08.com.starwindsoftware:clu02.vlab.local-partnerha22" destination="iqn.2008-08.com.starwindsoftware:clu01.vlab.local-targetha21" interface="" action="allow"/>
    <DefaultAccessPolicy value="allow"/>
  </acltable>
</configuration>
And a screenshot of StarWind console (as attachment to the thread ).

Please, any advice would be appreciated.
Attachments
StarWind console screenshot
StarWind console screenshot
starwind_console.PNG (49.69 KiB) Viewed 1324 times
yaroslav (staff)
Staff
Posts: 2361
Joined: Mon Nov 18, 2019 11:11 am

Wed Nov 16, 2022 3:55 pm

Hi,

Please make sure to type IP addresses of the partner (see more details in this thread https://forums.starwindsoftware.com/vie ... p+3#p31505)
You could also try disabling write back caching.
Ev3nt
Posts: 2
Joined: Tue Nov 15, 2022 5:19 pm

Thu Nov 17, 2022 3:16 pm

Hello Yaroslav,

You are right, I've swapped the IPs of both partners in the script.
Everything is working fine now.

Thank you !
yaroslav (staff)
Staff
Posts: 2361
Joined: Mon Nov 18, 2019 11:11 am

Thu Nov 17, 2022 8:18 pm

You are welcome. Good luck with setting up the solution. Feel free to contact me here if assistance is required.
Post Reply