Может ли KVM автоматически приостанавливать или отключать гостей при отключении хоста?
У нас есть хост CentOS 5.5 KVM, который запускает гостей с различными версиями CentOS и, возможно, другими ОС позже.
Мы хотели бы иметь возможность (а) автоматически отправлять завершение ACPI всем гостям или (б) приостанавливать всех гостей на диск при выключении хоста.
Существует ли стандартный метод для выполнения любого из этих случаев, или это ситуация, когда вас самих бросают? Спасибо!
4 ответа
Да.
virsh shutdown
команда (или другие реализации "выключения" с использованием libvirt, как в virt-manager
) инструктирует гостевую ОС корректно завершать работу. Со страницы руководства:
shutdown domain-id
Gracefully shuts down a domain. This coordinates with the domain
OS to perform graceful shutdown, so there is no guarantee that it
will succeed, and may take a variable length of time depending on
what services must be shutdown in the domain.
The exact behavior of a domain when it shuts down is set by the
on_shutdown parameter in the domain’s XML definition.
С KVM это должно отправить событие ACPI system_powerdown.
В Fedora и RHEL 6, libvirt-guests
Скрипт инициализации выходит из коробки, настроенной для приостановки всех гостей при выключении системы. Это не особенно волшебно, поэтому можно скопировать это в CentOS 5 с небольшими изменениями.
Насколько я знаю, такого стандартного скрипта для CentOS нет. Можно кодировать, но немного опасно, так как вам нужно обращаться с гостями, которые долго отключаются. Простое их уничтожение после истечения времени ожидания может уничтожить данные, а ожидание их может привести к зависанию вашего выключения.
Вместо этого лучше отключить гостей вручную перед перезагрузкой. Некоторое время у меня был скрипт, который заменял выключение и перезагрузку. Этот скрипт предупредил меня, если были запущенные гости (просто lc в списке виртуальных машин) и заблокировал команду, если были запущенные гости.
Гости KVM - просто процессы пользовательского пространства. у вас должен быть какой-то мониторинг процесса. Наиболее распространенным из них является libvirt (он разработан RedHat, так что я думаю, он должен быть доступен в CentOS).