ESXi Verschiebt die Portgruppe auf einen anderen vswitch

4

Wie verschiebt man in ESXi eine vorhandene Portgruppe auf einen anderen vSwitch?

Dies scheint eine häufig gewünschte Aktion zu sein, die jedoch keine leicht zugängliche Lösung bietet:

Bildbeschreibung hier eingeben

Ich habe also einen großen vSwitch mit ungefähr 8 verschiedenen Portgruppen (jeder mit 4-6 zugewiesenen VMs). Aufgrund von Netzwerkänderungen muss ich diesen vSwitch in mehrere vSwitches aufteilen (jeder mit einem eigenen physischen Adapter). Ich möchte einfach die vorhandenen Portgruppen (einschließlich VLAN-IDs) auf den richtigen (neuen) vSwitch verschieben.

Gibt es eine einfache Möglichkeit, dies zu tun, ohne das Ganze neu zu konfigurieren? Wenn es eine XML-Datei gäbe, in der diese gespeichert ist, wäre dies ein 5-Sekunden-Vorgang zum Ausschneiden und Einfügen.

Jonathon Reinhart
quelle

Antworten:

3

Haftungsausschluss: Dies ist sicherlich keine unterstützte / empfohlene Methode. Mach das nicht auf einer Produktionskiste. Ich habe es aus Sicherheitsgründen mit ausgeschalteten VMs und getrennter vSphere-Verbindung gemacht.

Zunächst müssen Sie auf die ESXi-Konsole zugreifen . Dies kann dann einfach durch Bearbeiten erfolgen /etc/vmware/esx.conf.

Für jeden vSwitch gibt es einen Eintrag wie:

/net/vswitch/child[0000]/name = "vSwitch0"
/net/vswitch/child[0000]/...
/net/vswitch/child[0001]/name = "vSwitch1"
/net/vswitch/child[0001]/...
...

Sie können dort übrigens vSwitches umbenennen.

Die Portgruppen sind Knoten unter dem vSwitches :

/net/vswitch/child[0000]/portgroup/child[0000]/name = "Management Network"
/net/vswitch/child[0000]/portgroup/child[0000]/...
...
/net/vswitch/child[0000]/portgroup/child[0001]/name = "VM Network"
/net/vswitch/child[0000]/portgroup/child[0001]/...
...

Um eine zu bewegen Portgruppe von einem vSwitch zum anderem, ändern Sie einfach den /net/vswitch/child[XXXX]/Knoten ist es unter, um sicherzustellen , zu respektieren , was portgroupKinder bereits vorhanden sind. Mit anderen Worten, wenn Sie eine bewegen Portgruppe auf eine andere vSwitch , müssen Sie möglicherweise seine Kind Nummer ändern.

Hinweis: Sie müssen alle relevanten Leitungen neu nummerieren (alle Leitungen, die dieser Portgruppe entsprechen).

Hinweis 2: Wenn teamPolicyEinträge für eine Portgruppe vorhanden sind , müssen Sie möglicherweise sicherstellen, dass die zugehörigen uplinks[nnnn]/pnic =Einstellungen mit den tatsächlichen Einstellungen vmnicNfür den vswitch übereinstimmen, auf den Sie ihn verschieben.

Nach dem Editieren der Datei, neu gestartet ich einfach den ESXi - Server: $ reboot. Möglicherweise gibt es einen Dienst oder Prozess, der stattdessen neu gestartet werden könnte, aber ich dachte, ein Neustart ist der einfachste und sicherste Weg.


Beispiel

Angenommen, wir haben zwei vSwitches mit jeweils einem vmnicUplink und zwei Portgruppen :

vSwitch0        --> vmnic0
|--portGroupA
|--portGroupB

vSwitch1        --> vmnic1
|--portGroupC
|--portGroupD

Die entsprechenden Einträge in esx.confkönnten ungefähr so ​​aussehen 1 :

# vSwitch0
/net/vswitch/child[0000]/...
/net/vswitch/child[0000]/name = "vSwitch0"
/net/vswitch/child[0000]/numPorts = "128"
# vSwitch0->portGroupA
/net/vswitch/child[0000]/portgroup/child[0000]/name = "portGroupA"
/net/vswitch/child[0000]/portgroup/child[0000]/teamPolicy/uplinks[0000]/pnic = "vmnic0"
# vSwitch0->portGroupB
/net/vswitch/child[0000]/portgroup/child[0001]/name = "portGroupB"
/net/vswitch/child[0000]/portgroup/child[0001]/teamPolicy/uplinks[0000]/pnic = "vmnic0"
/net/vswitch/child[0000]/uplinks/child[0000]/pnic = "vmnic0"

# vSwitch1
/net/vswitch/child[0001]/...
/net/vswitch/child[0001]/name = "vSwitch1"
/net/vswitch/child[0001]/numPorts = "128"
# vSwitch1->portGroupC
/net/vswitch/child[0001]/portgroup/child[0000]/name = "portGroupC"
/net/vswitch/child[0001]/portgroup/child[0000]/teamPolicy/uplinks[0000]/pnic = "vmnic1"
# vSwitch1->portGroupD
/net/vswitch/child[0001]/portgroup/child[0001]/name = "portGroupD"
/net/vswitch/child[0001]/portgroup/child[0001]/teamPolicy/uplinks[0000]/pnic = "vmnic1"
/net/vswitch/child[0001]/uplinks/child[0000]/pnic = "vmnic1"

Jetzt wollen wir bewegen portGroupCaus vSwitch1zu vSwitch0, so ist die Konfiguration wie folgt aus :

vSwitch0        --> vmnic0
|--portGroupA
|--portGroupB
|--portGroupC

vSwitch1        --> vmnic1
|--portGroupD

Um dies zu tun, wir:

  1. Identifizieren Sie alle portGroupCZeilen, die mit beginnen /net/vswitch/child[0001]/portgroup/child[0000]. Verschieben Sie diese Einträge mit der vSwitch0Konfiguration nach oben (nicht erforderlich, macht die Bearbeitung jedoch übersichtlicher).
  2. Wechseln Sie /net/vswitch/child[0001]zu /net/vswitch/child[0000]in jeder Zeile (da wir es auf diesen Schalter verschieben).
  3. Stellen Sie fest, dass bereits ein /net/vswitch/child[0000]/portgroup/child[0000]( portGroupA) vorhanden ist, und wechseln Sie portGroupCzu /portgroup/child[0002].
  4. Stellen Sie fest, dass unser Uplink für diese Portgruppe jetzt nicht mehr korrekt ist (falls angegeben), und ändern Sie ihn uplinks[0000]/pnic =von vmnic1zu vmnic0(da dies der vmnic ist, der diesen vSwitch bedient).

Die endgültige Konfiguration sollte folgendermaßen aussehen:

# vSwitch0
/net/vswitch/child[0000]/...
/net/vswitch/child[0000]/name = "vSwitch0"
/net/vswitch/child[0000]/numPorts = "128"
# vSwitch0->portGroupA
/net/vswitch/child[0000]/portgroup/child[0000]/name = "portGroupA"
/net/vswitch/child[0000]/portgroup/child[0000]/teamPolicy/uplinks[0000]/pnic = "vmnic0"
# vSwitch0->portGroupB
/net/vswitch/child[0000]/portgroup/child[0001]/name = "portGroupB"
/net/vswitch/child[0000]/portgroup/child[0001]/teamPolicy/uplinks[0000]/pnic = "vmnic0"
# vSwitch1->portGroupC
/net/vswitch/child[0000]/portgroup/child[0002]/name = "portGroupC"
/net/vswitch/child[0000]/portgroup/child[0002]/teamPolicy/uplinks[0000]/pnic = "vmnic0"
/net/vswitch/child[0000]/uplinks/child[0000]/pnic = "vmnic0"

# vSwitch1
/net/vswitch/child[0001]/...
/net/vswitch/child[0001]/name = "vSwitch1"
/net/vswitch/child[0001]/numPorts = "128"
# vSwitch1->portGroupD
/net/vswitch/child[0001]/portgroup/child[0000]/name = "portGroupD"
/net/vswitch/child[0001]/portgroup/child[0000]/teamPolicy/uplinks[0000]/pnic = "vmnic1"
/net/vswitch/child[0001]/uplinks/child[0000]/pnic = "vmnic1"

Beachten Sie, dass ich auch portGroupDvon portgroup/child[0001]nach geändert habe [0000](da es keinen 0-Eintrag mehr gab.)

1 - Die #Kommentare sind nur zur Erklärung hier; Ich weiß nicht, ob sie in der realen Datei funktionieren und bei der nächsten Konfiguration sowieso weggeblasen werden.

Jonathon Reinhart
quelle