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

Удалить «сиротский» снимок libvirt

Я пытаюсь сделать снимок в реальном времени с помощью KVM в соответствии с эта процедура.

Должно быть, в какой-то момент я напортачил, потому что нахожусь в состоянии, которого не понимаю.

Моя виртуальная машина называется prod. Он был создан в файле /srv/vm/prod.qcow2.

Судя по всему, запущенного снапшота нет: работаю над базовым файлом. Я могу догадаться, потому что дата изменения файла /srv/vm/prod.qcow2 меняется каждую минуту или около того. Кроме того, эта команда подтверждает это:

# virsh domblklist prod
Target     Source
------------------------------------------------
vda        /srv/vm/prod.qcow2

И блокировать нечего:

# virsh blockcommit prod vda --active --pivot
error: invalid argument: top '/srv/vm/prod.qcow2' in chain for 'vda' has no backing file

Однако libvirt сохраняет след старого снимка:

# virsh snapshot-list prod
 Name                 Creation Time             State
------------------------------------------------------------
 snap                 2015-06-09 12:11:33 +0200 disk-snapshot

Его файл дескриптора /var/lib/libvirt/qemu/snapshot/prod/snap.xml:

<domainsnapshot>
  <name>snap</name>
  <state>disk-snapshot</state>
  <creationTime>1433844693</creationTime>
  <memory snapshot='no'/>
  <disks>
    <disk name='vda' snapshot='external' type='file'>
      <driver type='qcow2'/>
      <source file='/srv/vm/snap.qcow2'/>
    </disk>
  </disks>
[...]

Исходный файл /srv/vm/snap.qcow2 был удален.

Учитывая метод, который я пытаюсь реализовать, весьма вероятно, что этот снимок был создан с помощью следующей команды:

virsh snapshot-create-as --domain prod snap --diskspec vda,file=/srv/vm/snap.qcow2 --disk-only --atomic

Не могу удалить:

# virsh snapshot-delete prod snap
error: Failed to delete snapshot snap
error: unsupported configuration: deletion of 1 external disk snapshots not supported yet

Итак, я нахожусь в состоянии, когда моментальный снимок был создан, по-видимому, больше не используется и не может быть удален.

Что я могу с этим поделать?

Должен ли я волноваться или я могу просто игнорировать это?

редактировать

Я только что удалил дескриптор файла снимка.

# systemctl stop libvirt
# mv /var/lib/libvirt/qemu/snapshot/prod/snap.xml /home/jerome
# systemctl start libvirt

Моя виртуальная машина снова работает, и я больше не вижу ссылки на снимок.

# virsh snapshot-list prod
 Name                 Creation Time             State
------------------------------------------------------------

В virt-manager тоже ничего.

Я в порядке или мне еще нужно поработать?

Редактировать 2

Видимо, проходя -–no-metadata к virsh snapshot-create-as позволит избежать этой проблемы, не создав файл .xml, таким образом не сохраняя следа снимка.

Правильный метод был

virsh snapshot-delete prod --metadata snap

(Эту команду можно найти в вики. Я попробовал это, прежде чем спрашивать здесь, но это не удалось из-за опечатки, которая с тех пор была исправлена.)

Я не знаю, что он делает, что не покрывается удалением файла .xml, когда libvirtd не работает. Возможно, единственная разница в том, что останавливать libvirtd не нужно. Даже в этом случае, возможно, это может измениться в будущем. В любом случае рекомендуется использовать API libvirt, а не напрямую играть с файлами.

Этот вызов действительно не нужен, если снимок был создан с --no-metadata аргумент.

Я получил это разъяснение в эта тема из список рассылки libvirt-users.

Любой, кто хочет делать резервные копии с помощью живых снимков, должен прочитать вышеупомянутую вики-страницу и может быть заинтересован в ветке форума, которая отвечает на мои вопросы о новичках и указывает на шлепанцы от Eric Blake, так же как это сообщение в блоге и следующие комментарии.