Недавно поймал интересную ситуацию.
Потребовалось освободить один из узлов кластера, построенного на VMmanager KVM 5.21.11 (да, старенький). Большинство виртуальных машин уехало “живой” миграцией, а несколько осталось. При попытке отмигрировать их внешне ничего не происходило.
Изучая логи, я наткнулся на такую ошибку
migratevm ERROR Global error: Type: 'libvirt_default' Object: '' Value: '
Просматривая все сообщения этого треда в логах, были найдены и причины
virt TRACE Fail libvirt message: 'internal error: No <source> 'bridge' attribute specified with <interface type='bridge'/>'
Как оказалось, для этих виртуальных машин в настройках не был указан сетевой мост.
Лечится это на уровне libvirt следующим образом.
- Получаем список виртуальных машин на узле: virsh list –all
Id Name State ---------------------------------------------------- 123 vm123 running 124 vm124 running 125 vm125 running
- Делаем дамп настроек в для libvirt виртуальной машины vm123: virsh dumpxml vm123 >vm123.xml
- Открываем полученный xml-файл любимым редактором: vi vm123.xml
- Находим параметр <interface type=’bridge’> и добавляем <source bridge=’vmbr0’/>, чтобы получилось что-то типа
... <interface type='bridge'> <mac address='52:12:12:1a:10:12'/> <source bridge='vmbr0'/> <bandwidth> ...
- Файл сохраняем и заливаем обратно: virsh define vm123.xml
Domain vm123 defined from vm123.xml
- Теперь на мастер-ноде применяем настройки для VMmanager: /usr/local/mgr5/sbin/mgrctl -m vmmgr vm.redefine elid=<ID>
где <ID> – идентификатор виртуальной машины в VMmanager
- После перезагрузки виртуальной машины миграция работает без ошибок.
Проблема с миграцией виртуальной машины в VMmanager