Excluir instantâneo "órfão" da libvirt

11

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.qcow2muda 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.qcow2foi 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-metadatapara virsh snapshot-create-asevitaria esse problema ao não criar o arquivo .xml, mantendo assim nenhum rastro do instantâneo.

Jérôme
fonte
1
Depois de excluir o descritor do arquivo de captura instantânea, ainda deve haver alguma evidência de uma captura instantânea existente na própria imagem da VM que pode ser verificada qemu-img info /srv/vm/prod.qcow2. Mas não tenho certeza de como remover esse rastro ...
sdittmar 30/01
@ditditmar, você pode entrar em contato com a lista de discussão libvirt-users (veja minha resposta) para obter uma resposta precisa.
Jérôme

Respostas:

16

O método adequado foi

virsh snapshot-delete prod --metadata snap

(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-metadataargumento

Eu 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.

Jérôme
fonte