Перейти к основному содержанию

ESXi — дублирование MAC адреса на адаптере VMK0

VMware

При установке ESXi автоматически создаётся виртуальный адаптер vmk0. И у него есть MAC адрес, который копируется с первого использующегося физического интерфейса. А потом не меняется, даже если физически сменить сетевую карту. Потом эту карту вставляем в другой сервер, устанавливаем ESXi и получаем vmk0 с тем же самым MAC адресом. И это очень плохо. Два гипервизора с одинаковым MAC адресом начинают глючить.

Добиться такого же эффекта можно разными способами:

  • Использовать одну и туже сетевую карту при установке ESXi.
  • Раскатывать ESXi на сервера из одного образа.
  • Вручную изменить файл конфигурации ESXi.
  • Использовать ESXi на флешке и переткнуть в другой сервер.
  • Вставить диск с ESXi в другое шасси.
  • Заменить материнскую плату со встроенной сетевой картой.
  • Поменять сетевые карты.

Вот так и я переставил диски с VMFS в другой сервер, перенастроил его, сохранив ОС ESXi. А старый сервер какое-то время поработал под Windows, затем снова был переделан в гипервизор. И вот тут-то начались проблемы.

Интерфейс управления стал пропадать на время. vCenter — терять хост. Виртуалки перестали мигрироваться. Ошибки, разные, к примеру:

Failed waiting for data. Error 195887179. Connection reset by peer.

VMotionStream [168574494:1553682792364674222] timed out while waiting for disk 1's queue count to drop below the maximum limit of 32768 blocks. This could indicate either network or storage problems preventing proper block transfer.

Failed to copy source (/vmfs/volumes/60ffef52-911280f8-2ea4-48df37728a30/kafka01/kafka01_1.vmdk) to destination (/vmfs/volumes/59db4f58-78b7c9bc-f177-5820b1e03c90/kafka01/kafka01_1.vmdk): Timeout.

Failed to copy one or more disks.

A fatal internal error occurred. See the virtual machine's log for more details.

The migration transfer failed during the receive operation to socket 73780444154944: received 0/36 bytes: Connection reset by peer.

vMotion migration [168574494:1553682792364674222] failed to read stream keepalive: Connection reset by peer
Failed waiting for data. Error 195887179. Connection reset by peer.

vmware

Сетевики помогли обнаружить проблему с MAC адресами. Я начал ковыряться и нашёл корень зла.

Правильные настройки на первом гипервизоре. MAC адрес на физическом адаптере 48:df:37:72:8a:30:

vmware

MAC адрес на vmk0 первого сервера 48:df:37:72:8a:30:

vmware

MAC адреса совпали.

Правильные настройки на втором гипервизоре. MAC адрес на физическом адаптере 98:03:9b:3c:b4:62:

vmware

MAC адрес на vmk0 второго сервера 48:df:37:72:8a:30:

vmware

Проблема, на обоих серверах у vmk0 один и тот же MAC адрес.

Решение проблемы

Проблема известная:

https://kb.vmware.com/s/article/1031111

Наиболее правильное решение — автоматически распознавать новый MAC адрес физического адаптера и использовать его. Для этого используется команда:

esxcfg-advcfg -s 1 /Net/FollowHardwareMac

Мешает то, что после этого потребуется перезагрузка. А у меня на хосте работают виртуалки, их нельзя отключать. Виртуалки можно смигрировать, однако миграция отваливается с ошибкой, которую я описал выше. Что делать?

Создаём ещё один адаптер vmk1. Включаем на нём vMotion, а на vmk0 отключаем vMotion. Можно было бы и Management переключить, но не хочется возиться с адресами и DNS.

vmware

Настраиваем на vmk1 сеть, чтобы можно было с него мигрировать виртуалки. Теперь виртуалки мигрируются без ошибок. Освобождаем от них гипервизор. Удаляем адаптер vmk1.

Выполняем (по SSH если работает, или в ESXi Shell):

esxcfg-advcfg -s 1 /Net/FollowHardwareMac

vmware

Перезагружаем сервер.

vmware

Другое дело!

 

Похожие материалы

Тестируем 10G SFP+ платы HP и Mellanox на серверах HP Proliant DL360 Gen9

Задача - проверить пропускную способность 10G сети между виртуальными машинами на разных гипервизорах.