Das Entfernen eines Datenspeiches vom ESX Cluster muss einer genauen Prozedur folgen, andernfalls drohen sehr unangenehme Effekte infolge PDL oder APD.
Unmount des Datastores nicht möglich
Obwohl ich die Abfolge der Schritte genau eingehalten hatte, ließ sich ein Datastore nicht entfernen und brachte die Meldung:
The resource ‘Datastore Name: VMFS uuid: [uuid]’ is in use. Cannot remove datastore ‘Datastore Name: VMFS uuid: [uuid]’ because file system is busy. Correct the problem and retry the operation.
Hierfür gibt es typischerweise zwei mögliche Fehlerquellen:
- vsantrace Files
- Coredump Files
vsantrace entfernen
Auflisten der geöffneten Dateien mit lsof
# lsof |grep vsantraced |grep volumes
Zum Entfernen der Datei muss der vsantrace Daemon gestoppt werden.
# /etc/init.d/vsantraced stop
Nun kann die Datei gelöscht und der Daemon anschliessend wieder gestartet werden.
# /etc/init.d/vsantraced start
Sollte aber (wie in meinem Fall) kein vSAN verwendet werden, so ist es am besten, die vsantraces generell abzuschalten.
Coredumps entfernen
Die zweite mögfliche Störquelle sind Coredump Files auf dem Datastore. Diese sind neu seit ESXi 5.5 und werden gelegentlich automatisch generiert und auf einem Datenspeicher abgelegt. So lange diese vorhanden sind, darf der Datenspeicher nicht entfernt werden.
Es gilt zunächst, diese zu lokalisieren:
# esxcli system coredump file list
Nur der Besitzer (ESXi) dieser Dumpfiles kann diese auch entfernen. Also muss man zunächst herausfinden, welcher Host sie produzierte.
# vmkfstools -D /vmfs/volumes/<Path>.dumpfile
Teil der Ausgabe ist owner [host uuid], wobei der letzte Teil der UUID gleich der MAC Adresse von vmnic0 ist (hier: 001999d726d3)
Mittels PowerCLI kann man so den Host identifizieren. Der Platzhalter der MAC Adresse “xx:xx:xx:xx:xx:xx” muss entsprechend angepasst werden. Im hier dargestellten Fall: “00:19:99:d7:26:d3”.
Get-VMHostNetworkAdapter |? {$_.Mac -eq "xx:xx:xx:xx:xx:xx"} | select VMhost, Name, Mac
Alle weiteren Arbeiten müssen per SSH von diesem Host getätigt werden. Der Parameter –force ist notwendig wenn das coredump File noch in Verwendung ist. Vergisst man diesen Parameter, wird eine entsprechende Meldung ausgegeben.
# esxcli system coredump file remove --force
Alternativ kann man auch alle Dumpfiles auf allen hosts entfernen. Dazu muss man sich per PowerCLI auf das vCenter verbinden.
Get-VMHost | % { $esxcli = get-esxcli -vmhost $_ $esxcli.system.coredump.file.remove($null, $true) }
Links
- virten.net – Permanently disable ESXi 5.5 coredump file
- vmware KB 2069171 – Unmounting a datastore used for Host Cache on ESXi 5.5 …