Soluções de backup e recuperação para XenServer

Software de backup fácil e rápido para XenServer da Bacula Systems 

A tecnologia da Bacula Systems de backup e recuperação de desastres para XenServer traz uma rapidez e conveniência nunca vistas para os usuários Xen, tudo projetado para tornar o backup das VMs Xen mais fácil e sem a necessidade de passos intermediários.

A integração nativa do Bacula Enterprise com o Xen proporciona uma recuperação bare metal da máquina virtual, enquanto sua capacidade de fazer backup de dados a nível de guest simplifica a proteção de dados de aplicações críticas. O backup pode ser feito para uma VM guest em qualquer estado (em funcionamento ou parada). A recuperação de arquivo individual também está disponível.

O Bacula usa a API Xen Server para acessar e fazer backup de máquinas virtuais. Ele traz uma ampla variedade de recursos, funcionalidades e automatização para o ambiente Xen, incluindo backups incrementais e diferenciais. Uma descrição detalhada das funcionalidades do Bacula Enterprise para XenServer (Citrix Hypervisor) segue abaixo:

Recursos para XenServer do Bacula

  • Backup online instantâneo de qualquer VM guest
  • Backups diferenciais e incrementais
  • Recuperação de arquivo individual
  • Snapshots de guests baseados no VSS para solicitações de consulta também baseadas no VSS
  • Backup total a nível de imagem
  • Capacidade de restaurar a imagem completa da máquina virtual
  • Capacidade de restaurar o arquivo da VM para o diretório alternativo
  • Utiliza imagens em disco bruto e configuração de OVA
  • Suporta a restauração de formatos antigos de backup
  • Restauração completa de logs de trabalho

O Bacula também exibe informações úteis sobre os recursos disponíveis do XenServer, que poderiam simplificar sua configuração das operações de backup e restauração, como por exemplo:

  • Lista de nomes de VMs guests
  • Lista de UUIDs de VMs guests
  • Lista de Repositórios de Armazenamento do XenServer

Benefícios da solução de backup para XenServer do Bacula 

É importante ter uma estratégia de backup para XenServer que vá além do uso de scripts a nível de linha de comando ou shell, que não oferecem alternativas ou benefícios em termos de:

  • Granularidade no uso do backup e restauração de VMs do Citrix XenServer
  • Execução de diferentes níveis de backup de VMs do Citrix XenServer
  • Facilidade de recuperação dos dados de VMs do Citrix Xen
  • Agendamento de backups para Citrix XenSever

O Bacula Enterprise permite que você administre e execute o backup de VMs do XenServer configuradas em diversos ambientes, sejam eles físicos, remotos ou em nuvem.

Backup e Restauração de Operações do XenServer

(Observação: todas as seções abaixo estão em revisão, devido ao módulo ter acabado de ser atualizado com novos recursos)

Backup

A operação de backup de uma única VM guest do XenServer requer os seguintes passos:

  • Encontrar e apagar quaisquer snapshots de backups antigos ou parados, se forem encontrados.
  • Criar um novo snapshot da VM guest do Bacula e prepará-la para o backup.
  • Executar o comando de exportação de VM do XenServer e salvar os dados em um storage daemon do Bacula.
  • Eliminar o snapshot da VM guest do Bacula.

Os backups do XenServer podem ser feitos para uma VM guest em qualquer estado (em funcionamento ou parada). Qualquer snapshot de uma VM guest que possua um rótulo com o nome que corresponda ao seguinte modelo: BaculaSnapshot_<UUID>_JobID_<NR>, será tratado como um snapshot antigo de backup para essa VM e será automaticamente apagado durante o backup. Evite criar snapshots manuais que correspondam a esse esquema de nomenclatura. Quaisquer outros snapshots da VM guest não serão afetados. O plugin de backup do XenServer informará você sobre todos os backups de VMs guests, incluindo informações sobre os antigos snapshots bloqueados e as atividades de backup. Por exemplo:

 

JobId 135: Start Backup JobId 135, Job=xen.2017-12-28_15.52.21_11
JobId 135: Using Device “FileChgr1-Dev1” to write.
JobId 135: Volume “Vol-0002” previously written, moving to end of data.
JobId 135: xenserver: Start Backup vm: CentOS 7 (fe1ccf3b-1865-3942-c928-d98138397ff1)
JobId 135: xenserver: Old stalled backup snapshots found.
JobId 135: xenserver: Snapshot deleted: 12e387c0-eac5-84b1-8e40-1d0601c9eebf
JobId 135: xenserver: Snapshot created: 03afdf67-4ae3-7b0a-5eb0-2c2520c8580f
JobId 135: xenserver: Snapshot deleted: 03afdf67-4ae3-7b0a-5eb0-2c2520c8580f
JobId 135: xenserver: Backup of vm: CentOS 7 (fe1ccf3b-1865-3942-c928-d98138397ff1) OK.

O backup criará um único arquivo para cada VM guest salvo sob a forma de /@xen/<name-label>/<vmuuid>.xva. Serão criados vários arquivos durante o backup se forem encontradas várias VMs guests para fazer backup. Você pode usar essa informação para localizar o arquivo apropriado da VM durante uma restauração.

 

+——————————————————-+
| filename |
+——————————————————-+
| /@xen/vm1/10908c8a-f932-6f91-9cac-3034e3acf45b.xva |
| /@xen/vm1/03fad8c9-d88b-ea7e-98da-2f3bcd20d0c4.xva |
| /@xen/CentOS/fe1ccf3b-1865-3942-c928-d98138397ff1.xva |
+——————————————————-+

Restauração

O módulo de backup e recuperação de VM do XenServer fornece dois objetivos principais para operações de restauração:

  • Restaurar para um hypervisor Xen Server como uma VM guest nova ou original
  • Restaurar para um diretório local como um arquivo, ou arquivos XenServer XVA

Restauração para o XenServer

Para usar esse método de restauração é preciso definir um parâmetro “where=/” Bacula restore. O arquivo da VM guest será enviado ao hypervisor do XenServer e restaurado como uma nova VM (comportamento padrão), ou um original, quando a opção “plugin restore” for preservada. Você pode mudar o repositório de armazenamento onde sua VM guest será restaurada.

Para listar os Repositórios de Armazenamento disponíveis, você pode usar um modo de listagem, veja o item 6.1 na página 13. Se você definir um repositório de armazenamento inadequado (por exemplo: inexistente) para restauração, então o processo de restauração criará uma VM guest no armazenamento padrão do XenServer.

Restauração para o Diretório Local

Para usar esse método de restauração é preciso estabelecer um parâmetro de restauração do Bacula “where=/some/path”. O caminho tem que ser uma localização de diretório no servidor onde o plugin de backup para VM do XenServer está instalado. Se o caminho não existir, ele será criado pelo plugin.

Instalação do Backup para VM do XenServer

Você precisa instalar e configurar o Bacula File Daemon em sua máquina hypervisor XenServer, que hospeda suas VMs guests virtuais que você deseja fazer backup. O hypervisor XenServer usa uma distribuição CentOS personalizada (derivado RHEL), portanto você precisa instalar o Bacula Enterprise File Daemon compatível com essa distribuição Linux.

Configuração

A diretriz Plugin Directory do recurso File Daemon em /opt/bacula/etc/baculafd.conf deve indicar onde o plugin xenserver-fd.so está instalado. O diretório de plugins padrão do Bacula está em: /opt/bacula/plugins

 

FileDaemon {
Name = bacula-fd
Plugin Directory = /opt/bacula/plugins

}

Instalação do plugin de backup para VM do XenServer

Você pode instalar o plugin do Bacula Enterprise para XenServer, ampliando o arquivo do repositório para que seu gerente de pacotes contenha uma seção para o plugin. Por exemplo, no Redhat/CentOS 7, define-se /etc/yum.repos.d/bacula.repo:

 

[Bacula]
name=Bacula Enterprise
baseurl=https://www.baculasystems.com/dl/@customer-string@/rpms/bin/@version@/rhel7-64/
enabled=1
protect=0
gpgcheck=0
[BEEXenPlugin]
name=BEE XenServer Plugin
baseurl=https://www.baculasystems.com/dl/@customer-string@/rpms/xenserver/@version@/rhel7-64/
enabled=1
protect=0
gpgcheck=0

Em seguida, faça uma atualização do yum e, depois, o pacote bacula-enterprise-xenserverplugin pode ser instalado com o yum install.
Se você preferir instalar manualmente os pacotes, também pode baixá-los de sua área de download e usar uma das ferramentas de baixo nível do gerenciador de pacotes, como rpm, para fazer a instalação do plugin.

Configuração do Backup para XenServer

O plugin de backup do XenServer é configurado usando os parâmetros definidos na seção “Include” do FileSet da configuração do Director do Bacula Enterprise.

Parâmetros genéricos do plugin

Os seguintes parâmetros do plugin de backup para VMs do XenServer afetam qualquer tipo de trabalho (Backup, Estimativa ou Restauração).

  • server=<address> especifica o endereço da API do XenServer usado para as operações. Esse é o endereço usado no comando xe como o parâmetro -s <address>. Esse parâmetro é opcional. Se for omitido, será usado o acesso padrão.
  • port=<number> especifica a porta da API do XenServer usada para operações. Esse é o valor usado no comando xe como o parâmetro -p <number>. O valor desse parâmetro tem que estar na faixa de 1..65536. Um valor inválido fará com que a tarefa seja abortada. Esse parâmetro é opcional. Se for omitido, o acesso padrão será usado.
  • username=<string> especifica o nome de usuário usado para acessar o sistema da API do XenServer. Esse é o valor usado no comando xe como o parâmetro -u <string>. Esse parâmetro é opcional. Se for omitido, será usado o acesso padrão.
  • password=<string> especifica a senha usada para acessar o sistema da API do XenServer. Esse é o valor usado no comando xe como o parâmetro -pw <string>. Esse parâmetro é opcional. Se for omitido, será usado o acesso padrão.
  • passfile=<string> especifica um arquivo local para o File Daemon que contém a senha para o nome de usuário. Esse é o valor usado no comando xe como o parâmetro -pwf <string>. Esse parâmetro é opcional. Se for omitido, será usado o acesso padrão.
  • abort_on_error[=<0 ou 1>] especifica se o plugin deve ou não abortar sua execução (e a tarefa do Bacula) se um erro fatal ocorrer durante uma operação de Backup, Estimativa ou Restauração. Esse parâmetro é opcional. O valor padrão é 0.

Parâmetros do Plugin de Backup para VMs do XenServer e de Estimativa

  • vm=<name-label> especifica um nome de VM guest para fazer o backup. Todas as VMs que possuem um rótulo com o nome fornecido serão selecionadas para backup. Múltiplos parâmetros vm=… podem ser fornecidos. Se uma VM guest com <name-label> não puder ser encontrada, então um único erro de tarefa será gerado e o backup prosseguirá para a próxima VM, a menos que abort_on_error seja definido, o que fará com que a tarefa de backup seja abortada. Esse parâmetro é opcional.
  • uuid=<uuid> especifica um UUID de VM guest para fazer backup. Múltiplos parâmetros uuid=… podem ser fornecidos. Se uma VM guest com <uuid> não puder ser encontrada, então um único erro de tarefa será gerado e o backup prosseguirá para a próxima VM, a menos que o abort_on_error seja definido, o que fará com que a tarefa de backup seja abortada. Esse parâmetro é opcional.
  • include=<name-label-regex> especifica a lista de nomes de uma VM guest para fazer backup usando a sintaxe de expressão regular. Todas as VMs guests que corresponderem ao name-e-labelregex fornecido serão selecionadas para fazer o backup. Múltiplos parâmetros include=… podem ser fornecidos. Se nenhuma VM guest corresponder ao < name-label-regex> fornecido, o backup prosseguirá para os próximos parâmetros da VM ou terminará com sucesso sem fazer backup de nenhuma VM. O parâmetro abort_on_error não abortará a tarefa quando nenhuma VM guest for encontrada usando um <name-label-regex>. Esse parâmetro é opcional.
  • exclude=<name-label-regex> especifica a lista de nomes de uma VM guest que serão excluídos do backup usando a sintaxe de expressão regular. Serão excluídas todas as VMs guests que correspondam ao name-label-regex fornecido e que foram selecionadas para backup usando parâmetros include=…. Esse parâmetro não afeta nenhuma VM guest selecionada para fazer backup com parâmetros vm=… ou uuid=…. Múltiplos parâmetros exclude=… poderão ser fornecidos. Esse parâmetro é opcional.
  • quiesce[=<0 ou 1>] especifica se o snapshot da VM guest deve ou não ser criado usando um método quiesce. O método quiesce é suportado pelo XenServer para Windows OS apenas com guest-tools instalados. Essa é uma limitação do próprio XenServer. Se o snapshot da VM guest com quiesce não puder ser criado, toda a tarefa de backup será abortada. Nesse caso, você deve repetir o backup sem o parâmetro quiesce.

Se nenhum dos parâmetros vm=…, uuid=…, include e exclude forem especificados, será feito backup de todas as VMs guests disponíveis hospedadas no hypervisor do XenServer.

Parâmetros de restauração do plugin

Durante a restauração, o plugin de backup do XenServer usará os mesmos parâmetros que foram definidos para a tarefa de backup e que foram salvos. Alguns deles podem ser mudados durante o processo de restauração, se necessário.

  • server: <address> especifica o endereço da API do XenServer usado para as operações. Esse é o endereço usado no comando xe como o parâmetro -s <address>. Esse parâmetro é opcional. Se for omitido, será usado o acesso padrão.
  • port: <number> especifica a porta da API do XenServer usada para operações. Esse é o valor usado no comando xe como o parâmetro -p <number>. O valor do parâmetro deve estar na faixa de 1..65536. Um valor inválido fará com que a tarefa seja abortada. Esse parâmetro é opcional. Se for omitido, o acesso padrão será usado.
  • username: <string> especifica o nome de usuário usado para acessar o sistema da API do XenServer. Esse é o valor usado no comando xe como o parâmetro -u <string>. Esse parâmetro é opcional. Se for omitido, será usado o acesso padrão.
  • password: <string> especifica a senha usada para acessar o sistema da API do XenServer. Esse é o valor usado no comando xe como o parâmetro -pw <string>. Esse parâmetro é opcional. Se for omitido, será usado o acesso padrão.
  • passfile: <string> especifica um arquivo local para o File Daemon que contém a senha para o nome de usuário. Esse é o valor usado no comando xe como o parâmetro -pwf <string>. Esse parâmetro é opcional. Se for omitido, será usado o acesso padrão.
  • storage_res: <storage> especifica um repositório de armazenamento do XenServer onde as VMs guests restauradas serão salvas. Se não estiver definido, então a VM guest será salva em um repositório de armazenamento do XenServer configurado como o padrão. Esse parâmetro é opcional.
  • preserve: <yes or no> especifica se uma tarefa de restauração deve preservar o máximo possível de parâmetros de configuração da VM guest. O padrão é criar uma nova VM na restauração. Uma tarefa de restauração com essa opção preserve definida como “yes” poderia falhar se a restauração criasse objetos duplicados no hypervisor do XenServer. Esse parâmetro é opcional.

Exemplos de FileSet

No exemplo abaixo, será feito backup de todas as VMs guests.

 

FileSet {
Name = FS_XenAll
Include {
Plugin = “xenserver:”
}
}

No exemplo abaixo, será feito backup de uma única VM guest com o nome de “VM1”.

 

FileSet {
Name = FS_Xen_VM1
Include {
Plugin = “xenserver: vm=VM1”
}
}

O mesmo exemplo anterior, mas usando uuid em seu lugar:

 

FileSet {
Name = FS_Xen_VM1
Include {
Plugin = “xenserver: uuid=fe1ccf3b-1865-3942-c928-d98138397ff1”
}
}

No exemplo abaixo, será feito backup de todas as VMs guests que têm “Prod” no nome.

 

FileSet {
Name = FS_Xen_ProdAll
Include {
Plugin = “xenserver: include=Prod”
}
}

No exemplo abaixo, será feito backup de todas as VMs guests, com exceção daquelas cujo nome começa com “Test”.

 

FileSet {
Name = FS_Xen_AllbutTest
Include {
Plugin = “xenserver: include=.* exclude=^Test”
}
}

Restauração

Restauração para a um Hypervisor do XenServer

Para restaurar VMs para um hypervisor do XenServer, você deve executar o comando restore e especificar o parâmetro “where”, como neste exemplo:

 

* restore where=/

… Em seguida, estabeleça quaisquer outros parâmetros restore necessários para sua restauração. No seguinte exemplo, a opção “Preserve vm config on restore” do plugin de restauração está definida como “yes”:

 

* restore where=/

Run Restore job
JobName: RestoreFiles
Bootstrap: /opt/bacula/working/srv-xen-01-dir.restore.2.bsr
Where: /
Replace: Always
FileSet: Full Set
Backup Client: srv-xen-01-fd
Restore Client: srv-xen-01-fd
Storage: File1
When: 2018-01-05 12:47:16
Catalog: MyCatalog
Priority: 10
Plugin Options: *None*
OK to run? (yes/mod/no): mod
Parameters to modify:
1: Level
2: Storage
3: Job
4: FileSet
5: Restore Client
6: When
7: Priority
8: Bootstrap
9: Where
10: File Relocation
11: Replace
12: JobId
13: Plugin Options
Select parameter to modify (1-13): 13
Automatically selected : xenserver: uuid=fe1ccf3b-1865-3942-c928-d98138397ff1
Plugin Restore Options
server: *None* (*None*)
port: *None* (*None*)
username: *None* (*None*)
password: *None* (*None*)
passfile: *None* (*None*)
storage_res: *None* (*Default location*)
preserve: *None* (*No*)
Use above plugin configuration? (yes/mod/no): mod
You have the following choices:
1: server (Restore server name)
2: port (Restore server port number)
3: username (Restore user name)
4: password (Restore user password)
5: passfile (Restore user password file)
6: storage_res (Storage Resource location for restore)
7: preserve (Preserve vm config on restore)
Select parameter to modify (1-7): 7
Please enter a value for preserve: yes
Plugin Restore Options
server: *None* (*None*)
port: *None* (*None*)
username: *None* (*None*)
password: *None* (*None*)
passfile: *None* (*None*)
storage_res: *None* (*Default location*)
preserve: yes (*No*)
Use above plugin configuration? (yes/mod/no):

O log da tarefa de restauração dirá a você qual VM guest foi restaurada e a nova que foi criada.

 

JobId 131: Start Restore Job RestoreFiles.2017-12-28_14.42.25_15
JobId 131: Using Device “FileChgr1-Dev2” to read.
JobId 131: xenserver: VM restore: vm1/10908c8a-f932-6f91-9cac-3034e3acf45b
JobId 131: Forward spacing Volume “Vol-0002” to addr=1758441248
JobId 131: Elapsed time=00:04:51, Transfer rate=3.158 M Bytes/second
JobId 131: xenserver: VM UUID created: 45c49e07-ff20-ab55-e622-05ff2fbb0c1f

A nova VM guest criada durante a restauração receberá um novo rótulo com o nome definido pelo plugin como: <name-label>/<vmuuid>, onde <vmuuid> é a UUID da VM original da qual foi feito backup.

Restauração para o Diretório Local

 

* restore where=/tmp/bacula/restores

Verifique o seguinte exemplo para o teste de “restauração local de VM”:

 

JobId 112: Start Restore Job RestoreFiles.2017-12-28_11.30.19_34
JobId 112: Using Device “FileChgr1-Dev2” to read.
JobId 112: xenserver: VM local restore
JobId 112: Forward spacing Volume “Vol-0001” to addr=5190619786
JobId 112: Elapsed time=00:00:30, Transfer rate=30.64 M Bytes/second

O log da tarefa de restauração dirá a você que uma restauração irá para um diretório local.

Nicolas Van Eenaeme
Diretor de ITS da Netlog
«À medida que fomos crescendo, o backup do XenServer foi levando cada vez mais tempo para ser concluído. Decidimos, então, firmar um contrato de backup com a Bacula Systems para usar o Bacula Enterprise. O Bacula nos ajudou a otimizar nossa configuração de VMs do XenServer, e agora os backups terminam quase duas vezes mais rápido do que antes»

Mais informações sobre backup para XenServer: