Virtuelle Distributed-Switches (vDS) haben zahlreiche Vorteile gegenüber Standard vSwitches. Durch die zentrale Verwaltung und einheitliche Konfiguration über alle Hosts, ist weniger Raum für Konfigurationsfehler im Vergleich zu Standard vSwitches. Nennt mich altmodisch, aber ich habe dennoch gerne das Management Interface des Hosts an einem klassischen Standard vSwitch. Wenn irgendetwas dummes passiert kann man dann immer noch den Host erreichen und Änderungen vornehmen.
Kürzlich ist der Host eines Kunden ausgefallen. Nach der Wiederherstellung und Rückspielung der Konfiguration war die Nummerierung der vmnics aus noch nicht geklärter Ursache vertauscht. Der Host war daher weder über vCenter, noch über Hostclient ansprechbar. Der Kunde hatte nicht genügend vmnics im Host und konfigurierte daher das Management Network über eine Portgruppe auf dem vDS. Das ist erlaubt und in der Regel kein Problem. In diesem speziellen Fall war es jedoch durchaus ein Problem. Ich war im wörtlichen Sinn vom Host ausgesperrt. Normalerweise könnte man über das Direct Console User Interface (DCUI) die Zuordnung der vmnics zum Management Netzwerk neu organisieren. Das funktionierte jedoch nicht, da alle vmnics von Distributed vSwitches beansprucht waren. Sie konnten daher keinem Standard vSwitch und somit auch nicht dem Management Kernelport zugeordnet werden.
Was nun?
Es gibt einen Ausweg aus dieser Lage. Dazu muss man Zugang zum CLI des DCUI haben. Über eine lokal angeschlossene KVM-Konsole, ILO oder iRMC kann man sich auf dem Host anmelden und wählt im Hauptmenü “Troubleshooting Options”.
Unter Troubleshooting aktiviert man “Enable ESXi Shell”.
Auf der rechten Bildschirmhälfte ist der aktuelle Status der ESXi Shell dargestellt.
Jetzt kann man mit [Alt] + [F1] auf die Shell zugreifen und sich als root anmelden.
Neuen Standard Switch erstellen
Als erstes erzeugen wir einen Standard vSwitch mit Namen “vSwitch1” (oder ein anderer noch nicht existenter Name).
esxcli network vswitch standard add -v vSwitch1
Jetzt werfen wir einen Blick auf unsere Distributed vSwitches. Wir müssen ihnen einen vmnic entfernen, um diesen unserem neuen vSwitch1 hinzuzufügen.
esxcli network vswitch dvs vmware list
Der Befehl wirft eine lange Liste mit Details zu den vDS aus. Wir suchen die Zeile “Uplinks” und merken uns die zugehörigen Port IDs.
Einen vmnic vom vDS lösen
Wir suchen einen vmnic aus, den wir vom vDS entfernen wollen. Im Beispiel oben sind vmnic0 und vmnic1 dem vDS zugeordnet. Port-ID für vmnic0 ist die 18 und der Name des vDS ist dvs-LAN-1.
esxcfg-vswitch -Q <vmnic> -V <uplink port ID> <dvS-name>
Das Kommando in unserem Beispiel lautet:
esxcfg-vswitch -Q vmnic0 -V 18 dvs-LAN-1
Ein alternatives (moderneres) Kommando lautet vicfg-vswitch. Dieses sollte für vSphere4 oder neuer angewendet werden.
vicfg-vswitch -Q <vmnic> --dvp <uplink port ID> <dvswitch_name>
Es wird empfohlen, das vicfg-vswith Kommando zu verwenden, da esxcfg in Zukunft obsolet wird.
vicfg-vswitch -Q vmnic0 --dvp 18 dvs-LAN-1
Freien vmnic einem Standard vSwitch zuordnen
esxcli network vswitch standard uplink add --uplink-name=vmnic0 --vswitch-name=vSwitch1
Wir haben jetzt einen Standard vSwitch mit einem Uplink (vmnic0). Diesen können wir im DCUI dem Management Netzwerk zuordnen.
Wir können uns jetzt von der ESXi Shell abmelden und mit [Alt] + [F2] wieder zum DCUI wechseln. Dort wählen wir “Disable ESXi Shell”.
Einstellungen Rückgängig machen
Um einen vmnic von einem Standard Switch zu entfernen, benötigen wir das folgende Kommando.
esxcli network vswitch standard uplink remove –uplink-name=vmnic0 –vswitch-name=vSwitch1
Der jetzt freie vmnic0 soll wieder dem Distributed vSwitch dvs-LAN-1 zugeordnet werden. Dafür benötigen wir eine freie Port ID. Ich habe im Beispiel ID 39 gewählt.
esxcfg-vswitch -P vmnic0 -V 39 dvSwitch1
Das folgende Kommando listet alle Standard Switches auf.
esxcli network vswitch standard list
Wir erhalten eine Liste aller Standard vSwitches. Der zu Beginn erzeugte vSwitch1 sollte hier ebenfalls erscheinen. Die Zeile mit “Uplinks” sollte jedoch leer sein, da wir vmnic0 wieder entfernt haben.
Standard vSwitch entfernen
Um unseren leeren vSwitch1 wieder zu entfernen führen wir das folgende Kommando aus.
esxcli network vswitch standard remove -v vSwitch1
Links
KB 1008127 – Configuring vSwitch or vNetwork Distributed Switch from the command line in ESXi/ESX
VMware code – vSphere Command-Line Interface Reference