4

В ESXi, как переместить существующую группу портов в другой vSwitch?

Это, кажется, часто желаемое действие, но без легкодоступного решения:

Итак, у меня есть один большой vSwitch с примерно 8 различными группами портов (каждая с назначенными 4-6 ВМ). Из-за изменений в сети мне нужно разбить этот vSwitch на несколько vSwitch (каждый со своим физическим адаптером). Я хочу просто переместить существующие группы портов (включая идентификаторы VLAN) в правильный (новый) vSwitch.

Есть ли простой способ сделать это без перенастройки всего этого? Если бы там был какой-то XML-файл, в котором он хранится, это была бы 5-секундная операция вырезания и вставки.

1 ответ1

3

Отказ от ответственности: это, конечно, не поддерживаемый / рекомендуемый способ сделать это. Не делай этого на производственной коробке. Я сделал это, когда все виртуальные машины были отключены, а vSphere отключен, чтобы быть в безопасности.

Сначала вам нужно получить доступ к консоли ESXi. Затем это можно легко сделать, отредактировав /etc/vmware/esx.conf .

Для каждого vSwitch есть такая запись:

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

Кстати, там вы можете переименовать vSwitches.

Группы портов являются узлами под 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]/...
...

Чтобы переместить группу портов из одного vSwitch в другой, вы просто измените, какой узел /net/vswitch/child[XXXX]/ находится под ним, убедившись, что portgroup дочерние группы портов там уже есть. Другими словами, когда вы перемещаете группу портов в другой vSwitch, вам может потребоваться изменить его дочерний номер.

Примечание. Необходимо перенумеровать все соответствующие строки (все строки, соответствующие этой группе портов).

Примечание 2: Если для группы портов присутствуют записи teamPolicy , вам может потребоваться убедиться, что соответствующие параметры uplinks[nnnn]/pnic = соответствуют фактическому vmnicN для vswitch, в который вы перемещаете его.

После редактирования файла я просто перезагрузил сервер ESXi: $ reboot . Вместо этого может быть какой-то сервис или процесс, который можно было бы перезапустить, но я подумал, что перезагрузка была самым простым и безопасным способом.


пример

Скажем, у нас есть два vSwitch каждый с одной восходящей vmnic и две группы портов:

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

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

Соответствующие записи в esx.conf могут выглядеть примерно так 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"

Теперь мы хотим переместить portGroupC из vSwitch1 в vSwitch0 , поэтому конфигурация выглядит следующим образом:

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. Поймите, что наш uplink для этой группы портов теперь неверен (если указан), и измените uplinks[0000]/pnic = с vmnic1 на vmnic0 (потому что это vmnic, обслуживающий этот vSwitch.)

Конечный конфиг должен выглядеть так:

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

Обратите внимание, что я также изменил portGroupD с portgroup/child[0001] на [0000] (так как больше не было записи 0).

1 - # комментарии здесь только для пояснения; Я не знаю, работают ли они в реальном файле, и, в любом случае, сдуваются при следующей конфигурации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .