QEMU/KVM 保存/恢复后无法启动我的虚拟机

QEMU/KVM 保存/恢复后无法启动我的虚拟机

我必须重启主机服务器,但我不想停止正在运行的虚拟机之一。所以我做了以下事情:

virsh save VM保存虚拟机状态并在稍后使用以下命令恢复: virsh restore VM。一切正常,所以我可以再次访问我的虚拟机。与此同时,我删除了运行时创建的文件,virsh save因为我认为(我仍然认为)一旦恢复虚拟机就不再需要了。

一小时后,我的虚拟机冻结了,我没能再次启动它。保存和恢复正在运行的虚拟机的正确方法是什么?

答案1

那么对于你的问题,“保存和恢复正在运行的虚拟机的正确方法是什么?”你几乎完全搞定了。使用 保存virsh save VM并使用 恢复virsh restore VM将执行你想要的操作——即将内存保存到磁盘,然后停止 VM(请参阅此链接)。

当您的虚拟机冻结时,我相信如果您没有删除状态文件,您就能够恢复(首先取决于虚拟机故障的根本原因)。

我通常不会将内存保存到状态文件中,因为我的用例运行不依赖内存的持久、无状态服务。如果我需要关闭,我通常只需运行它virsh destroy VM,然后在必要时启动它。但是,这一切都取决于您自己的用例。

如果你担心再次丢失机器,你可能还想考虑使用快照备份虚拟机。例如:

virsh snapshot-create-as --domain {VM-NAME} --name "{SNAPSHOT-NAME}"

查看 NixCraft更多细节。


无论如何,为了让虚拟机在冻结后运行,您可以简单地取消定义损坏的虚拟机,并通过更新新创建的虚拟机的 XML 配置文档将其原始现有映像重新连接到新虚拟机。首先,拆除原始虚拟机:

:~$ virsh destroy OriginalVM
:~$ virsh undefine OriginalVM

构建新的虚拟机之后,停止它并访问配置:

:~$ virt-install --virt-type kvm --name NewVM --memory 4096 --disk size=1 --vcpus 4 --location /yadda/yadda.iso --network bridge=br0 --os-type=linux --so-on-and-so-forth
:~$ virsh destroy NewVM
:~$ virsh edit NewVM

然后,在编辑 XML 文件时通过键入搜索“磁盘”/disk并更新源文件的路径:

 <disk type='file' device='disk'>
  <driver name='qemu' type='raw'/>
  <source file='/update_to/path_of/OriginalVM.img'/>

保存并退出(:w:q或简单地:x)后,您应该能够执行virsh start NewVM,然后通过 VNC、控制台或 ssh 访问运行映像的新 VM。

您还可以尝试克隆你的虚拟机,尽管我自己还没有尝试过:

virt-clone --connect=qemu:///system -o srchost -n newhost -f /path/to/newhost.qcow2

相关内容