我在虚拟机中有一个 9p 挂载点。我用 拍摄虚拟机状态的快照savevm <snapshot>
,停止虚拟机,然后使用该快照重新启动它(使用kvm -loadvm <snapshot>
)。当我尝试通过umount
或ing 与ls
挂载点交互时,虚拟机会在内核空间中挂起。
我用来启动快照的完整命令行如下所示:
qemu-system-x86_64 -nographic -monitor telnet::6440,server,nowait \
-m 1280M -balloon virtio -bios \
external_sources/seabios/out/bios.bin \
-drive file=testvm/deb.instance.integrate,if=virtio \
-loadvm loaded \
-virtfs local,path=/tmp/mymount,security_model=none,mount_tag=mymount
这种情况发生在内核版本为 2.6.32 和 2.6.38 的 64 位 Debian squeeze 客户机上。在内核版本为 2.6.32-30 的 Ubuntu 10.04 amd64 主机上,qemu-kvm 的版本为 0.14.50。
我不知道如何进一步诊断这个问题;目前我唯一的选择是用某种网络文件系统替换 9p。
答案1
根据 qemu-devel 邮件列表,virtio-9p 目前根本不支持实时迁移,因此 savevm/loadvm 无法工作。
答案2
- 这与 kvm 本身无关 - qemu 管理快照。
- savevm/loadvm 基本上就是将数据迁移到文件中。我从未在 9p 上尝试过,因为我对它不太熟悉,但如果 FS 模型涉及时间,这可能是问题所在。
- ubuntu 作为 kvm 主机已被证明(至少对我而言)不是最理想的。不知道是包装还是操作系统本身,但对于我来说,在 fedora 上相同版本的 kvm 和 qemu 一直很稳定。
- 我会首先进行以下操作:a) 在 fedora 或 rhel 机器上进行测试 b) 发布到 linux-kvm 邮件列表 c) 与支持 9p 的人员核实其是否能够经受实时迁移、休眠和挂起。