Procurando uma boa maneira de exportar todas as VMs dos nós KVM, para que eu tenha alguns backups enquanto faço a atualização do sistema operacional dos hosts KVM.
Até agora, estou usando um hacky bash oneliner para despejar todas as VMs como xml e listar seus caminhos de disco para fins de cópia:
for vm in $(virsh list --all | egrep -v "ID|---" | awk '{print $2}'); do virsh dumpxml "$vm" > "/root/vm/$vm.xml"; virsh domblklist "$vm" | grep '/' | awk '{print $2}' >> /root/vm/vm_disks.lst; done
Isso funciona bem, mas o virsh só faz saída "humana" AFAIK, então eu tenho que grep/awk meu caminho em torno da saída que não é IMO muito confiável.
Existe alguma maneira limpa de conseguir isso sem a necessidade de um script python com libvirt ?
Atenciosamente.
Exemplo baseado em comentários meus e de @fra-san:
(Eu uso uma mistura de ZFS zvols, qcow2 e arquivos raw para minhas VMs)
Observe a imagem ISO para a VM "stretch". Você pode querer excluir coisas assim de seus backups. Ou desconecte todas as imagens de CD-ROM/DVD das VMs antes de extrair a lista de discos virtuais anexados.
A
ztest
VM tem muitos discos virtuais (principalmente ~ 200 MB, cerca de 1 GB cada) porque é a VM que uso para testar atualizações do ZFS (incluindo compatibilidade do kernel com pacotes de módulos dkms) e para experimentar comandos ZFS antes de usá-los em sistemas reais . Eu também o uso para testar btrfs, LVM, mdadm e outras coisas relacionadas ao disco.Outra alternativa é usar
xml2
em vez dexmlstarlet
. É muito mais simples que xmlstarlet e mais adequado para soluções "hacky" com grep e awk e sed. Ele analisa XML e o converte em um formato orientado a linhas adequado para uso com ferramentas orientadas a linhas.Infelizmente,
xml2
parece ser abandonware nos dias de hoje. Você ainda pode encontrá-lo em algumas distribuições (por exemploapt-get install xml2
, no Debian), mas o upstream parece ter desaparecido. É antigo e sem manutenção e não suporta utf8 (e provavelmente poderia ser substituído por 5 ou 10 linhas de código perl ou python). No entanto, ainda é útil para algumas tarefas. Se você precisar compilá-lo a partir do código-fonte, veja minha pergunta para onde, oh, onde o xml2 foi?BTW, você disse "... então eu tenho alguns backups enquanto faço a atualização do sistema operacional dos hosts KVM" - essa é uma das coisas para as quais os instantâneos são bons. Você pode fazer snapshots com ZVOLs, arquivos qcow2 e LVM. btrfs também suporta instantâneos, mas não para arquivos individuais (e se você estiver usando btrfs para imagens de VM, provavelmente está usando arquivos raw ou qcow2 para os discos virtuais)