Я не уверен на 100%, но гипервизор может заказать гостевую ОС для выключения или перезагрузки, эмулируя аппаратное событие ACPI, то есть касаясь кнопки питания.
Отсутствует дифференцированный сигнал для выключения или перезагрузите, насколько я знаю, только обычную кнопку питания.
Это означает, что virsh shutdown и virsh reboot должны оба эмулировать нажатие кнопки питания, которое регистрируется демоном ACPI гостевой ОС и приводит к завершению работы (по умолчанию на сервере Ubuntu) или интерактивному приглашению ( на рабочем столе Ubuntu по умолчанию) или, тем не менее, гостевая ОС настроена для обработки этого события.
Единственное различие, по-моему, состоит в том, что после того, как VM остановилась, если команда была virsh shutdown, это остается, но если он был virsh reboot, он снова включается. Это будет означать холодную загрузку, но не теплую перезагрузку.
Однако, глядя на руководство man virsh, кажется, что есть более разные варианты отправки команды перезагрузки, отличной от ACPI-события. Однако, я не могу сказать вам ничего о них, к сожалению.
reboot domain [--mode MODE-LIST]
Reboot a domain. This acts just as if the domain had the reboot
command run from the console. The command returns as soon as it
has executed the reboot action, which may be significantly before
the domain actually reboots.
The exact behavior of a domain when it reboots is set by the
on_reboot parameter in the domain's XML definition.
By default the hypervisor will try to pick a suitable shutdown
method. To specify an alternative method, the --mode parameter can
specify a comma separated list which includes "acpi", "agent",
"initctl", "signal" and "paravirt". The order in which drivers will
try each mode is undefined, and not related to the order specified
to virsh. For strict control over ordering, use a single mode at a
time and repeat the command.