Criei várias VMs KVM usando imagens QCOW2.
Cada VM possui seu próprio arquivo qcow2 e não é baseada em nenhum arquivo de backup.
Minha pergunta está especificamente relacionada a instantâneos de imagens QCow2 nessas VMs em execução.
Se eu executar o seguinte comando em uma VM em execução:
qemu-img snapshot -c backup /vms/vm10001.qcow2
O comando acima prejudicará o sistema de arquivos das VMs em execução?
Minha intenção é então converter o instantâneo em uma imagem qcow2 usando o seguinte:
qemu-img convert -s backup /vms/vm10001.qcow2 /vms/output.qcow2
Não consigo usar os comandos "virsh" e, portanto, estou tentando descobrir uma maneira de realizar minha tarefa com qemu-img
Resposta/Atualização 1:
Ok, testei isso em várias de minhas VMs de teste e o procedimento acima não é possível. Você não pode executar qemu-img snapshot
uma VM ativa sem pausá-la.
A única maneira de fazer isso em nós base RHEL é usar:
virsh snapshot-create <dom>
O procedimento acima salvará o estado da VM e chamará internamente qemu-img snapshot -c
. No entanto, isso pode levar algum tempo, o que me leva à minha segunda pergunta
Questão 2 :
virsh snapshot-create <dom> --disk-only --atomic
não é suportado em nós base que são do tipo RHEL (incluindo RHEL 7) porque o qemu-kvm é muito antigo.
Então a única opção é usar virsh snapshot-create <dom>
o que é meio lento.
É possível fazer o seguinte:
virsh suspend <dom>
qemu-img snapshot -c backup /vms/<dom>.qcow2
virsh resume <dom>
A operação acima parece ser muito mais rápida que a criação de instantâneo
Resposta/Atualização 2:
Mesmo a questão 2 acima não é possível. Depois de fazer muita pesquisa, concluí o mesmo.
Questão 3 :
Existe algum método para criar um instantâneo para uma VM on-line com um disco Qcow2 em um nó base RHEL 6/7 e, em seguida, fazer um backup do instantâneo para restauração posterior?
Responder1
Esta não é uma resposta exata, mas mostrará o caminho.
Estamos usando Linux KVM há muito tempo. Antigamente, o qcow2 não suportava instantâneos. Em nosso primeiro host KVM não queríamos usar snapshots LVM e por isso não podíamos fazer backups ao vivo.
Então encontramosFerramentas de cópia dinâmica do Linux.
Usando esta ferramenta; poderíamos congelar todo o sistema de arquivos do host e copiar qcows para discos externos com um script de backup personalizado.
Nosso script de backup era mais ou menos assim;
# Mount Usb
mount /dev/sdb1 /USBDISK
# Mount file system as ro to temp folder
hcp --read-only --mount-point /SNAPSHOT /dev/md1
# Copy files out
cp /SNAPSHOT/*.qcow2 /USBDISK
# Stop Hot Copy
hcp --remove /dev/hcp1
# Remove Usb
umount /USBDISK
Responder2
minha experiência com KVM é bastante limitada, mas estando em uma situação muito semelhante, foi isso que funcionou para mim:
antes de tudo faço um backup da configuração da VM chamada MACHINE:
# virsh dumpxml MACHINE > /path/to/configfile.xml
Então suspendo a VM chamada MACHINE para evitar corrupção na máquina recém-criada:
# virsh suspend MACHINE
Em seguida, crio um instantâneo chamado MACHINE-BAK.qcow2 da VM chamada MACHINE usando o comando qemu-img, mesmo que normalmente seja usado para converter entre formatos:
# qemu-img convert -O qcow2 /path/to/MACHINE.qcow2 /path/to/MACHINE-BAK.qcow2
Em seguida, retomo a operatividade normal da VM original chamada MACHINE:
# virsh resume MACHINE
Aplicando essas etapas simples em um script executado via automação crontab, consigo obter um backup completo periódico de uma VM em execução com tempo de inatividade mínimo (dependendo do tamanho da VM original, pois como dito acima, é melhor suspender o VM original durante a duplicação)