Plugin VMware VSphere Bacula Enterprise – Guia Rápido

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.

Plugin VMware VSphere Bacula Enterprise – Guia Rápido 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: pt-brPortuguêsenEnglish (Inglês)esEspañol (Espanhol)

Deixe uma resposta