Es gibt in vielen Hyper-V-Umgebungen einen Konfigurationsfehler, auf den ich erst vor Kurzem richtig aufmerksam wurde. Administratoren, die einen Hyper-V-Cluster betreiben, gehen in aller Regel davon aus, dass ihre virtuellen Maschinen hochverfügbar sind. Oft ist das aber nicht der Fall. Wie kommt das?
Die Antwort ist meistens so trivial wie bestürzend: Die VMs sind versehentlich falsch konfiguriert. Schuld daran sind die bordeigenen Management-Tools.
Setzt man kein separates Werkzeug zur Verwaltung seiner Hper-V-Umgebung ein, so kommt man mit den Bordmitteln durchaus zum Ziel. Ärgerlich ist dabei aber, dass man es mit zwei verschiedenen Programmen zu tun hat, die nur sehr mangelhaft aufeinander abgestimmt sind: dem Hyper-V-Manager und dem Failover-Cluster-Manager.
Wie man in den Bildern deutlich sieht, zeigt der Hyper-V-Manager mehr VMs als der Failover-Cluster-Manager. Das ist eine Situation, die die oben erwähnten Administratoren ähnlich auch sehen. Meist ist das keine Absicht.
Der Fehler entsteht, wenn man eine VM über den Hyper-V-Manager erzeugt und nicht über den Failover-Cluster-Manager. Auch wenn die VM-Dateien auf dem Cluster-Storage gespeichert sind, wird die VM noch keine Cluster-Ressource – also ist sie auch nicht hochverfügbar. Kein Failover. Der Hyper-V-Manager erzeugt ausschließlich lokale VMs, egal, wo man die Dateien speichert.
Der beste Weg, um dies zu umgehen, besteht darin, die VMs direkt über den Failover-Cluster-Manager zu erzeugen. In diesem Fall wird eine hochverfügbare VM daraus (sofern man natürlich auch die anderen Voraussetzungen einhält, also den Speicherpfad und die Ressourcen-Definition). Hat man dies allerdings nicht getan, dann kann man eine lokale, nicht-geclusterte VM auch nachträglich einfach zu einer Cluster-VM machen. Dazu wählt man im Failover-Cluster-Manager das Kommando “Rolle konfigurieren”. Im folgenden Dialog wählt man als Ressourcentyp “Virtuelle Maschine”. Es folgt dann eine Liste der VMs auf den Cluster-Knoten, die bislang nicht hochverfügbar sind. Hier wählt man die gewünschte(n) VM(s) aus und konvertiert sie damit zu Cluster-Ressourcen. Das geht sehr schnell und erfordert keinen Neustart der VMs.
Mit folgendem PowerShell-Kommando bekommt man eine Übersicht, welche VMs geclustert sind und welche nicht. Man kann es auf jedem Host ausführen.
Get-VM | ft VMName,IsClustered
http://faq-o-matic.net/?p=6583