vSphere vCLS VMs löschen, verschieben oder loswerden

Die neuen „vSphere Cluster Services (vCLS)“ sind standardmäßig aktiviert und die zugehörigen VMs werden per Default in allen vSphere-Clustern ab 7.0U3 ausgeführt.

Diese vCLS-Gäste stellen eine „Teilautarkie“ sicher, so dass beispielweise bei einem Crash des vCenter Servers die Clusterdienste weiterhin ihre Arbeit tun. Achtung: der vCenter Server ist trotzdem erforderlich um DRS und HA zu konfigurieren (und Operationen ausführen) zu können.

vSphere Cluster Services (vCLS)

Ein lesenswerter Artikel zu dem Konzept findet sich in den vSphere Docs unter https://docs.vmware.com/de/VMware-vSphere/7.0/com.vmware.vsphere.resmgmt.doc/GUID-96BD6016-4BE7-4B1C-8269-568D1555B08C.html

vCLS ist immer aktiviert, wenn man ein Upgrade oder Setup mit vSphere 7.0U3 macht. Technisch wird vCLS auch schon beim vCenter Server-Upgrades aktiviert. Spannend: vCLS-VMs unterstützen keine eigenen Netzwerkkarten.

Sollen die vCLS-<ID> VMs bleiben?

Manchmal muss man die klebrigen vCLS VMs „eine Weile“ loswerden. Zum Beisipel wenn man ein Storage tauschen möchte oder sich der Cluster AUSGERECHNET ein Veeam_NFS Volume für das Deployment ausgesucht hat (ohne Storage Motion natürlich).

Unnötig sind Sie zudem auch, wenn man kleine Cluster ohne DRS oder andere Cluster-Features betriebt.

Prinzipiell sind die Dinger sehr robust: Man kann Sie jederzeit abschalten und sie gehen sofort von selber wieder an. Leider verhindert das auch das Verschieben auf andere Speicher (ohne Storage Motion).

Lösung: vCLS VMs abschalten

Man kann den Cluster aber zum Glück relativ einfach dazu bewegen, die vCLS-VMs selbstständig zu entfernen.

  • Cluster-ID kopieren: Links in der Bestandsliste den Cluster auswählen und die ID aus der Adresszeile kopieren. Zum Beispiel „domain-c37“
  • vCenter Konfigurieren: Links ganz oben das vCenter auswählen, dann rechts Konfigurieren > Erweitert > Einstellungen bearbeiten > neuen Wert hinzufügen
  • Der Wert lautet config.vcls.clusters.<CLUSTER-DOMAIN>.enabled und muss auf „False“ gesetzt werden

Sobald das gespeichert ist, verschwinden die vCLS-Maschinen innerhalb weniger Sekunden. Löscht man den Eintrag wieder (oder stellt ihn auf „True“) kommen die Maschinen zuverlässig und schnell wieder.

vSphere (7/) NTP funktioniert nicht „Zeitsynchronisierung des Hosts wurde unterbrochen“ und „NTP is not synced“ (NTP never was synchronized.)

Die neue vSphere ESXi Version bringt viele Neuerungen mit. Einige gut, andere sind neuen Herausforderungen für vmWare Admins

NTP never was synchronized.

Wir sehen es öfter, das frisch aktualisierte vsphere ESXi Hosts keine aktuelle Uhrzeit mehr von NTP Servern unter Windows abholen wollen. Es ist nicht nur eine Windows Server Zeitquelle betroffen, aber hier ist der Effekt am einfachsten nachzuvollziehen (und ja auch schon hinlänglich dokumentiert).

Hosts zeigen nach einer Weile den roten Fehler „Zeitsynchronisierung des Hosts wurde unterbrochen“ an.

vSphere: Zeitsynchronisierung wurde unterbrochen

Im Testprotokoll (Hosts > Konfigurieren > Uhrzeitkonfiguration > Dienste testen) sieht man leider nur den wenig hilfreichen Hinweis „NTP is not synced“ und „NTP never was synchronized.„. Nach der nett übersetzten Angabe „Die Konfiguration funtioniert nicht normal“.

Die Konfiguration funktioniert nicht normal

Lösung

Standardmäßig erlaubt Windows NTP Server eine Dispersion („Jitter“) von (großzügigen) 10 Sekunden und fügt diese auch in NTP-Antworten im DISP-Feld bei jedem Abfrageintervall hinzu. ESXi/ESX-Hosts ab 7.0.3 akzeptieren standardmäßig aber keine NTP-Antworten mit einer Root-Dispersion von mehr als 1,5 Sekunden.

Man könnte den Windows-NTP entsprechend anpassen, geht damit aber das Risiko fehlerhaft konfigurierter Domänenmitglieder ein. Oder man ermöglich dem NTP Client von vSphere ESXi einfach eine größere Dispersion. Letzteres machen wir hier.

Wichitg: Unter ESXi 7.0.3 kann man die /etc/ntp.conf nicht mehr manuell bearbeiten, denn sie wird durch das Webinterface (vSphere Client oder vCenter) überschrieben. Das hier ist die „richtige“ Lösung dazu.

NTP-Client auf ESXi-Hosts anpassen

  1. SSH auf Host aktivieren (Konfigurieren > Dienste > SSH > starten)
  2. Via SSH zum Host Verbinden und anmelden
  3. Eine NTP-Konfigurationsvorlagendatei erstellen und diese via esxcli setzen
# config-Datei mit Inhalt erstellen
printf "server pool.ntp.org\ntos maxdist 30\n" > /tmp/ntphack.txt

# Datei als NTP-Config "anhängen"
esxcli system ntp set -f /tmp/ntphack.txt

# NTP Client neu starten
esxcli system ntp set -e 1

Ein paar Sekunden (~20 Sekunden) später hat sich der Fehler selbst behoben und der Hoststatus ist wieder Normal.

vSphere: Alle eingelegten ISO-Dateien in VMs finden (via PowerCLI)

Alle CD’s in VMs finden: Ab und zu möchte ich eine ISO aus einem Datastore löschen, das dann mit einem Fehler fehlschlägt.

Die Datei [DATASTORE] isos/SW_DVD9_Win_Server_STD_CORE_2019_64Bit_German_DC_STD.ISO kann nicht gelöscht werden.

Das liegt meistens daran, das die ISO noch in einem Gast gemountet oder sogar verbunden ist.

Wie kann man also ISO Dateien in allen seinen VMs suchen?

Lösung

Alle VMs mit verbundenen ISO-Dateien via PowerCLI auflisten:

Get-VM | Get-CDDrive | select @{N="VM";E="Parent"},IsoPath | where {$_.IsoPath -ne $null}

… ISO-Dateien aus allen VM’s entfernen:

Get-VM | Get-CDDrive | where {$_.IsoPath -ne $null} | Set-CDDrive -NoMedia -Confirm:$False

vSphere ESXi ISO Image download mit ESXi-Customizer-PS Fehler [WinError 10054]

In letzter Zeit häufen sich die Fälle, in denen man mit dem bewährten PowerShell Script ESXi-Customizer-PS.ps1 von V-Front keine aktuelle ISO mehr herunterladen kann.

Windows Meldet dann nur noch einnen „enexpected error“.

An unexpected error occurred:
[WinError 10054] Eine vorhandene Verbindung wurde vom Remotehost geschlossen

Lösung

Die Ursache des Fehler kennen wir nicht, aber es funktioniert dann immernoch sofort der „Umweg“ über das Offline Zip-Bundle:

.\ESXi-Customizer-PS.ps1 -ozip

gefolgt von

.\ESXi-Customizer-PS.ps1 -izip <ESXi-bundle-ZIP-File>.zip

Dann hat man nach praktisch der selben Zeit das selbe ISO fertig.

vSphere 7 „Ein allgemeiner Systemfehler ist aufgetreten: Internal error“ beim ändern von Syslog.global.logdir

Aus uns nicht erfindlichen Gründen kann man im vSphere Client den Konfigurationseintrag Syslog.global.logdir nicht ohne Fehlermeldung ändern. Wenn man das versucht erhält man die spannende Fehlermeldung „Ein allgemeiner Systemfehler ist aufgetreten: Internal error“

Man erreicht den Eintrag im vSphere Client auf dem Host > Konfigurieren > System/Erweiterte Systemeinstellungen > Bearbeiten

Lösung

Man kann den Eintrag problemlos an der Console via esxcli setzen. Das geht sowohl via SSH als auch remote. Das „neue“ Verzeichnis muss auch schon existieren, sonst beschwert sich esxcli.

mkdir /vmfs/volumes/<NEUESVOLUME>/logs

esxcli system syslog config set --logdir=/vmfs/volumes/<NEUESVOLUME>/logs

Nach der Änderung muss Syslogd neu geladen werden. Das tut das GUI eigentlich automatisch, aber an der Konsole müssen wir etwas nachhelfen:

esxcli system syslog reload

Die gesetzten Parameter erfährt man via GET

esxcli system syslog config get