Unmount Datastore nicht möglich

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

coredump01

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

coredump02

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

coredump03

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.