Backup da execução do KVM qcow2 VPS

7

Eu quero um método robusto de fazer backup do KVM VPS do arquivo qcow2, durante a execução. Depois de procurar por um longo tempo, descobri que podemos usar rsync para backup ao vivo. Eu usei o seguinte comando para o rsync:

rsync -avh /vms/base.qcow2 /backup/backup.qcow2

Funcionou corretamente. Mas estou com medo de corromper a imagem do backup qcow2 se o backup for feito enquanto o VPS estiver sendo alterado devido a operações de gravação e exclusão (como instalar um novo software ou atualizar).

Portanto, fazer backup do instantâneo do VPS ao vivo parece ser uma opção mais interessante.

Eu usei os seguintes comandos para fazer backup da execução do VPS:

1.Criar instantâneo:

qemu-img create -f qcow2 -b base.qcow2 snapshot.qcow2

2.Convert instantâneo no formato de imagem bruta (.img):

qemu-img convert -O raw snapshot.qcow2 /backup/backup.img

Para restaurar o VPS:

3. Converta a imagem bruta na imagem qcow2:

qemu-img convert -O qcow2 /backup/backup.img base.qcow2

Então podemos iniciar o VPS pelo comando virsh create base.xml .

Mesmo que esse método também funcione perfeitamente, ainda não tenho certeza se esse é o método adequado para fazer backup da execução do VPS. Eu encontrei documentação legal nos comandos qemu-img aqui e aqui . Mas eles não mencionaram nada sobre a conversão de instantâneos de VPS ao vivo em imagem bruta.

Qual método é mais adequado para backup VPS ao vivo? A conversão de instantâneo em imagem bruta é segura?

Se eu puder obter uma documentação detalhada sobre como os arquivos de snapshot e base se comportam em determinadas condições, isso será muito útil.

Talvez possamos também converter a imagem base qcow2 em arquivo de backup bruto, em vez de converter o instantâneo. Então o fluxo de comando será:
1. Crie um instantâneo
2. Converter base qcow2 em backup de imagem bruta
3. Confirmar alterações de instantâneo na imagem base
4. Excluir instantâneo

Eu tentei isso e funcionou bem no pequeno VPS de 5GB. Mas existe alguma possibilidade de erro ou corrupção de VPS quando o tamanho do VPS é enorme?

Obrigado antecipadamente ...

    
por Bosco D'mello 18.08.2015 / 09:57

2 respostas

11

A única coisa que falta é desativar o sistema de arquivos guest antes de tirar a captura instantânea, para garantir que ela seja consistente. Isso pode ser feito com virsh domfsfreeze se você estiver usando o libvirtd.

Por exemplo, a ordem das operações é:

# Freeze guest filesystems
virsh domfsfreeze $VM_NAME

# Create snapshot
qemu-img create -f qcow2 -b $VM_NAME.qcow2 snapshot.qcow2

# Thaw guest filesystems
virsh domfsthaw $VM_NAME

# Take backup from snapshot
qemu-img convert -O raw snapshot.qcow2 /backup/backup.img

Note que isso requer que o qemu-guest-agent esteja instalado e em execução na VM. Dependendo das opções de distribuição e instalação, isso pode ou não ser o caso.

O qemu-guest-agent também é extensível; você pode adicionar scripts a ele para suportar um software específico. Por exemplo, inclui um script de exemplo para colocar o MySQL em um estado consistente.

    
por 18.08.2015 / 15:49
1

Há outra abordagem que envolve a criação de instantâneos temporários durante o backup e a confirmação deles depois.

# Create a temporary backup snapshot which records changes during backup
virsh snapshot-create-as vm backup-tmp --disk-only --atomic --quiesce --no-metadata --diskspec sda,file=/tmp/sda_temp.qcow2
# Now the main image is frozen and the changes are going into /tmp/sda_temp.qcow2

# Do your backup here
...

# Now we commit back data from temp snapshot into the main image
virsh blockcommit vm sda --active --pivot
# Remove the temporary snapshot file
rm /tmp/sda_temp.qcow2

Para mais informações, consulte: link

    
por 08.11.2018 / 19:38