Назад | Перейти на главную страницу

libvirt и опция qemu / kvm -snapshot

Используя 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