Check ESX Path Selection Policy (PSP)

VMware ESXi verwendet ein modulares Framework zur Verwaltung von gleichzeitigen Zugriffen auf Datenspeicher. Die Pluggable Storage Architecture (PSA) koordiniert die Arbeit der Multipathing-Plugins (MPP). Verschiedene Storage Hersteller liefern eigene MPP für den Betrieb ihrer Geräte an ESXi Hosts, oder geben Empfehlungen für die Verwendung des VMware Native Multipathing Plugin (NMP). Dieses bietet drei Path-Selection-Policies:

  • Fixed
  • Most recently used (MRU)
  • Roud Robin (RR)

Die Standard-Einstellung des VMware Native Multipathing Plugins ist MRU. Das bedeutet, dass jedes neue ESX-Volume auf jedem Host mit der Policy MRU angesteuert wird.

Beim neu hinzufügen von LUNs zum ESX Cluster passiert es immer wieder, daß für einzelne LUNs nicht die korrekte Path-Selection-Policy gesetzt wird. Bei n Luns x m Server kommt da unter Umständen eine große Anzahl an Konfigurationen zusammen mit erhöhter Fehlerwahrscheinlichkeit. „Check ESX Path Selection Policy (PSP)“ weiterlesen

ESXi TPS Status ermitteln

Tranparent Page Sharing (TPS) ist eine Technik zur gemeinsamen Verwendung von Speicherinhalten, indem identische Pages nur einmalig abgelegt werden.

Seit Update 2b wurde TPS von VMware per Default deaktiviert, da es in seltenen Fällen zu Sicherheitsverletzungen zwischen VMs kommen konnte. Wie es sich zeigte, ist aber bei ESXi Servern mit höherer Build Nummer unter Umständen TPS noch aktiv. Das liegt daran, daß VMware TPS offensichtlich nur bei Neuinstallation abschaltet.

TPS Status

Wie kann man nun ermitteln, welchen TPS Status die ESX Server eines Clusters haben?

Hierfür kann man mittels PowerCLI einen oneliner ausführen.

# Connect-VIServer <myVC>
# Get-VMHost –State Connected | Get-AdvancedSetting –Name Mem.ShareScanGHz | Format-Table –Property Entity,Name,Value -AutoSize
# Disconnect-VIServer

Werte >0 deuten auf ein aktiviertes TPS.

TPS deaktivieren

# Connect-VIServer <YourvCenter>
# Get-VMHost –State Connected | Get-AdvancedSetting –Name Mem.ShareScanGHz | Set-AdvancedSetting –Value 0

Status erneut testen

# Get-VMHost –State Connected | Get-AdvancedSetting –Name Mem.ShareScanGHz | Format-Table –Property Entity,Name,Value -AutoSize
# Disconnect-VIServer

Links

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

„Unmount Datastore nicht möglich“ weiterlesen

VMs mit spezifischem NIC suchen

In größeren VMware Umgebungen kann die Suche nach bestimmten VM-Eigenschaften sehr mühsam werden. Natürlich kann man in die Einstellungen jeder VM gehen und nachsehen, aber das ist zeitaufwendig und stupide. Hier ist – wie so oft – PowerCLI der Freund und Helfer.

Zunächst stellt man eine Verbindung mit vCenter oder einem bestimmten ESX Host her.

Connect-VIserver <Servername>

Welche VMs haben einen e1000 Netzwerk Adapter?

Get-vm | ?{Get-networkadapter $_ | where-object {$_.type -like "e1000" }}

 

Welche VMs haben einen VMXNET Netzwerk Adapter ?

Analog funktioniert die Abfrage nach einem VMXNET Adapter. Im Resultat werden VMs mit VMXNET2 und VMXNET3 Adapter gelistet.

Get-vm | ?{Get-networkadapter $_ | where-object {$_.type -like "VMX*" }}

 

 

HA mit PowerCLI steuern

HA ist ein sehr hilfreiches Cluster Feature von vSphere. Es gibt aber Situationen, da muß man es abschalten oder deaktivieren. Ein Beispiel ist die skriptgesteuerte Abschaltung eines Clusters. Hierbei werden alle VMs beendet und die ESXi Hosts abgeschaltet. Ist dann HA noch aktiv, passieren wilde Dinge. Der letzte ESXi Host versucht alle (inzwischen ausgeschalteten) VMs zu übernehmen, aber diese sind noch auf den anderen Hosts registriert. Dabei ist alles in Ordnung und geplant. Für Notabschaltungen und geplante Wartungen empfiehlt es sich daher HA ganz abzuschalten. Solange ein Admin an der GUI sitzt ist dies kein Problem. Wenn aber die Notabschaltung automatisch ausserhalb der Geschäftszeiten erfolgt, muss HA per Skript deaktiviert werden.

HA deaktivieren

Folgendes Kommando schaltet HA auf allen Clustern ab ohne Rückfrage

Get-Cluster | Set-Cluster -HAEnabled:$false -Confirm:$false

Möchte man HA nur gezielt für einen Cluster (Name MYCLUSTER entsprechend anpassen) abschalten, so ist der Befehl etwas zu modifizieren.

Get-Cluster MYCLUSTER | Set-Cluster -HAEnabled:$false -Confirm:$false

Host Monitoring abschalten

Eine Variante zur Abschaltung von HA ist die Deaktivierung des Host-Monitoring. Dabei bleiben die HA-Agenten auf den ESX Hosts installiert, werden aber inaktiv gesetzt.

Die Steuerung mittels PowerCLI ist etwas umständlicher, aber möglich. In einem Blogbeitrag von ICT-Freak.nl gibt es hierfür ein kleines Script.

Project ONYX

Ein sehr hilfreiches Tool zur Erstellung von Powershell Skripten bietet Project-Onyx. Hiermit kann man Vorgänge an der GUI aufzeichnen und erhält die entsprechenden Powershell Kommandos für die Aktion zurück.

ESXi Maintenance Mode via PowerCLI und vMA

PowerCLI

Bevor die Kommandos abgesetzt werden können, muss eine Verbindung mit dem Host oder den VCenter hergestellt werden.

Verbindung mit einem ESXi herstellen:

Connect-viserver -server <Servername> -user root -password <myPass>

Verbindung mit einem vCenter herstellen:

Connect-viserver -server <vCenter> -user <domain\user> -password <myPass>

Start Maintenance Mode

Set-VMHost -VMHost <Hostname> -State maintenance

Host wechselt in den Wartungsmodus. Fall er sich schon im Wartungsmodus befindet passiert nichts.

Maintenance Mode beenden

Set-VMHost -VMHost -State connected

Host beendet den Wartungsmodus. Wenn der Host nicht antwortet wird die Verbindung neu hergestellt.

Reboot Host

Restart-VMHost -VMHost <Hostname> [-Force] [-Evacuate] [-RunAsync] [-Whatif] [-Confirm]

Parameter in eckigen Klammern [ ] sind optional.

  • Force: Host wird neu gestartet, auch wenn er nicht im Wartungsmodus ist
  • Evacuate: (funktioniert nur bei Connect zu vCenter!). Ausgeschaltete VMs werden automatisch auf anderen ESX Servern registriert. Wenn diese nicht möglich sit, bleiben sie auf dem Host und sind für die Dauer des Reboots nicht erreichbar (grau). Aktive VMs werden migriert. Falls dies nicht möglich ist wartet der Prozess, bis diese manuell abgeschaltet werden.
  • RunAsync: Kommando kehrt sofort zur Konsole zurück, ohne den Abschluss des Vorgangs abzuwarten.
  • Whatif: Ausgabe erfolgt nur auf der Konsole. es werden keine Aktionen ausgeführt. Dient der Simulation.
  • Confirm: Default = true. Ist der Parmeter gesetzt erwartet das Kommando eine Bestätigung durch den Nutzer.

vMA / vSphereCLI

Von der vMA bzw. der vSphereCLI gibt es drei Komanndos für den Wartungsmodus:

vicfg-hostops --server <ESX-Host> --operation enter|exit|reboot

Der Befehl kann entweder mit dem Parameter enter oder exit oder reboot ausgeführt werden.

Pre-Flight-Check vSphere 5.1

Alan Renouf, der vielen bekannt ist durch vCheck oder andere sehr nützliche Skriptsammlungen, hat jetzt einen sogenannten Fling veröffentlicht, mit dem man eine Virtuelle Infrastruktur vor dem Upgrade auf vSphere 5.1 testen kann.

preflight51_01

Das Skript kommt mit einer schönen GUI und zeigt im Vorfeld der Migration mögliche Probleme auf.

 

Links

vmware Labs – vCenter 5.1 Pre-Install Check Script