Fazendo backup de convidados qcow2 kvm

13

Não consigo encontrar nenhuma informação boa sobre como fazer backup de convidados qcow2 kvm. Não estou realmente interessado no estado de execução dos convidados, apenas no sistema de arquivos. Esta pergunta sugere o uso, savevmmas que cria um instantâneo no local. Eu gostaria de fazer backup do sistema de arquivos remotamente.

Existe uma maneira melhor do que:

  1. suspender a máquina virtual virt_machine # pause
  2. rsync --sparse /home/vm/image.qcow2 /tmp/image.dec_14_2010.qcow2 # copie a imagem na mesma unidade
  3. retomar virt_machine
  4. rsync --sparse /tmp/image.dec_14_2010.qcow2 ssh: // backup @ backupmachine: / vmbackups

Existem algumas desvantagens nisso. Primeiro, copiar um grande arquivo de imagem leva um tempo (relativamente) longo. Em segundo lugar, sempre devo ter espaço suficiente para fazer backup de minhas máquinas. Isto não é o ideal. Existem outras maneiras melhores de gerenciar backups do KVM?

Obrigado.

Oitenta e oito
fonte

Respostas:

7

Eu sugeriria o recurso de instantâneo do qemu-nbd:

qemu-nbd --snapshot --connect=/dev/nbd0 image.qcow2

então monte / dev / nbd0p1 (partição 1), rsync, desmonte e finalmente desconecte:

qemu-nbd --disconnect / dev / nbd0

phhe
fonte
5

Imagem suja com isso (sua pausa provavelmente pode ajudar, mas ainda pode não ser totalmente consistente):

Faça um instantâneo no sistema de arquivos LVM que contém o arquivo esparso qcow2 (novamente assumindo que você tem espaço para o instantâneo LVM)

Monte o instantâneo do LVM.

Monte o controle remoto usando sshfs.

Copie para o ponto de montagem sshfs usando cópia esparsa (cp --sparse = always src dest)

Menos tempo para copiar, mas ainda levará o tempo inteiro se a imagem estiver cheia.

Os backups de dados da VM provavelmente são uma ideia melhor (menos espaço / tempo). Trate os vm individuais como hosts regulares para backup / restauração - ou seja, obtenha o que você precisa e mantenha um conjunto de stub vm ​​sem os dados para voltar a funcionar rapidamente.

ax25
fonte
Interessante, obrigado. Eu não tenho LVM no topo do meu sistema de arquivos, para simplificar. Eu preferiria copiar a imagem inteira porque isso me permitiria ter um failover em espera pronto para o caso de a máquina falhar a qualquer momento.
EightyEight
1
Sem problemas. O LVM evita que você tenha que pausar a VM e permitir que você faça uma captura instantânea enquanto ela continua em execução.
ax25
3

Pessoalmente, tive um tempo MUITO difícil com esse problema e constatei que, mesmo quando desativados, os backups de convidados eram frequentemente esquisitos. Lembre-se: se você não está tentando restaurar regularmente esses backups, não tem idéia se eles funcionam.

Depois de muita experimentação, eu fiz o backup completo da imagem e usei uma solução tradicional de backup de rede que poderia ser usada para servidores bare metal. No meu caso, fomos com o BackupPC, que é antigo, mas super confiável. Em cada servidor, configurei a solução de backup para os aplicativos específicos em uso. Por exemplo sqldump para MySQL, plugin para Joomla, etc.

É uma PIA, mas é muito mais rápida e muito confiável.

hdave
fonte
Obrigado @hdave. Sinto que, com essa abordagem, estou perdendo um dos principais benefícios das VMs, a contenção. Para restaurar, eu teria que reinstalar tudo manualmente e configurar. Não é realmente a abordagem que quero adotar. No entanto, obrigado de qualquer maneira, é uma técnica válida.
EightyEight
100% concordam que é uma dor real. Se você quebrar essa noz, deixe-nos saber como você fez isso!
Hdave
@ Oitenta e oito: Eu recomendo um software de gerenciamento de configuração como Chef ou Puppet. É muito mais flexível e também menos doloroso se você deseja configurar um segundo servidor idêntico (físico ou virtual, não importa). O Chef possui plugins para quase todos os hipervisores e pode ajudá-lo a provisionar e configurar um host. Dessa forma, você tem o benefício de usar menos espaço para backups (uma VM inteira é maior em comparação com conjuntos de dados específicos) e um tempo de implantação mais rápido em novos ambientes. Além disso, o CM é como documentação de infraestrutura em código.
Rafael Bugajewski 23/08
2

Não importa onde você faça o instantâneo - LVM ou qcow2, a VM ainda precisará ser desativada antes de você tirá-lo. Caso contrário, você perderá dados e imagens corrompidas.

dyasny
fonte
não mais do que você faria se você puxasse o cabo de alimentação?
1
nem mais, nem menos, é claro :)
dyasny
pensando um pouco mais sobre isso, interromper o domínio não adiciona nada - de qualquer forma, o instantâneo é 'consistente com falhas', nada mais, nada menos, estou certo?
errr, defina "consistente com falhas". O sistema operacional convidado pode ter alguns dados de bordo destinados ao disco v, que serão perdidos se você puxar o plugue. Teoricamente, esses dados podem ser gravados no instantâneo após serem colocados no ar, mas há uma boa razão para que os instantâneos ao vivo em todas as plataformas virtuais incluam desativação / descongelamento nos agentes convidados. Outrossim, se os dados não é perdido, ele vai ainda acabar no instantâneo em vez da imagem base, que derrota o propósito de PIT
dyasny
"consistente com travamento" significa "tão consistente quanto você esperaria em um travamento" iiuc - isto é, depender de diários etc. e aceitar perda de dados devido à falta de fsync oportuno. "existe uma boa razão para que instantâneos ao vivo em todas as plataformas virtuais incluam desativação / descongelamento nos agentes convidados", como eu entendo, o bom motivo é exatamente o mesmo que tirar um instantâneo LVM - você sabe diferente? O KVM não parece sincronizar antes do quiesce mais do que um instantâneo LVM faria? Obviamente, se você não estiver usando o LVM para capturar instantâneos, seria tolo para não ficar inativo - mas isso é diferente e não é o que você está dizendo.