Libvirtを使用して、QEMUの「-snapshot」オプションを使用したいと思います。そうすれば、マシンがシャットダウンしたときに、行われたすべてのディスク変更が破棄されます。
-snapshotオプションのマニュアルは次のとおりです。
ディスクイメージファイルの代わりに一時ファイルに書き込みます。この場合、使用するrawディスクイメージは書き戻されません。ただし、C-a sを押すと、強制的に書き戻すことができます。
私が望むことをほぼ実行する同様の機能(qcow2オーバーレイイメージ、libvirtバッキングストア)が存在しますが、違いは、VMを起動するたびに新しい環境が必要なことです。これは可能ですか?
Libvirtがまだサポートしていないコマンドラインスイッチを追加する唯一の方法は、ラッパースクリプトを作成し、代わりにそれを使用するようにVMの構成を変更することです。例えば、
# 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 change <emulator>/usr/bin/qemu </ emulator> to <emulator>/usr/local/bin/qemu-snapshot </ emulator>
(それは可能性があります /usr/bin/kvm
またはそのようなもの。)
Kvmのモニターを送信する必要がありますcommit all
CTRL + a ..と同等にします。
スナップショットの変更をディスクimgにコミットする方法を理解しましたか? C-asはしゃがんでいないようです。試しても、ctrl ctrl ctrl-as。 virshにもcommitコマンドはありません。
あなたがそれを理解したならば、それを伝えることは非常に役に立ちます! :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>
残念ながら、このhapen:
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引数を渡すためのはるかにクリーンな方法です