When attempting to convert a standard vSAN cluster to a 2-node or Stretched Cluster, the task fails immediately.
The vSphere Client surfaces a generic error: "Cannot complete the operation. See the event log for details. Failed to convert the given configuration to a stretched cluster."
In /var/log/vmware/vsan-health/vmware-vsan-health-service.log on the vCenter Server Appliance, you see the following error:
Failed to convert cluster(domain-#####) to stretched cluster in task: For field 'msg' expected type string, but got vmodl.LocalizableMessage
VsanVcStretchedClusterSystemImpl.py line 2980, in _ConvertToStretchedClusterMain
VsanVcStretchedClusterSystemImpl.py line 439, in _CheckExtendedConfig
In /var/log/vmware/vsan-health/vsanvcmgmtd.log on the vCenter Server Appliance, you see the cluster configuration reporting that capacity Reservation Info is enforced (hostRebuildThreshold=Enforced, vsanOpSpaceThreshold=Enforced):
vsan-mgmt[####] [VsanVcClusterConfigSystemImpl::UpdateHostConfig opID=######-####] Updating host-##### with ['hostConfig: enabled=None, hostSystem=None, vsanEsaEnabled=None, mode=Mode_None, vsanEsaConversionStatus=None', ' clusterInfo: uuid=#######-####-####-##########, nodeUuid=None', ' storageInfo: None', ' networkInfo: None', ' faultDomainInfo: None', ' encryptionInfo: enabled=False, kekId=None, hostKeyId=None, clientKey=None, clientCert=(not set), dekGenerationId=2, changing=False, eraseDisksBeforeUse=None, wrappedDek=None, dekId=None, oldWrappedDek=None, oldDekId=None, kekVerifier=None, dekVerifier=None, oldDekVerifier=None, iv=None, syncing=None, kekIdExt=None, hostKeyIdExt=None, dekGenerationIdExt=None', ' kmipServers[]:', ' kmsServerCerts[]:', ' dataEfficiencyInfo: dedupEnabled=False, compressionEnabled=False', ' resyncIopsLimitInfo: resyncIops=0', ' extendedConfig: objectRepairTimer=1, disableSiteReadLocality=False, enableCustomizedSwapObject=True, largeScaleClusterSupport=None', ' proactiveRebalanceInfo: enabled=True, threshold=30', ' capacityReservationInfo: hostRebuildThreshold=Enforced, vsanOpSpaceThreshold=Enforced', ' datastoreInfo: None', ' unmapConfig: enable=True', ' internalExtendedConfig: vcMaxDiskVersion=20', ' metricsConfig: ', ' profiles[]:', ' authToken=(not shown)', ' authToken=(not shown)', ' unicastConfig: None', ' rdmaConfig: rdmaEnabled=False', ' dataProtectionInfo: None', ' dataInTransitEncryptionInfo: enabled=False, rekeyInterval=1440, transitionState=settled, serverClusterUuid=None', ' snapServiceConfig: None', ' deconvergedNetConfig: None', ' witnessHostConfig[]:', ' serverClusterConfigs[]:', ' remoteDITInfos[]:']
vSAN 8.x
The vSAN cluster has Capacity Reservations (Operations Reserve and/or Host Rebuild Reserve) set to Enforced.
This failure typically occurs when a host or cluster was part of a decommissioned vSAN configuration, leaving stale entries behind in the VCSA database and is then reused to enable vSAN services.
Note: In clusters with fewer than four hosts, the vSphere Client UI marks these reservation toggles as "Unsupported" and displays them as disabled/off. If these settings were enforced while the hosts were part of a larger cluster, the "Enforced" state remains active in the backend even though it is not visible or editable in the current UI.
To resolve this issue, the capacity reservations must be cleared so the pre-flight validation can pass.
Check at the vSAN cluster level that (Host Rebuild Reserve and Operational Reserve) are not enabled
VC web-client > VSAN Cluster > Configure > Services > Reservations and Alerts
If the options listed above are disabled, the workaround is to create a new cluster and migrate your existing hosts to the newly created cluster.
1.Create a new, empty cluster object in the vCenter inventory.
2.Move the ESXi hosts from the existing cluster into the new cluster.
3.Re-configure the vSAN settings and attempt the "Convert to Stretched Cluster" wizard again. This ensures a clean backend configuration without stale reservation metadata.