Visão Geral
Este Guia Rápido apresenta várias técnicas de backup de máquinas virtuais KVM com o plug-in exclusivo Enterprise Bacula (EBacula), que fornece os seguintes recursos, entre outros:
- Backup de máquinas virtuais (VMs) clientless
- Recuperação Granular no Nível de Arquivo
- Descoberta automática de VMs
- Suporte de Nível de Backup Completo, Diferencial e Incremental
- Estados-Membros de backup em ‘em execução’, ‘em pausa’ ou até mesmo ‘desativado’
- A capacidade de incluir ou excluir arquivos do backup da VM
O plug-in KVM foi projetado para ser usado quando o hipervisor usa armazenamento local para discos das máquinas virtuais e libvirtd para gerenciamento das mesmas. No entanto, o EBacula também possui outros plugins específicos para o Proxmox, Redhat RHEV/Ovirt e OpenStack.
Instalação
Instale o cliente de backup EBacula, Libs e o pacote KVM em seu hipervisor. Considere a distribuição, versão e arquitetura do Linux, como em:
rpm -ivh install bacula-enterprise-libs-10.0.5-1.el7.x86_64.rpm rpm -ivh install bacula-enterprise-client-10.0.5-1.el7.x86_64.rpm rpm -ivh install bacula-enterprise-kvm-plugin-10.0.5-1.el7.x86_64.rpm
Observação: o plug-in do KVM usa instantâneos (snapshots) ao fazer backup de VMs convidadas. Durante um instantâneo, os blocos modificados pela VM guest precisam ser copiados no espaço temporário, o espaço necessário depende da atividade do disco convidado. Por padrão, o espaço é alocado em /var/tmp, portanto, certifique-se de que haja algum espaço para isso.
Ferramentas de virtualização (qemu-ga) devem ser instaladas no convidado e talvez seja necessário configurar as VMs convidadas para desativar o sistema de arquivos corretamente durante a fase de instantâneo.
Configuração
Cliente de Backup
O daemon libvirtd deve ser iniciado e acessível. O File Daemon do servidor do hipervisor KVM deve ter acesso local, montado na rede ou SAN, para onde as imagens KVM são armazenadas. No servidor host KVM, o comando a seguir deve listar todas as VMs locais:
# virsh list --all Id Name State ---------------------------------------------------- 1 gentoo running 2 centos paused - debian shut off
Se a especificação de um URI usando o parâmetro -c do comando virsh for necessária, o parâmetro uri= correspondente também será necessário no comando do plug-in mais adiante.
# virsh -c qemu:///system list --all Id Name State ---------------------------------------------------- 1 gentoo running 2 centos paused - debian shut off
O script install-kvm.sh é projetado para testar a configuração do KVM do hypervisor. O script deve informar um “OK” no final, como no exemplo. Caso contrário, entre em contato com seu suporte.
# /opt/bacula/scripts/install-kvm.sh check Enter the libvirt URI to connect libvirtd [qemu:///system]: Trying to list VMs using virsh -r -c 'qemu:///system' list --all, it should not ask for a password. Id Name State ---------------------------------------------------- 1 gentoo running 2 centos paused - debian shut off Did you have to enter a password to get the VM list? [y/N]: N Enter the name of a guest that will be used to test the KVM plugin requirements: gentoo Trying to mount gentoo filesystem as /tmp/bee-kvm-gentoo.2vsYz Mount OK. Attempting to list 10 files from gentoo root filesystem. /tmp/bee-kvm-gentoo.2vsYz/ /tmp/bee-kvm-gentoo.2vsYz/bin /tmp/bee-kvm-gentoo.2vsYz/bin/bb /tmp/bee-kvm-gentoo.2vsYz/bin/dd /tmp/bee-kvm-gentoo.2vsYz/bin/cp /tmp/bee-kvm-gentoo.2vsYz/bin/df /tmp/bee-kvm-gentoo.2vsYz/bin/du /tmp/bee-kvm-gentoo.2vsYz/bin/ip /tmp/bee-kvm-gentoo.2vsYz/bin/ln /tmp/bee-kvm-gentoo.2vsYz/bin/ls Unmounting gentoo filesystem. OK: All tests are good.
Prepare sua conexão Cliente para Diretor (configure seu Nome do Diretor real no bacula-fd.conf, copie e cole a senha para o anexo do Diretor). Reinicie o Bacula Client para aplicar as alterações.
Director Bacula
Anexe o cliente ao diretor (crie um novo recurso de configuração do cliente usando a senha copiada da última etapa).
Crie um novo FileSet com as opções de plug-in do KVM desejadas. O exemplo da Figura 1 fará backup de todas as VMs do hipervisor. Você pode usar a GUI do BWeb, se desejar.
Figura 1. Uma Configuração de Plug-in do KVM para Fazer backup de Todas as VMs
Neste segundo exemplo, é possível incluir VMs específicas para este FileSet:
FileSet { Name = FS_KVM Include { Options { Signature = MD5 Compression = LZO } Plugin = "kvm: host=centos,gentoo" } }
Se um FileSet fizer backup de várias VMs, elas aparecerão na árvore de seleção de arquivos de restauração com o nome da VM como o primeiro diretório para restauração, como o seguinte:
* list files jobid=100 +---------------------------------+ | filename | +---------------------------------+ | ... | | /centos/boot | | /centos/boot/grub | | /centos/boot/grub/menu.lst | | ... | | /gentoo/etc/passwd | | /gentoo/etc/group | | /gentoo/etc/hosts | | ... | + --------------------------------+
Se um FileSet KVM contiver apenas uma máquina virtual, o caminho de cada arquivo não será prefixado com o nome da máquina virtual, como mostrado abaixo. Esse comportamento padrão pode ser substituído usando o parâmetro de plug-in KVM host_prefix. O seguinte FileSet:
FileSet { Name = FS_KVM_centos Include { Plugin = "kvm: host=centos" } }
Resultará na seguinte saída de comando list jobs do bconsole:
* list files jobid=101 +---------------------------------+ | filename | +---------------------------------+ | ... | | /boot | | /boot/grub | | /boot/grub/menu.lst | | ... | + --------------------------------+
A seleção de Inclusão ou Exclusão de arquivos ou diretórios do FileSet é ignorada ao usar o plug-in KVM. Para Incluir ou Excluir diretórios específicos, o próximo exemplo deve ser usado.
FileSet { Name = FS_KVM_etc_home Include { Plugin = "kvm: host=centos include=/etc include=/home exclude=/home/tmp" } }
As opções atuais do Plugin são detalhadas da seguinte forma:
Option | Default | Description |
---|---|---|
uri | O parâmetro URI especifica como se conectar ao hipervisor. A página de documentação em http://libvirt.org/uri.html lista os valores suportados. | |
host | Máquina virtual para backup. É possível especificar uma lista de hosts separados por ‘,’ (sem espaços). | |
include | Especifique arquivos ou diretórios para backup. É possível especificar múltiplos parâmetros include = na linha de comando do plugin. | |
exclude | Especifique arquivos ou diretórios para excluir. É possível especificar múltiplos parâmetros exclude = na linha de comando do plugin. | |
host_prefix | No | Prefixar todos os arquivos com o nome da máquina virtual (obrigatório ao fazer backup de várias máquinas virtuais na mesma tarefa). |
host_sep | , | Especifique um separador de host usado no parâmetro do host. host_sep =: host = h1: h2: h3 |
abort_on_error | No | Abortar o trabalho se ocorrer um erro durante o trabalho. Por padrão, se uma VM não estiver acessível, por exemplo, a tarefa será encerrada com JobStatus OK (T) e alguns JobErrors. |
Crie um novo Job de backup usando o cliente KVM e o novo FileSet. Recarregue ou reinicie o daemon do Director para aplicar as alterações.
Restore
Para restaurar um arquivo, basta usar o comando bconsole restore, selecionar o trabalho de backup e executar um trabalho de restauração tradicional.
Considerações
- Ao fazer um backup no nível do controlador de domínio (hypervisor) do KVM, alguns recursos do Bacula, como executar scripts (RunScripts) no cliente, não são suportados. O dump de um banco de dados MySQL em uma VM guest antes do backup exigirá o uso de scripts personalizados usando SSH, por exemplo, ou instalar um Cliente Bacula dentro do sistema operacional da VM.
- Os CD-ROMs devem ser desconectados das VMs antes de tentar um backup com o plug-in do KVM. Além disso, o sistema pode relatar
Referências
- KVM Plugin Using Bacula Enterprise Edition Whitepaper, Bacula Systems. http://baculasystems.com
Disponível em: PortuguêsEnglish (Inglês)Español (Espanhol)