Este guia rápido apresenta várias técnicas e estratégias para fazer backup de hosts VMware ESXi usando o plugin vSphere do Bacula Enterprise.
O plug-in permite o backup completo de máquinas virtuais e usa a tecnologia CBT (Changed Block Tracking) do VMware para garantir que apenas os blocos que foram alterados desde o Full inicial e/ou o último Backup incremental ou diferencial sejam copiados para o fluxo de backup, fornecendo mais eficiência backups e carga de rede reduzida.
O plugin fornece, dentre outros, os seguintes recursos:
- Backups online baseados em VADP.
- Rotina de criação automática de Jobs para cada VM, com filtros por nome, tags etc. (Integração BWeb vSphere).
- Backups de nível de imagem completos, diferenciais e incrementais de máquinas virtuais.
- Restauração instantânea de uma VM ou granular de um único arquivo (com o Plugin Single-Item de Bacula Enterprise).
- Restauração completa e automática de imagens de máquinas virtuais.
- Restauração de arquivos vmdk para um diretório alternativo.
- Suporte a TCP/IP e SAN (FC/ISCSI) no acesso ao armazenamento de dados do VMware.
Backup de imagem de VM com o Plug-in vSphere do Bacula Enterprise
O plug-inVMware Vsphere do Bacula permite backup client-less das máquinas virtuais completas. Isso significa que não é realmente necessário instalar um cliente Bacula nos sistemas operacionais das VMs. No entanto, também é possível usar o Cliente Bacula e plugins de aplicações específicas (por exemplo, os do banco de dados) para fornecer mais opções de restauração (por exemplo, restaurar um único banco de dados).
Com a estratégia de nível de backup de imagem, o plug-in vSphere do Bacula Enterprise Edition salvará os discos das VMs no nível básico, no contexto do VMware/vSphere. O plug-in vSphere do Bacula entrará em contato com o servidor host VMware ESXi para ler e salvar o conteúdo dos discos da sua máquina virtual usando NBD (Network Block Device) ou acesso SAN.
Ao acessar diretamente uma imagem vmdk armazenada no seu armazenamento de dados, o Bacula não precisa percorrer o sistema de arquivos Client para abrir/ler/fechar/fazer stat dos arquivos, portanto, consome menos recursos na infraestrutura ESXi do que um backup em cada máquina convidada.
A restauração granular instantânea de arquivos e de VMs é proporcionada por outro plugin que acompanha o do VSphere sem custos adicionais. Este se chama Single-Item Restore do Bacula Enterprise, objeto de outro Guia Rápido/Whitepaper específico.
Instalação
Pacotes estão disponíveis para RedHat Enterprise, CentOS e muitos outros. Eles devem ser instalados junto com um Bacula Client (bacula-fd). Entre em contato para obtê-los. Exemplo:
# rpm -ivh bacula-enterprise-libs-8.8.3-1.el7.x86_64.rpm # rpm -ivh bacula-enterprise-client-8.8.3-1.el7.x86_64.rpm # rpm -ivh bacula-enterprise-vsphere-8.8.3-1.el7.x86_64.rpm # rpm -ivh bacula-enterprise-vsphere-vixdisk-6.0.2-3566099.1.el7.x86_64.rpm
O Bacula Client e o Plugin podem ser instalados em qualquer máquina com a rede ou acesso à SAN nos nós vCenter ou ESXi, para executar o backup da VM. No entanto, se você decidir também instalar o plug-in de Single Item Restore (opcional), essa máquina DEVE SER a mesma do Storage Daemon do Bacula para poder executar a restauração de arquivo granular.
Libera porta de firewalls necessárias. O Plugin se conecta ao vSphere pelas portas 443 e 902/TCP.
O acesso à rede do vSphere deve ser configurado em /opt/bacula/etc/vsphere_global.conf.
% cat /opt/bacula/etc/vsphere_global.conf [vsphere] username = root password = vspherepassword server = 192.168.0.1 url = https://192.168.0.1/sdk thumbprint = 34:F5:0F:10:82:59:EF:2D:DB:96:CC:5B:C4:66:33:83:DC:91:AF:09
O valor do thumbprint do vCenter pode ser conseguida com o seguinte comando:
/opt/bacula/bin/vsphere-ctl thumbprint 192.168.0.1
Observe que você pode especificar vários servidores vSphere no arquivo vsphere_global.conf, como no exemplo a seguir:
% cat /opt/bacula/etc/vsphere_global.conf [vsphere] username = root password = vspherepassword server = 192.168.0.1 url = https://192.168.0.1/sdk default_datastore = datastore1 default_restore_host = esx1 thumbprint = 34:F5:0F:10:82:59:EF:2D:DB:96:CC:5B:C4:66:33:83:DC:91:AF:09 [vsphere2] username = root password = vspherepassword server = 192.168.0.2 url = https://192.168.0.2/sdk default_datastore = abigdatastore thumbprint = 59:F5:0F:10:82:59:EF:2D:DB:96:CC:5B:C4:66:33:83:DC:91:AF:C4
Para testar o plug-in do vSphere, você pode usar o seguinte comando como usuário do Bacula FileDaemon (geralmente root):
# /opt/bacula/bin/vsphere-ctl update 1: 3 squeeze2 2: 4 squeeze.esx
O comando vsphere-ctl update deve imprimir uma lista de todas as máquinas virtuais definidas no seu servidor ESXi. Caso contrário, verifique se suas credenciais no vsphere-global.conf estão definidas corretamente.
O comando list permite exibir informações que são detectadas em hosts ESX e datastores.
# /opt/bacula/bin/vsphere-ctl list Display host list available and their datastores: esxi.lan datastore1 datastore2 ...
Conforme mostrado na tabela 1, uma seção [global] também pode ser definida no vsphere_global.conf com opções que se aplicam a todas as conexões do vSphere. Outras diretivas também são listadas e descritas.
Seção | Opção | Requerida | Default | Descrição |
---|---|---|---|---|
global | keep_generation | No | 100 | Número máximo de backups entre os Full |
global | profile_all_vm | No | vsphere_all_vm.profile | Nome do arquivo interno usado para armazenar informações do perfil da máquina virtual |
global | root_directory | No | /opt/bacula/working/vsphere | Diretório de trabalho do plug-in do vSphere |
global | vddk_path | No | /opt/bacula/bin/vddk | |
vsphere | username | Yes | Nome de usuário permitido para se conectar ao vSphere | |
vsphere | password | Yes | Senha do usuário permitido a conectar-se ao vSphere | |
vsphere | server | Yes | Servidor vSphere ESXi usado para backup | |
vsphere | url | Yes | URL do servidor do vSphere ESXi usada para chamada de SOAP | |
vsphere | default_datastore | No | datastore1 | Datastore padrão para restauração |
vsphere | default_restore_host | No | Servidor ESX padrão usado para restauração, se vários estiverem disponíveis no vCenter |
Tabela 1. Opções do vSphere plugin vsphere_global.conf
Configuração do Backup
Depois que o Bacula Client é anexado ao diretor, é hora de criar um novo FileSet. Isso pode ser feito via texto ou usando a GUI do bweb, conforme exibido na Figura 1.
Figura 1. Tela do bweb – vSphere FileSet Edit Plugin
A única opção de plug-in realmente necessária é o vsphere one, que executará o backup de todas as VMs encontradas.
FileSet { Name = vSphere Include { Options { Signature=MD5 } Plugin = "vsphere:" } }
Para executar o backup de uma única máquina, basta especificar seu nome na diretiva host =:
FileSet { Name = vSphere Include { Options { Signature=MD5 } Plugin = "vsphere: host=vm_name" } }
Múltiplas linhas “Plugin = vsphere: etc.” podem ser especificadas, e as diretivas host_include ou host_exclude podem ser usadas para fornecer padrões RegExp Java que correspondam aos nomes das VMs.
Algumas opções atuais do plug-in do vSphere estão listadas e descritas na Tabela 2.
Opção | Requerida | Default | Descrição | Exemplo |
---|---|---|---|---|
host | No | Nome da VM | host=srv1 | |
host_include | No | Padrão RegExp de nomes das VM para inclusão no backup | host_include=srv3 | |
host_exclude | No | Padrão RegExp de nomes das VM para exclusão do backup | host_exclude=srv[12] | |
disk_exclude | No | Número do disco VSphere a excluir | disk_exclude=0,2,4 | |
keep_cbt | No | Não tentar ativar o CBT | keep_cbt | |
server | No | vsphere | Especifique um servidor vsphere | server=vsrv2 |
debug | No | Habilitar depuração | debug |
Tabela 2. Opções do Plugin do vSphere
Nota: muitas outras opções podem ser encontradas no portal oficial Bsysdoc, da Bacula Systems.
Finalmente, crie uma nova tarefa de backup para fazer backup de um FileSet com uma, algumas ou várias máquinas. É NECESSÁRIO habilitar a opção Job Bacula Accurate (Precisão).
É possível testar o novo trabalho de backup e o FileSet com o comando estimate do Bacula:
*estimate listing job=vmware1 Using Catalog "MyCatalog" Connecting to Client 127.0.0.1-fd at 127.0.0.1:8102 -rwx------ 0 root root 0 2012-01-10 18:22:16 /@vsphere/3-squeeze2 -rw-r----- 1 root root 1923 2012-01-10 18:22:19 /@vsphere/3/vmbkp_generation.profile -rw-r----- 1 root root 4693 2012-01-10 18:22:19 /@vsphere/3/3.ovf -rw------- 1 root root 2147483648 2012-01-10 18:22:20 /@vsphere/3/0.bvmdk -rw------- 1 root root 104857600 2012-01-10 18:22:21 /@vsphere/3/1.bvmdk -rwx------ 1 root root 0 2012-01-10 18:22:26 /@vsphere/79-squeeze.esx ... 104857600 2012-01-10 18:22:30 2000 OK estimate files=10 bytes=2,462,069,574
Execute o trabalho de backup. É possível verificar as mensagens de geração de snapshots das VMs no log do Bacula.
Configurações Situacionais e Solução de Problemas
Problemas de Backup de Backup Incremental/Diferencial
Para verificar se um disco virtual tem o CBT ativado, abra o vSphere Client, selecione uma máquina virtual desligada sem snapshots.
- Clique com o botão direito do mouse na máquina virtual e clique em Editar configurações.
- Clique na guia Opções.
- Clique em geral na seção Avançado e, em seguida, clique em Parâmetros de configuração. A caixa de diálogo Parâmetros de configuração é aberta.
- Clique em Adicionar linha.
- Adicione o parâmetro ctkEnabled e, em seguida, defina seu valor como true.
- Clique em Add Row, adicione scsi0: 0.ctkEnabled e defina seu valor como true.
Nota: scsi0:0 em scsi0:0.ctkEnabled indica o dispositivo SCSI atribuído ao disco rígido que é adicionado à máquina virtual. Todo disco rígido adicionado à máquina virtual recebe um dispositivo SCSI que parece semelhante a scsi0:0, scsi0:1 ou scsi1:1.
Durante o primeiro backup completo, o plug-in do vSphere tentará habilitar o CBT automaticamente se a máquina virtual estiver desligada. Para desabilitar esse recurso, use a opção keep_cbt na string de comando do Plugin.
Plugin = "vsphere: keep_cbt host=guest1"
Nenhum snapshot deve existir em uma máquina virtual no momento da ativação da CBT. Para detalhes, consulte http://kb.vmware.com/kb/1033816.
Usando o Acesso SAN para Backup (LANFree)
Para usar o método de transporte SAN, o servidor de backup no qual o plug-in vsphere está instalado deve ter acesso a todos os LUNs exportados para o servidor ESX.
Quando seus discos estiverem visíveis como /dev/sda, /dev/sdb,… o plug-in do vSphere abrirá cada disco para obter o UUID e compará-lo com o que o servidor ESX está fornecendo.
Ao mapear uma LUN para o Servidor do Bacula, necessário scanear os novos discos:
for i in /sys/class/scsi_host/host*/scan ; do echo - - - > $i ; done
Ao usar o iSCSI, o comando lsscsi os exibirá como:
% lsscsi [5:0:0:0] disk IET VIRTUAL-DISK 0 /dev/sdb
Você pode verificar o método de transporte utilizado na log do backup.
Arquivos de Depuração
De acordo com a Tabela 3, os seguintes arquivos de rastreio fornecem informações, dependendo do erro do plug-in Bacula vSphere.
Arquivo | Componente | Nota |
---|---|---|
/opt/bacula/*/vsphere-ctl.log | vsphere-ctl | Este arquivo é produzido pelo programa Java vsphere-ctl que envia comandos para o ESXi/vCenter servidor. |
/opt/bacula/working/vsphere/*/*/*.log | vddk | Este arquivo é produzido pelo programa vddk do C ++ que lê/grava no VMDK. |
/opt/bacula/working/*.trace | bacula-fd | Este arquivo é produzido pelo File Daemon do Bacula ao ativar a depuração (comando setdebug). |
Tabela 3. Arquivos de Depuração do Plug-in do vSphere
Excluindo Discos Específicos da VM do Backup
Para excluir um disco específico, você pode ativar o modo independente no console do vSphere, ou usando a opção disk_exclude no FileSet de backup da VM.
Restauração
Restaurando para Uma Nova Máquina Virtual
Usando bweb (por exemplo), no menu Restauração Web, escolha uma tarefa de backup terminada do vSphere para restauração. Na seleção de arquivos, marque um ou mais diretórios de arquivos das VMs que você deseja restaurar.
Se você executar a restauração usando a opção de restauração where=/ do Bacula, o vSphere Plugin tentará restaurar seus discos em uma nova máquina virtual criada durante a restauração com os mesmos atributos (discos, controlador, tipo de CPU, …).
Se uma máquina com o mesmo nome existir, outra será criada com um nome modificado, embora esse comportamento possa ser alterado em futuras versões do plug-in para substituir a VM se a opção Replace=always da restauração Bacula estiver configurada.
O host ESX e o datastore que serão usados para restaurar seu convidado serão detectados automaticamente, mas você pode alterá-lo durante as Opções avançadas de restauração do plugin ou configurar os destinos padrão no vsphere_global.conf (consulte default_restore_host e default_datastore).
Observe que você precisa ter pelo menos uma VM configurada em seu servidor ESX para restaurar uma VM do Bacula automaticamente. Planejamos remover essa limitação em uma versão futura.
Bacula não irá recriar todas as configurações de rede durante a restauração, você precisará verificar a configuração da rede.
Restaurando Máquinas em um Disco Local
Ao usar where =/caminho/diretório na opção de restauração, o Plugin restaurará automaticamente os arquivos selecionados para este local. Em seguida, é possível importar máquinas para o vCenter manualmente ou, se desejar, você pode montar a imagem localmente usando a ferramenta VMWare vmware-mount ou o qemu-nbd e executar restaurações em nível de arquivo. Essas operações são automatizadas e executadas graficamente com o Plugin de Single-Item Restore do Bacula.
Também é possível copiar a imagem raw para qualquer dispositivo ou montá-lo e restaurar arquivos diretamente.
modprobe nbd max_part=16 qemu-nbd -c /dev/nbd0 /tmp/0.bvmdk partprobe /dev/nbd0 fdisk -l /dev/nbd0 mount /dev/nbd0p1 /mnt/image # example ls /mnt/image
Resolução de Problemas
Se você tiver problemas na restauração a exemplo da importação do OVF, como:
# Bacula Job log: ... 2018-10-01 22:02:24 pocbacula-fd JobId 148: Error: No default OVF defined, aborting... 2018-10-01 22:02:24 pocbacula-fd JobId 148: Error: Unable to restore the host. null 2018-10-01 22:02:24 pocbacula-fd JobId 148: Warning: Unable to create VM, logs are in /opt/bacula/working/vsphere-ctl-0.log 2018-10-01 22:02:24 pocbacula-fd JobId 148: Error: Import of the OVF structure probably failed... ... # and cat /opt/bacula/working/vsphere-ctl-0.log .. 2018-10-02 12:19:28 WARN GlobalManager:446 - W: Line 1: Unable to parse 'backing.exclusive' for attribute 'key' on element 'Config'. 2018-10-02 12:19:28 WARN GlobalManager:485 - The operation is not supported on the object. 2018-10-02 12:19:28 WARN GlobalManager:487 - Could not obtain nfc lease. ..
Certifique-se que seu usuário do VSphere consegue criar máquinas e movê-las para os ESXi e datastores necessários através da console do VCenter.
Observação: o backup de templates do VSphere não é permitida pela API da VMware.
O log do VCenter (/var/log/vmware/vpxd/vpxd.log) pode fornecer informações úteis para problemas no backup das VMs. De igual forma, o uso da palavra-chave debug na linha Plugin do FileSet (vsphere: debug …) criará um log de depuração na máquina que executa o Plugin em:
/opt/bacula/working/vsphere/vm-xxx/xxx/0.log
Substitua os xxx pelo ID da VM e pela sequencia incremental dos backups com debug ativo.
É possível aumentar o nível de depuração e até fazer um tuning do backup do VSphere ao criar um arquivo /opt/bacula/etc/vixdisklib.conf. Exemplo:
vixDiskLib.nfc.LogLevel=7 vixDiskLib.san.LogLevel=7 vixDiskLib.transport.LogLevel=7 tmpDirectory=/tmp logDirectory=/tmp
Mais opções do Vixdisklib estão disponíveis em: https://pubs.vmware.com/vsphere-51/index.jsp?topic=%2Fcom.vmware.vddk.pg.doc%2FvddkFunctions.6.11.html
Referência
VMware Backup Using Bacula Enterprise Edition – https://www.baculasystems.com
Disponível em: PortuguêsEnglish (Inglês)Español (Espanhol)