ESXi 将端口组移动到不同的 vswitch

ESXi 将端口组移动到不同的 vswitch

在 ESXi 中,如何将现有端口组移动到不同的 vSwitch?

这似乎是一种人们经常期望的做法,但却没有现成的解决方案:

在此处输入图片描述

因此,我有一个大型 vSwitch,其中有大约 8 个不同的端口组(每个端口组分配有 4-6 个虚拟机)。由于网络变化,我需要将此 vSwitch 拆分为多个 vSwitch(每个 vSwitch 都有自己的物理适配器)。我只想将现有端口组(包括 VLAN ID)移动到正确的(新)vSwitch。

有没有一种简单的方法可以做到这一点,而无需重新配置整个系统?如果有一些 XML 文件存储了这些信息,那么只需 5 秒钟即可完成剪切和粘贴操作。

答案1

免责声明:这当然不是受支持/推荐的做法。不要在生产环境中这样做。为了安全起见,我关闭了所有虚拟机,并断开了 vSphere 连接。

首先,你需要访问 ESXi 控制台。然后,通过编辑就可以轻松完成此操作/etc/vmware/esx.conf

对于每个虚拟交换机,有如下条目:

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

顺便说一下,您可以在那里重命名 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]/...
...

要移动端口组从一个虚拟交换机到另一个,你只需改变它所/net/vswitch/child[XXXX]/在的节点,确保尊重portgroup孩子们现有的一切。换句话说,一旦你移动一个端口组到另一虚拟交换机,您可能需要更改其子编号。

笔记:你必须重新编号全部相关行(与该端口组相对应的所有行)。

笔记2:如果teamPolicy端口组存在条目,则可能需要确保相关设置与要将其移动到的 vswitch 的uplinks[nnnn]/pnic =实际设置相匹配。vmnicN

编辑文件后,我只需重新启动 ESXi 服务器:$ reboot。可能有一些服务或进程需要重新启动,但我认为重新启动是最简单、最安全的方法。


例子

假设我们有两个 vSwitch,每个 vSwitch 都有一个vmnic上行链路和两个端口组:

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

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

相关条目esx.conf可能看起来像这样

# 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"

现在,我们要从 移动portGroupCvSwitch1vSwitch0因此配置如下:

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

vSwitch1        --> vmnic1
|--portGroupD

为此,我们:

  1. 识别所有portGroupC以 开头的行/net/vswitch/child[0001]/portgroup/child[0000]。将这些条目随vSwitch0配置一起上移(不是必需的,但可以使编辑时更清晰)。
  2. 在每一行上更改/net/vswitch/child[0001]/net/vswitch/child[0000](因为我们将其移动到该开关)。
  3. 发现已经有/net/vswitch/child[0000]/portgroup/child[0000]portGroupA),则portGroupC改为/portgroup/child[0002]
  4. 意识到该端口组的上行链路现在不正确(如果指定),并uplinks[0000]/pnic =从更改vmnic1vmnic0(因为这是为该 vSwitch 提供服务的 vmnic。)

最终配置应如下所示:

# 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"

请注意,我还从 更改portGroupDportgroup/child[0001][0000]因为不再有 0 条目。)

1 –#这里的评论仅用于解释;我不知道它们是否在真实文件中起作用,而且无论如何在下一次配置时都会被震惊。

相关内容