Я пытаюсь сделать снимок в реальном времени с помощью 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, так же как это сообщение в блоге и следующие комментарии.