使用libvirt,我想使用QEMU的“-snapshot”选项。 这样,当机器closures时,所有的磁盘更改都被破坏。
这里是-snapshot选项的手册:
写入临时文件而不是磁盘映像文件。 在这种情况下,您使用的原始磁盘映像不会被写回。 但是,您可以通过按下Ca来强制回写。
类似的能力几乎可以做我想做的(qcow2覆盖图像,libvirt后台存储),但不同之处在于我每次启动虚拟机时都需要新的环境。 这可能吗?
添加libvirt不支持的命令行开关的唯一方法是创build一个包装器脚本,并改变你的虚拟机的configuration来代替它。 例如,
#cat> / usr / local / bin / qemu-snapshot <<'END'
#!/ bin / sh的
exec / usr / bin / qemu“$ @”-snapshot
结束
#chmod + x / usr / local / bin / qemu-snapshot
#virsh -c qemu:/// system edit my_vm
更改
<模拟器>的/ usr /斌/ QEMU </仿真器>
至
<模拟器>的/ usr / local / bin中/ QEMU快照</仿真器>
(这可能是/usr/bin/kvm或类似的东西。)
你只需要发送kvm的监视器commit all相当于CTRL + a …
你有没有想过如何提交快照更改磁盘img? Ca s似乎没有做下蹲。 甚至尝试过,按住ctrl ctrl-a s。 virsh也没有提交命令。
如果你知道了,那么顺带一提,将会非常有帮助! :d
注意
xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0
在标题,只是检查。 这几乎成功!
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'> <name>...</name> <memory unit='KiB'>...</memory> <os> <type arch='x86_64' machine='pc-i440fx-trusty'>hvm</type> </os> <qemu:commandline> <qemu:arg value='-snapshot'/> </qemu:commandline> <devices> <emulator>/usr/bin/kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/tmp/some/existing/image.qcow2'/> <target dev='hda' bus='ide'/> <!-- https://bugzilla.redhat.com/show_bug.cgi?id=832194 <transient /> --> </disk> </devices> </domain>
不幸的是,这个开始:
internal error: process exited while connecting to monitor: qemu-system-x86_64: -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1: Device needs media, but drive is empty qemu-system-x86_64: -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1: Device initialization failed. qemu-system-x86_64: -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1: Device 'ide-hd' could not be initialized
但无论如何,这是传递自定义qemu参数更简洁的方法