Используя libvirt, я хочу использовать параметр QEMU -snapshot. Таким образом, когда машина выключается, все сделанные изменения на диске уничтожаются.
Вот руководство для опции -snapshot:
Пишите во временные файлы вместо файлов образа диска. В этом случае необработанный образ диска, который вы используете, не записывается. Однако вы можете принудительно выполнить обратную запись, нажав C-a s.
Существуют аналогичные возможности, которые делают почти то, что я хочу (оверлейные изображения qcow2, резервное хранилище libvirt), но разница в том, что мне нужна свежая среда каждый раз, когда я загружаю виртуальную машину. Это возможно?
Единственный способ добавить параметры командной строки, которые еще не поддерживает libvirt, - это создать сценарий оболочки и изменить конфигурацию вашей виртуальной машины, чтобы использовать ее вместо этого. Например,
# cat >/usr/local/bin/qemu-snapshot <<'END' #!/bin/sh exec /usr/bin/qemu "$@" -snapshot END # chmod +x /usr/local/bin/qemu-snapshot # virsh -c qemu:///system edit my_vm изменение <emulator>/usr/bin/qemu</emulator> к <emulator>/usr/local/bin/qemu-snapshot</emulator>
(Может быть /usr/bin/kvm
или что-то подобное для вас.)
Вам просто нужно прислать монитор kvm commit all
чтобы сделать эквивалент CTRL + a ...
нота
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
Вы придумали, как зафиксировать изменения снимка на диске img? C-a s, похоже, не умеет приседать. даже пробовал, ctrl ctrl ctrl-a s. В virsh также нет команды фиксации.
Если вы догадались, передача будет очень полезна! : D