Под капотом · Виртуализация · Работа и остановка
Перезагрузка
Пользователь перезагружает гостя, не перезапуская процесс QEMU. Вот какую команду он использует:
Команда
virsh reboot vm1
После выполнения команды сбрасывается только гость - процесс QEMU и файловые дескрипторы остаются на месте.
-
пользователь 1. Пользователь вводит команду перезагрузки
virDomainReboot(dom)
Это не reboot изнутри гостя: сброс инициируется снаружи, и гость получает его как нажатие reset.
-
libvirt 2. Демон просит QEMU сделать сброс
QMP system_reset
По умолчанию QEMU делает system_reset - жёсткий сброс. Флаги ACPI_POWER_BTN, GUEST_AGENT и PARAVIRT меняют путь: тогда гость узнаёт о перезагрузке сам.
-
QEMU 3. Сбрасывается состояние гостя
CPU и RAM сбрасываются загрузчиком процесс и fd сохраняются
Отличие от destroy: процесс QEMU не перезапускается, меняется только гость.
-
гость 4. Гость загружается заново
прошивка → загрузчик → ОС # uptime гостя с нуля
Uptime процесса QEMU продолжается - это видно в ps.