作为技术圈子里的人尤其是码农,都少不了要与虚拟机打交道,不少喜欢折腾的人会去玩kvm。上周搬砖的过程中,突然遇到了一个小问题---kvm开出来的Windows虚拟机休眠选项神秘消失了。

kvm虚拟机ip怎么设置(我的kvm虚拟机睡眠选项哪去了)(1)

刚好团队需要用这个功能,找回这个菜单的事就落到我头上了。但是查了一圈,没找到我要的答案,有参考价值的帖子基本没有,那就只能自己慢慢研究了。

经过验证,发现Windows系统的虚拟机电源按钮中都没休眠的选项,从设置中去试着添加休眠按钮,居然也没有。执行powercfg -h on手动开启,最后系统提示固件不支持。

kvm虚拟机ip怎么设置(我的kvm虚拟机睡眠选项哪去了)(2)

但是,显然我的宿主机固件是支持休眠的,况且kvm开出来的虚拟机并不是直接使用的宿主机固件,所以原因基本上能够确定是来源于kvm。

接下来用vim查看虚拟机的xml文件,就会发现一个奇怪的东西

kvm虚拟机ip怎么设置(我的kvm虚拟机睡眠选项哪去了)(3)

先给虚拟机关机,然后将enable的值改为yes,用virsh define命令来重新定义一下修改后的xml文件,最后重启一下虚拟机,就会发现休眠选项出现了。

点击休眠,系统正常进入休眠状态。virsh list查看,发现虚拟机已经进入pmsuspend状态,最后执行virsh dompmwakeup命令,虚拟机正常唤醒,齐活!

kvm虚拟机ip怎么设置(我的kvm虚拟机睡眠选项哪去了)(4)

kvm虚拟机不能正常休眠的问题已经解决了,之所以不能休眠是因为kvm默认没有给虚拟机开启从guest os内部休眠的功能,需要手动去xml文件里面开启。

,