Pular para o conteúdo

Citrix Hypervisor / XenServer / XCP-ng

Proteção agentless, baseada em imagem, para máquinas virtuais em Citrix Hypervisor 8.2 CU1, XenServer 8 e XCP-ng 8.2 / 8.3. O NGBackup conversa com o pool master pela XAPI (a mesma API de gerenciamento usada pelo XenCenter e pelo Xen Orchestra): nada é instalado nos convidados nem nos hosts. Um plugin de FD (xen-fd.so) e um binário de backend (xen-backend), escritos em Rust.

  • Backup baseado em snapshot de VMs ligadas ou desligadas. Com quiesce=try (padrão), o NGBackup pede à XAPI um snapshot quiesced e, quando o host ou o convidado não suporta, usa um snapshot crash-consistent; quiesce=yes torna o quiesce obrigatório.
  • Backups Full transmitem cada disco pelo handler export_raw_vdi da XAPI como imagem raw (ou VHD, com format=vhd).
  • Backups Incremental e Diferencial com Changed Block Tracking. O NGBackup habilita o CBT em todos os discos automaticamente, pede à XAPI os blocos de 64 KiB alterados desde o backup anterior (VDI.list_changed_blocks) e lê somente esses blocos pelo serviço NBD da XAPI. Após cada backup, os dados do snapshot são liberados (VDI.data_destroy) e só os metadados de CBT ficam como ponto de referência, então nenhum snapshot completo permanece no seu storage entre os jobs.
  • Funciona também sem NBD. Se nenhuma rede do pool tiver o propósito nbd ou insecure_nbd, os blocos alterados são extraídos de um fluxo export_raw_vdi: o armazenamento continua incremental, mas o disco inteiro é lido pela rede.
  • Descoberta automática de VMs por política. Selecione VMs por nome ou glob (vm=), UUID (uuid=), padrão de nome (include= / exclude=), tag do XenServer (tag=) ou o pool inteiro (all=yes). A seleção é avaliada a cada execução, então VMs novas que atendem à política passam a ser protegidas automaticamente.
  • Definição completa da VM capturada em cada backup: vCPU, memória, ordem de boot e firmware (BIOS ou UEFI, incluindo a NVRAM), flags de plataforma, layout de discos, drives de CD, interfaces de rede com MAC e MTU, além do arquivo export_metadata da XAPI.
  • Restauração completa da VM: como VM nova ou substituindo a original (overwrite=yes), no SR original ou em SR, host ou pool alternativo, com remapeamento de rede e ligação opcional. Full, Diferencial e Incrementais são aplicados como uma única cadeia em uma só restauração.
  • Restauração de arquivos pela Restauração granular: navegue pelos sistemas de arquivos dos convidados (Linux ext2/3/4, Windows NTFS) de qualquer ponto Full ou Incremental e baixe arquivos individuais, sem restaurar a VM.
  • Seguro por padrão: HTTPS com verificação de certificado, pinning SHA-256 para os certificados autoassinados dos pools, NBD sobre TLS fixado no certificado que a XAPI retorna e credenciais guardadas no cofre de segredos criptografado.
  • Citrix Hypervisor 8.2 CU1, XenServer 8 ou XCP-ng 8.2 / 8.3.
  • Um usuário do pool com o papel Pool Admin (ou root). O plugin sempre fala com o pool master; se você apontar para um membro do pool, ele segue o redirecionamento para o master.
  • Acesso HTTPS (TCP 443) do cliente de backup ao pool master e, nas exportações, ao host que serve cada SR.
  • Para incrementais eficientes: uma rede do pool com o propósito nbd (TLS) ou insecure_nbd, e a porta TCP 10809 acessível a partir do cliente de backup:
Terminal window
xe network-param-add param-name=purpose param-key=nbd uuid=<uuid-da-rede>
  • Espaço livre no cliente de backup para restaurações: os discos são montados em um diretório de staging antes do upload (blocos zerados ficam esparsos).

Instale o plugin no host cliente que executa os jobs (qualquer cliente Linux com acesso de rede ao pool) e reinicie o File Daemon para que ele carregue o plugin:

Terminal window
install -m 0755 xen-backend /opt/backup/bin/xen-backend
install -m 0755 xen-fd.so /opt/backup/plugins/xen-fd.so
systemctl restart ngbackup-fd

Mantenha a senha do pool fora de configuração em texto puro:

  • No Content (FileSet), referencie um segredo selado: password=@secret:xen-pool1.
  • Ou coloque a conexão em /opt/backup/etc/xen.conf (modo 0640), onde referências @secret: são resolvidas com o cofre de segredos do próprio cliente:
Terminal window
printf '%s' 'a-senha-do-pool' | backup-secrets set xen-pool1
cat > /opt/backup/etc/xen.conf <<'EOF'
host = xcp-master.example.com
user = root
password = @secret:xen-pool1
fingerprint = 3f:a1:...:9c
EOF
  • Ou use passfile=/caminho (modo 0600; a primeira linha é a senha).

Valores na linha Plugin = prevalecem sobre o xen.conf.

ConfiguraçãoComportamento
padrãoCadeia de certificados e nome do host verificados contra o bundle público de CAs e o ca_file=
fingerprint=<sha256>Aceita exatamente o certificado do pool com essa impressão digital SHA-256 (recomendado para os certificados autoassinados padrão do XenServer / XCP-ng)
tls_verify=noSem verificação (uso em laboratório; o log do job avisa)

Obtenha a impressão digital no pool master com openssl x509 -in /etc/xensource/xapi-ssl.pem -noout -fingerprint -sha256.

FileSet {
Name = "xen-producao"
Include {
Options { Signature = MD5 }
Plugin = "xen: host=xcp-master.example.com user=root password=@secret:xen-pool1 \
fingerprint=3f:a1:...:9c all=yes exclude=*-test"
}
}
Job {
Name = "backup-xen-producao"
Type = Backup
Client = backup-proxy-fd
FileSet = "xen-producao"
Schedule = "WeeklyCycle"
Storage = dedup-store
Pool = Daily
}

Um Full semanal com Incrementais (ou Diferenciais) diários é o agendamento típico: cada Incremental lê somente os blocos alterados desde o backup anterior.

ParâmetroPadrãoSignificado
hostPool master (nome, nome:porta ou https://nome)
user / password / passfilerootCredenciais da XAPI (veja Credenciais)
config_file/opt/backup/etc/xen.confArquivo de conexão
fingerprint / ca_file / tls_verifyverificarVerificação TLS (veja acima)
vmNomes ou globs de VMs, separados por vírgula ou repetidos
uuidUUIDs de VMs
include / excludeGlobs de nome a incluir / remover (exclude também casa UUIDs)
tagProtege VMs com qualquer uma dessas tags do XenServer
allnoProtege todas as VMs do pool
power_stateanyrunning ou halted para filtrar
quiescetrytry, yes ou no
cbtyesno grava cada disco inteiro em todos os níveis
cbt_readautonbd, export ou auto (NBD quando disponível)
formatrawvhd para imagens VHD (somente Full)
export_metadatayesGrava também o arquivo de metadados da XAPI
abort_on_errornoInterrompe o job na primeira VM que falhar
timeout3600Segundos permitidos para cada transferência da XAPI

Uma VM que não pode ser copiada (por exemplo, quando o snapshot é recusado) é citada no log do job como aviso e as demais VMs continuam; o job falha se nenhuma VM puder ser copiada ou com abort_on_error=yes.

Liste as VMs de um pool com linhas de plugin prontas para uso:

list pluginobjects client=backup-proxy-fd plugin=xen: config_file=/opt/backup/etc/xen.conf

Restaure o ponto mais recente de uma VM, aplicando o Full e todos os Incrementais ou Diferenciais de uma só vez:

restore jobid=<ultimo-job> chain=1 where=/ pluginoptions="xen: restore_name=web01-restaurada power_on=yes" yes
Opção de restauraçãoSignificado
restore_nameNome da VM restaurada. Padrão: o nome original; se esse nome já existir e overwrite não estiver definido, (restored <jobid>) é acrescentado
overwrite=yesSubstitui a VM existente. A VM nova é criada e importada primeiro; só então a VM antiga (com os discos que nenhuma outra VM usa) é removida e a nova é renomeada
restore_srSR de destino (UUID ou nome) para todos os discos; padrão: o SR original quando existir, senão o SR padrão do pool
restore_hostHost (UUID, nome ou endereço) onde a VM será alocada e ligada
restore_network / no_network=yesRede (UUID ou nome) para todas as interfaces, ou nenhuma interface; padrão: a rede original por UUID e depois por nome
keep_macauto (padrão) mantém os MACs ao substituir a VM ou quando a original não existe mais; yes / no para forçar
power_on=yesLiga a VM após a restauração
restore_server / restore_user / restore_passwordRestaura em outro pool
restore_staging / keep_staging=yesDiretório de staging no cliente, e mantê-lo após a restauração

O job de restauração só informa sucesso depois que cada VM foi criada e cada importação de disco foi confirmada pela XAPI. Uma VM cuja restauração falha é removida novamente (nenhuma VM pela metade fica para trás) e o job falha informando o motivo.

Veja também: Restauração granular e Restauração, Instant Recovery e V2V.