VMware ESXi/vCenter: Wann war eine VM das letzte mal eingeschaltet?

Manchmal ist es hilfreich zu wissen, wann ein VMware Gast zuletzt eingeschaltet gewesen ist. Es soll ja schon mal vorkommen das „tote“ virtuelle Maschinen jahrelang auf der Infrastruktur liegen aber eigentlich nicht mehr gebraucht werden.

Lösung

Es gibt keine „eingebaute“ Möglichkeit, Einschaltdaten von VMs nachzuschlagen. Am einfachsten ist es aber, das Ereignisprotokoll rückwärts nach dem letzten „Power on“ Event zu durchsuchen.

An der PowerCLI Powershell geht das beispielsweise so:

Get-VM GASTNAME | Get-VIEvent -Types Info -MaxSamples 1000 | Where-Object {$_.fullFormattedMessage -match "Power On"} | %{Write-Host $_.vm.name $_.createdTime | Out-Default}

Wobei hier „MaxSamples“ ein Beispiel ist; möglicherweise muss man mehr Events durchsuchen. Wenn man beispielsweise oft Sicherungen von Gästen via VCB erstellt, reichen 1000 Events nicht aus.

Ohne die Angabe „GASTNAME“ gibt es eine Liste aller verbundenen virtuellen Maschinen.

VMware Speicherrichtlinie neu anwenden – Ungültige Konfiguration der virtuellen Maschine.

Problem:

Man hat frisch eine Storage Policy konfiguriert und auf eine VM angewendet. Es wurden allerdings nicht alle Einstellungen sofort übernommen (z.B. die NimbleStorage AppSync Konfiguration).
Nach dem Korrigieren dieser, möchte man die Richtlinie neu anwenden. VMware zeigt einem jedoch den Fehler:

Ungültige Konfiguration der virtuellen Maschine.

Lösung:

Die VM hat vermutlich noch einen Snapshot. Nach dem entfernen klappt das erneute Anwenden der Richtlinien sofort.

HPE NimbleStorage Snapshots von VMware VVols mit VSS AppSync

Problem:

Man hat gerade ein frisches Nimble Array in Betrieb genommen, iSCSI konfiguriert, einen VVol Datastore erstellt und VMs dorthin migriert.
Nun möchte man z.B. von einem Windows Server 2012 R2 mit installiertem SQL-Server 2014 Snapshots mit VSS (im Nimble-Jargon: „Application Synchronization“) konfigurieren.
Dazu gibt es von HPE auch einen brauchbaren Guide allerdings scheitert es in dem Moment in dem man im Nimble Plugin für den vSphere Client AppSync für die Maschine aktivieren möchte:
Der vSphere Client braucht einen Moment und zeigt einem dann den Fehler:

Ein allgemeiner Systemfehler ist aufgetreten: java.lang.IllegalStateException: Could not find guest iqn to add to initiator group

Lösung:

Die VM muss über das iSCSI-Netz mit der Nimble reden können. Da wir in unserem Fall ein Separates VLAN für unser Storage-Netz angelegt haben, empfiehlt HPE eine VM-Portgruppe auf dem „Storage-vSwitch“ hinzuzufügen und der Maschine eine zusätzliche vNIC in dieser Portgruppe hinzuzufügen. (Im Windows kann man dort dann auch alle Elemente außer TCP/IPv4 für diese Netzwerkkarte ausschalten).

Der Guide besagt außerdem bei der Installation des Nimble Windows Toolkits (NWT), für VMware/VVol umgebungen wird MPIO auf dem ESXi geregelt, daher solle man die „Nimble DSM for MPIO“ (und somit auch „Nimble Connection Manager for iSCSI“) Option abwählen.
Leider gibt es derzeit (getestet mit NimbleOS 5.0.5.0-585753-opt) einen (mehr oder weniger bekannten) Bug im AppSync, welcher dafür sorgt, das derzeit *immer* der Nimble Connection Manager (NCM) benötigt wird.

Daher:

  1. Portgruppe auf dem iSCSI vSwitch hinzufügen
  2. der VM eine Netzwerkkarte in dieser Portgruppe hinzufügen
  3. Netzwerkkarte in Windows konfigurieren (nur TCP/IPv4 aktivieren, feste IP-Adresse vergeben)
  4. das Windows Feature „Multipath-I/O“ (Multipfad-E/A) auf der Maschine hinzufügen
  5. das NWT-Setup erneut ausführen und den NCM nachinstallieren. Das Setup behauptet dann, es wäre noch ein Neustart erforderlich, das AppSync funktioniert aber auch ohne selbigen.
  6. Dann AppSync erneut über das vSphere Client Nimble Plugin aktivieren. Dieses mal ohne Fehlermeldung

vSphere HA konnte kein Konfigurations-vVol für diesen Datenspeicher erstellen und kann daher die virtuellen Maschinen auf dem Datenspeicher so lange nicht schützen, bis das Problem behoben wurde. Fehler: (vim.fault.InaccessibleDatastore)

Problem

Man hat grade ein nagelneues SAN mit vvol Feture im vCenter Server bereitgestellt. Das vvol möchte abe rnicht so recht und wird mit einem Fehler angezeigt:

vSphere HA konnte kein Konfigurations-vVol für diesen Datenspeicher erstellen und kann daher die virtuellen Maschinen auf dem Datenspeicher so lange nicht schützen, bis das Problem behoben wurde. Fehler: (vim.fault.InaccessibleDatastore)

Lösung

Zu schnell! Entferne deine vvols wieder. Warte eine Minute. Füge Sie wieder hinzu. die PEs (Protocol-Endpoints) brauchen eine ganze Weile, bis die Speicherrichtlinie mit dem vCenter abgegleichen ist.

Nutzt du eine Nimble? Wenn ja, erstelle auf jeden Fall eine neue Speicherrichtlinie vom Typ „Nimble“. Erst dann hast du in deinen vvols vollen Feature-Zugriff, wie auf die Deduplizierung, Pureflash, Durchsatzbeschränkungen und so weiter.

VMware ESXi: mehrere VIBs auf einmal deinstallieren (remove multiple VIB)

Diesen Trick kannte ich nicht: Man kann in der Kommandozeile gleich mehrere VIBs auf einmal deinstallieren. ESXCLI kann das sowohl remote, als auch lokal auf dem Host (z.B. via SSH):

~:# esxcli software vib remove -n vibname1 -n vibname2 -n vibname3

So kann man diese fiesen alten HPE-Zugaben vor Inplace-Hostupgrades alle auf einmal schnell entfernen:

~:# esxcli software vib remove -n char-hpcru -n net-mst -n char-hpilo -n hp-ams -n hp-esxi-fc-enablement

Und schon steht demUpgrade nichts mehr im Wege 🙂

vSphere storage motion „Fehler 195887250. Migration determined a failure by the VMX“

Problem

Eine VM möchte sich nicht via StorageMotion nicht auf ein VVOL verschieben lassen. Im Aktivitätsprotokoll sieht man den Fehler:

Fehler beim Warten auf Daten. Fehler 195887250. Migration determined a failure by the VMX.

und/oder

Migration determined a failure by the VMX. Storage vMotion konnte die Zielfestplatte /vmfs/volumes/vvol:0000000200004004-825d720126911b58/rfc4122.16630ae1-3756-4e47-b932-cdebf5862fd7/SERVERNAME.vmdk nicht erstellen.

und/oder

Erstellen einer oder mehrerer Zielfestplatten fehlgeschlagen. Es ist ein schwerwiegender interner Fehler aufgetreten. Weitere Details finden Sie im Protokoll der virtuellen Maschine.

Spannend zu suchen ist der Fehler 195887250. Der VMKernel meint damit „VMK_MIGRATE_VMX_FAILURE“, oder in ausgeschrieben „Migration determined a failure by the VMX“.

Lösung

Der weitaus häufigste Grund ist relativ einfach: Eine der Festplatten der betroffenen Maschine hat eine größe, die nicht durch 1Mbyte teilbar ist. VVOLs können nur vielfaches von 1Mbyte allokieren, daher schlägt das anlegen der Platte fehl.

Das sieht man auch im vmware.log der betroffenen Maschine:

2018-08-06T11:50:01.264Z| worker-2161938| I125: DISKLIB-LIB_CREATE : CREATE: Creating disk backed by 'vvol'
2018-08-06T11:50:01.265Z| worker-2161938| W115: OBJLIB-VVOLOBJ : VVolObjCheckSize: Requested size (32217052160) is not an MB multiple.
2018-08-06T11:50:01.265Z| worker-2161938| W115: OBJLIB-VVOLOBJ : VVolObjDetermineSizeInMB: Requested size (32217052160) is not a MB multiple.
2018-08-06T11:50:01.265Z| worker-2161938| W115: Mirror: scsi0:0: SVMotionLocalDiskCreate: Failed to create destination disk: The requested size is not a multiple of 1MB
2018-08-06T11:50:01.265Z| worker-2161938| W115: Mirror: scsi0:0: Failed to create disk from /vmfs/volumes/.../NAME.vmdk to /vmfs/volumes/.../NAME.vmdk.

Ärgerlicherweise behauptet die VCSA stattdessen: „No space left on device“

Der zweite Fall der ich einmal untersuchen durfte, war eine „kaputte“ Netzwerkkarte. Alles lief einwandfrei, nur storage motion auf dieser Karte nicht. NIC ausgetauscht, alles wieder fertig.

vmware vCenter VCSA root-Partition vollgelaufen (Audit.log riesig)

Problem

Eine vmware VCSA ist vollgelaufen. Die root-Partition („/“) hat noch 0 Byte frei und die Appliance bootet nicht mehr richtig. Eine Anmeldung ist nicht mehr möglich, sogar der Bash-Zugang via

shell.set --enabled true

schlägt fehl.

Lösung

Es muss erst Platz auf der Partition gemacht werden, sonst ergeben alle weiteren Reparaturversuche keinen Sinn.

  1. Ein Linux mit einer Shell booten (z.B. ein Ubuntu, Debian oder ähnliches)
  2. Mounten der Root-Partition
    mkdir /pladde
    mount /dev/sda3 /pladde
  3. Platz schaffen
    rm -rf /pladde/var/log/audit/*
    rm -rf /pladde/var/log/audit/*
  4. Reboot, fertig

Danach empfielt es sich, entweder den Fehler zu beheben (https://kb.vmware.com/s/article/2149278), die Root-Platte zu vergrößern (https://blog.mwpreston.net/2015/10/05/resizing-the-root-partition-of-the-vcenter-server-appliance-vcsa/) oder eigene Jobs zum aufräumen hinzuzufügen …