Estoy tratando de hacer una instantánea en vivo usando KVM según este procedimiento .
Debo haberme equivocado en algún momento porque estoy en un estado que no entiendo.
Mi VM se llama prod
. Fue creado en archivo /srv/vm/prod.qcow2
.
Aparentemente, no hay una instantánea en ejecución: estoy trabajando en el archivo base. Puedo adivinar porque la fecha de modificación del archivo /srv/vm/prod.qcow2
cambia cada minuto más o menos. Además, este comando lo confirma:
# virsh domblklist prod
Target Source
------------------------------------------------
vda /srv/vm/prod.qcow2
Y no hay nada que bloquear:
# virsh blockcommit prod vda --active --pivot
error: invalid argument: top '/srv/vm/prod.qcow2' in chain for 'vda' has no backing file
Sin embargo, libvirt mantiene el rastro de una foto antigua:
# virsh snapshot-list prod
Name Creation Time State
------------------------------------------------------------
snap 2015-06-09 12:11:33 +0200 disk-snapshot
Su archivo descriptor es /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>
[...]
El archivo fuente /srv/vm/snap.qcow2
fue eliminado.
Teniendo en cuenta el método que estoy tratando de implementar, es muy probable que esta instantánea se haya creado con el siguiente comando:
virsh snapshot-create-as --domain prod snap --diskspec vda,file=/srv/vm/snap.qcow2 --disk-only --atomic
No puedo eliminarlo:
# virsh snapshot-delete prod snap
error: Failed to delete snapshot snap
error: unsupported configuration: deletion of 1 external disk snapshots not supported yet
Así que estoy en un estado donde se creó una instantánea, aparentemente ya no se usa y no se puede eliminar.
¿Hay algo que pueda hacer al respecto?
¿Debería importarme o puedo ignorarlo?
Editar
Acabo de eliminar el descriptor del archivo de instantánea.
# systemctl stop libvirt
# mv /var/lib/libvirt/qemu/snapshot/prod/snap.xml /home/jerome
# systemctl start libvirt
Mi VM está funcionando nuevamente y ya no veo ninguna referencia a la instantánea.
# virsh snapshot-list prod
Name Creation Time State
------------------------------------------------------------
Nada en virt-manager tampoco.
¿Estoy bien o todavía hay algo de limpieza que hacer?
Editar 2
Aparentemente, pasar -–no-metadata
a virsh snapshot-create-as
evitaría este problema al no crear el archivo .xml, sin dejar rastro de la instantánea.
fuente
qemu-img info /srv/vm/prod.qcow2
. Pero no estoy seguro de cómo eliminar ese rastro yo mismo ...Respuestas:
El método apropiado fue
(Este comando se puede encontrar en la wiki . Lo probé antes de preguntar aquí, pero falló debido a un error tipográfico que se ha corregido desde entonces).
No sé qué hace que no se cubra eliminando el archivo .xml mientras libvirtd está inactivo. Quizás la única diferencia es que no es necesario detener libvirtd. Aun así, tal vez esto podría evolucionar en el futuro. En cualquier caso, se recomienda usar la API de libvirt en lugar de jugar con archivos directamente.
De hecho, esta llamada no es necesaria si la instantánea se creó con el
--no-metadata
argumento.Obtuve esta aclaración en este hilo de la lista de correo libvirt-users .
Cualquiera que esté dispuesto a hacer copias de seguridad a través de instantáneas en vivo debe leer la página wiki mencionada anteriormente y puede estar interesado en el hilo del foro que responde a mis preguntas novatas y señala las diapositivas de Eric Blake , así como esta publicación de blog y los siguientes comentarios.
fuente