摘要: 本文讲的是解决virsh无法重启和关闭KVM虚拟机,virsh可以通过reboot、shutdown来重启或关闭对应的虚拟机。由于其原理是host通过发送acpi指令来控制虚拟机的电源,如果guest系统没有安装acpi服务器或该服务器没有启动,那么虚拟机将不会重启或关闭,那么只有使用destroy 来强制关闭。
1 命令行virsh reboot vm-name
kvm目前仍不支持reboot命令,'reboot' is not supported by the hypervisor
2 虚拟机内部重启操作不成功,状态为关机,重启失败。
原因配置文件中:
……
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
……
其中<on_reboot> 选项设置为restart则表示在虚拟机内部执行reboot但不关机,如果设置为destroy则表示执行reboot命令后直接关机。
更多参数设置可参考liibvirt官网
3 kvm环境下可以使用shutdown命令让虚拟机关机,但不生效。
virsh shutdown vm-name
由于关机通过acpi电源管理接口来实现的
3.1 首先配置文件里需要有这个选项
<features>
<acpi/>
<apic/>
<pae/>
</features>
3.2 虚拟机内部需要有acpi服务并运行
Windowns的虚拟机一般情况是默认已安装且运行的
linux虚拟机例如Ubuntu虚拟机如果没有安装acpi服务
先执行apt-get install acpid进行安装并启动该服务,即可让虚拟机响应shutdown命令
依此方法通过ubuntu server 10.04.2,redhat6.0企业版,windows xp sp3 ,windows server2003操作系统进行验证均可以实现自然关机。