Назад | Перейти на главную страницу

Как исправить зависшую виртуальную машину qemu?

У меня есть гипервизор qemu на RHEL 6.4, на котором размещены виртуальные машины, которые довольно часто теряют подключение к сети. Когда виртуальная машина потеряла соединение, я могу просматривать ее и взаимодействовать с ней с помощью virt-manager, но, похоже, я ничего не могу сделать, чтобы восстановить сетевое соединение. Проверка связи с внешними хостами не работает, обновление адреса DHCP не работает и перезапуск сетевой службы не работает.

На этом этапе я могу перезапустить виртуальную машину (либо используя shutdown -r now или используя интерфейс виртуального менеджера). Будет казаться, что виртуальная машина завершает работу правильно, доходит до точки, где появляется сообщение «Остановка системы».

С этого момента виртуальная машина полностью не отвечает. Я не могу получить к нему доступ через virt-manager, virsh показывает состояние виртуальной машины как "в выключенном состоянии", и я не могу уничтожить ее через virsh.

virsh # destroy vmname error: Не удалось уничтожить домен vmname error: Operation failed: не удалось убить процесс qemu с помощью SIGTERM

Это происходило уже несколько раз, и все с теми же симптомами потери сетевого соединения и зависания виртуальной машины после перезагрузки. К сожалению, у меня нет контроля над гипервизором, поэтому я не могу получить доступ к файлам журнала и могу получить только ограниченный объем информации из virsh.

Кто-нибудь видел этот баг? Это вызвано конфигурацией гипервизора или виртуальных машин?

Если у вас нет контроля над гипервизором, вам следует связаться с системным администратором, который владеет им, и попросить его изучить событие и получить соответствующие разделы журнала, связанные с вашей виртуальной машиной. Ни при каких обстоятельствах гость не должен иметь возможность блокировать команду уничтожения из libvirt; это должно быть жесткое отключение питания, такое как выдергивание вилки кабеля питания. Так что это либо ошибка в настройке хоста, либо ошибка в libvirt, в любом случае администратор должен знать об этом.