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.
Recursos
Seção intitulada “Recursos”- 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=yestorna o quiesce obrigatório. - Backups Full transmitem cada disco pelo handler
export_raw_vdida XAPI como imagem raw (ou VHD, comformat=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
nbdouinsecure_nbd, os blocos alterados são extraídos de um fluxoexport_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_metadatada 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.
Requisitos
Seção intitulada “Requisitos”- 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) ouinsecure_nbd, e a porta TCP 10809 acessível a partir do cliente de backup:
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).
Instalação
Seção intitulada “Instalação”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:
install -m 0755 xen-backend /opt/backup/bin/xen-backendinstall -m 0755 xen-fd.so /opt/backup/plugins/xen-fd.sosystemctl restart ngbackup-fdCredenciais
Seção intitulada “Credenciais”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:
printf '%s' 'a-senha-do-pool' | backup-secrets set xen-pool1cat > /opt/backup/etc/xen.conf <<'EOF'host = xcp-master.example.comuser = rootpassword = @secret:xen-pool1fingerprint = 3f:a1:...:9cEOF- Ou use
passfile=/caminho(modo 0600; a primeira linha é a senha).
Valores na linha Plugin = prevalecem sobre o xen.conf.
Verificação TLS
Seção intitulada “Verificação TLS”| Configuração | Comportamento |
|---|---|
| padrão | Cadeia 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=no | Sem 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.
Configuração
Seção intitulada “Configuração”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âmetros
Seção intitulada “Parâmetros”| Parâmetro | Padrão | Significado |
|---|---|---|
host | Pool master (nome, nome:porta ou https://nome) | |
user / password / passfile | root | Credenciais da XAPI (veja Credenciais) |
config_file | /opt/backup/etc/xen.conf | Arquivo de conexão |
fingerprint / ca_file / tls_verify | verificar | Verificação TLS (veja acima) |
vm | Nomes ou globs de VMs, separados por vírgula ou repetidos | |
uuid | UUIDs de VMs | |
include / exclude | Globs de nome a incluir / remover (exclude também casa UUIDs) | |
tag | Protege VMs com qualquer uma dessas tags do XenServer | |
all | no | Protege todas as VMs do pool |
power_state | any | running ou halted para filtrar |
quiesce | try | try, yes ou no |
cbt | yes | no grava cada disco inteiro em todos os níveis |
cbt_read | auto | nbd, export ou auto (NBD quando disponível) |
format | raw | vhd para imagens VHD (somente Full) |
export_metadata | yes | Grava também o arquivo de metadados da XAPI |
abort_on_error | no | Interrompe o job na primeira VM que falhar |
timeout | 3600 | Segundos 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.confRestauração
Seção intitulada “Restauração”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ção | Significado |
|---|---|
restore_name | Nome da VM restaurada. Padrão: o nome original; se esse nome já existir e overwrite não estiver definido, (restored <jobid>) é acrescentado |
overwrite=yes | Substitui 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_sr | SR 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_host | Host (UUID, nome ou endereço) onde a VM será alocada e ligada |
restore_network / no_network=yes | Rede (UUID ou nome) para todas as interfaces, ou nenhuma interface; padrão: a rede original por UUID e depois por nome |
keep_mac | auto (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=yes | Liga a VM após a restauração |
restore_server / restore_user / restore_password | Restaura em outro pool |
restore_staging / keep_staging=yes | Diretó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.