Estou tentando fazer uma captura instantânea ao vivo usando o KVM conforme este procedimento .
Eu devo ter estragado em algum momento porque estou em um estado que não entendo.
Minha VM é chamada prod
. Foi criado em arquivo /srv/vm/prod.qcow2
.
Aparentemente, não há um instantâneo em execução: estou trabalhando no arquivo base. Eu posso adivinhar porque a data de modificação do arquivo /srv/vm/prod.qcow2
muda a cada minuto ou mais. Além disso, este comando confirma:
# virsh domblklist prod
Target Source
------------------------------------------------
vda /srv/vm/prod.qcow2
E não há nada para bloquear:
# virsh blockcommit prod vda --active --pivot
error: invalid argument: top '/srv/vm/prod.qcow2' in chain for 'vda' has no backing file
No entanto, libvirt mantém o rastreamento de um instantâneo antigo:
# virsh snapshot-list prod
Name Creation Time State
------------------------------------------------------------
snap 2015-06-09 12:11:33 +0200 disk-snapshot
Seu arquivo descritor é /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>
[...]
O arquivo de origem /srv/vm/snap.qcow2
foi excluído.
Considerando o método que estou tentando implementar, é bem provável que esse instantâneo tenha sido criado com o seguinte comando:
virsh snapshot-create-as --domain prod snap --diskspec vda,file=/srv/vm/snap.qcow2 --disk-only --atomic
Não consigo removê-lo:
# virsh snapshot-delete prod snap
error: Failed to delete snapshot snap
error: unsupported configuration: deletion of 1 external disk snapshots not supported yet
Portanto, estou em um estado em que um instantâneo foi criado, aparentemente não é mais usado e não pode ser excluído.
Existe algo que eu possa fazer sobre isso?
Devo me importar ou posso simplesmente ignorá-lo?
Editar
Acabei de remover o descritor de arquivo de captura instantânea.
# systemctl stop libvirt
# mv /var/lib/libvirt/qemu/snapshot/prod/snap.xml /home/jerome
# systemctl start libvirt
Minha VM voltou a funcionar e não vejo mais nenhuma referência ao instantâneo.
# virsh snapshot-list prod
Name Creation Time State
------------------------------------------------------------
Nada no virt-manager também.
Estou bem ou ainda há algumas tarefas domésticas para fazer?
Editar 2
Aparentemente, a passagem -–no-metadata
para virsh snapshot-create-as
evitaria esse problema ao não criar o arquivo .xml, mantendo assim nenhum rastro do instantâneo.
fonte
qemu-img info /srv/vm/prod.qcow2
. Mas não tenho certeza de como remover esse rastro ...Respostas:
O método adequado foi
(Este comando pode ser encontrado no wiki . Eu tentei antes de perguntar aqui, mas falhou devido a um erro de digitação que foi corrigido desde então.)
Não sei o que faz, que não é coberto pela remoção do arquivo .xml enquanto a libvirtd está inativa. Talvez a única diferença seja que não é necessário interromper o libvirtd. Mesmo assim, talvez isso possa evoluir no futuro. De qualquer forma, é recomendável usar a API da libvirt em vez de jogar diretamente com arquivos.
Essa chamada realmente não é necessária se o instantâneo foi criado com o
--no-metadata
argumentoEu obtive esse esclarecimento neste tópico da lista de discussão libvirt-users .
Qualquer pessoa disposta a fazer backups através de instantâneos ao vivo deve ler a página wiki mencionada acima e pode estar interessado no tópico do fórum que responde às minhas perguntas noob e aponta os slides de Eric Blake , bem como esta postagem no blog e comentários a seguir.
fonte