Hi,
these steps describe the steps to unmount an datastore from an ESXi host. If you tried it with the GUI and you got an error:
The resource ‘my_esxdatastore’ is in use. Cannot unmount volume ‘esxdatastore_F00’ because “One or more virtual machines are still registered on it”.
Try the following steps to identify the open files:
Get the vmfs path and UUID of the datastore
~ # esxcli storage filesystem list Mount Point Volume Name UUID ------------------------------------------------- ------------------------------------------ ----------------------------------- /vmfs/volumes/561227ad-f2b4c56c-affd-001122334455 my_esxdatastore 561227ad-f2b4c56c-affd-001122334455
Check which hosts have open files respectively activity on the volume:
~ # vmkfstools --activehosts /vmfs/volumes/561227ad-f2b4c56c-affd-001122334455 Scanning for VMFS-3/VMFS-5 host activity (512 bytes/HB, 2048 HBs). Found 1 actively heartbeating hosts on volume (1): MAC address 00:11:22:33:44:55, IP 10.10.100.5
Connect to the host by ssh and check for open files on the volume
~ # lsof | grep -i 561227ad-f2b4c56c-affd-001122334455 5280614 vmx cwd -1 /vmfs/volumes/561227ad-f2b4c56c-affd-001122334455/vCLS-13
in this example the vSphere Cluster Services has still open handles an the datastore. Since 7.0.1x the vCLS are no longer visible in the vSphere GUI.
You have to delete all vCLS and enable the Retreat Mode (this has some restictions! See the article below).
vCenter Cluster Retreat mode
You can use these powercli script
PS D:\> Connect-VIServer myVCenter.mydomain.org PS D:\> $oCluster=Get-Cluster myCluster PS D:\> $sAdvancedKeyName=[string]::Format("config.vcls.clusters.domain-{0}.enabled",$oCluster.Id.Replace("ClusterComputeResource-domain-","")) PS D:\> write-host "KeyName:" $sAdvancedKeyName config.vcls.clusters.domain-c12345.enabled PS D:\> $oAdvancedSettingVCLS=Get-AdvancedSetting -Entity $global:DefaultVIServer -Name $sAdvancedKeyName PS D:\> if($oAdvancedSettingVCLS) { $oAdvancedSettingVCLS | Set-AdvancedSetting -Value "False" } else { New-AdvancedSetting -Entity $global:DefaultVIServer -Name $sAdvancedKeyName -Value "False" }
Unmount the volume/datastore
~ # esxcli storage filesystem unmount -p /vmfs/volumes/561227ad-f2b4c56c-affd-001122334455
and disable the Retreat Mode. Note: Once created you cannot remove the AdvancedSettings “config.vcls.clusters.domain-c12345.enabled” just created. You must set it to True.
PS D:\> write-host "KeyName:" $sAdvancedKeyName config.vcls.clusters.domain-c12345.enabled PS D:\> Get-AdvancedSetting -Entity $global:DefaultVIServer -Name $sAdvancedKeyName | Set-AdvancedSetting -Value "True"
Michael