Citrix Hypervisor / XenServer / XCP-ng
Protección agentless, basada en imagen, para máquinas virtuales en Citrix Hypervisor 8.2 CU1, XenServer 8 y XCP-ng 8.2 / 8.3. NGBackup se comunica con el pool master a través de XAPI (la misma API de gestión que usan XenCenter y Xen Orchestra): no se instala nada en los invitados ni en los hosts. Un plugin de FD (xen-fd.so) y un binario de backend (xen-backend), escritos en Rust.
Funcionalidades
Sección titulada «Funcionalidades»- Backup basado en snapshot de VMs encendidas o apagadas. Con
quiesce=try(por defecto), NGBackup solicita a XAPI un snapshot quiesced y, cuando el host o el invitado no lo admite, usa un snapshot crash-consistent;quiesce=yeshace obligatorio el quiesce. - Backups Full transmiten cada disco por el handler
export_raw_vdide XAPI como imagen raw (o VHD, conformat=vhd). - Backups Incremental y Diferencial con Changed Block Tracking. NGBackup habilita CBT en todos los discos automáticamente, solicita a XAPI los bloques de 64 KiB modificados desde el backup anterior (
VDI.list_changed_blocks) y lee solo esos bloques por el servicio NBD de XAPI. Después de cada backup se liberan los datos del snapshot (VDI.data_destroy) y solo se conservan los metadatos de CBT como punto de referencia, de modo que ningún snapshot completo permanece en su storage entre jobs. - También funciona sin NBD. Si ninguna red del pool tiene el propósito
nbdoinsecure_nbd, los bloques modificados se extraen de un flujoexport_raw_vdi: el almacenamiento sigue siendo incremental, pero el disco completo se lee por la red. - Descubrimiento automático de VMs por política. Seleccione VMs por nombre o glob (
vm=), UUID (uuid=), patrón de nombre (include=/exclude=), etiqueta de XenServer (tag=) o el pool completo (all=yes). La selección se evalúa en cada ejecución, así que las VMs nuevas que cumplen la política quedan protegidas automáticamente. - Definición completa de la VM capturada en cada backup: vCPU, memoria, orden de arranque y firmware (BIOS o UEFI, incluida la NVRAM), flags de plataforma, layout de discos, unidades de CD, interfaces de red con MAC y MTU, además del archivo
export_metadatade XAPI. - Restauración completa de la VM: como VM nueva o reemplazando la original (
overwrite=yes), en el SR original o en un SR, host o pool alternativo, con remapeo de red y encendido opcional. Full, Diferencial e Incrementales se aplican como una sola cadena en una única restauración. - Restauración de archivos mediante la Restauración granular: navegue por los sistemas de archivos de los invitados (Linux ext2/3/4, Windows NTFS) de cualquier punto Full o Incremental y descargue archivos individuales, sin restaurar la VM.
- Seguro por defecto: HTTPS con verificación de certificado, pinning SHA-256 para los certificados autofirmados de los pools, NBD sobre TLS fijado al certificado que devuelve XAPI y credenciales guardadas en el almacén de secretos cifrado.
Requisitos
Sección titulada «Requisitos»- Citrix Hypervisor 8.2 CU1, XenServer 8 o XCP-ng 8.2 / 8.3.
- Un usuario del pool con el rol Pool Admin (o
root). El plugin siempre se comunica con el pool master; si lo apunta a un miembro del pool, sigue la redirección hacia el master. - Acceso HTTPS (TCP 443) desde el cliente de backup al pool master y, en las exportaciones, al host que sirve cada SR.
- Para incrementales eficientes: una red del pool con el propósito
nbd(TLS) oinsecure_nbd, y el puerto TCP 10809 accesible desde el cliente de backup:
xe network-param-add param-name=purpose param-key=nbd uuid=<uuid-de-la-red>- Espacio libre en el cliente de backup para restauraciones: los discos se componen en un directorio de staging antes de subirlos (los bloques en cero quedan dispersos).
Instalación
Sección titulada «Instalación»Instale el plugin en el host cliente que ejecuta los jobs (cualquier cliente Linux con acceso de red al pool) y reinicie el File Daemon para que cargue el plugin:
install -m 0755 xen-backend /opt/backup/bin/xen-backendinstall -m 0755 xen-fd.so /opt/backup/plugins/xen-fd.sosystemctl restart ngbackup-fdCredenciales
Sección titulada «Credenciales»Mantenga la contraseña del pool fuera de la configuración en texto plano:
- En el Content (FileSet), haga referencia a un secreto sellado:
password=@secret:xen-pool1. - O ponga la conexión en
/opt/backup/etc/xen.conf(modo 0640), donde las referencias@secret:se resuelven con el almacén de secretos del propio cliente:
printf '%s' 'la-contraseña-del-pool' | backup-secrets set xen-pool1cat > /opt/backup/etc/xen.conf <<'EOF'host = xcp-master.example.comuser = rootpassword = @secret:xen-pool1fingerprint = 3f:a1:...:9cEOF- O use
passfile=/ruta(modo 0600; la primera línea es la contraseña).
Los valores de la línea Plugin = prevalecen sobre xen.conf.
Verificación TLS
Sección titulada «Verificación TLS»| Configuración | Comportamiento |
|---|---|
| por defecto | Cadena de certificados y nombre de host verificados contra el bundle público de CAs y ca_file= |
fingerprint=<sha256> | Acepta exactamente el certificado del pool con esa huella SHA-256 (recomendado para los certificados autofirmados por defecto de XenServer / XCP-ng) |
tls_verify=no | Sin verificación (uso en laboratorio; el log del job lo advierte) |
Obtenga la huella en el pool master con openssl x509 -in /etc/xensource/xapi-ssl.pem -noout -fingerprint -sha256.
Configuración
Sección titulada «Configuración»FileSet { Name = "xen-produccion" 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-produccion" Type = Backup Client = backup-proxy-fd FileSet = "xen-produccion" Schedule = "WeeklyCycle" Storage = dedup-store Pool = Daily}Un Full semanal con Incrementales (o Diferenciales) diarios es la programación típica: cada Incremental lee solo los bloques modificados desde el backup anterior.
Parámetros
Sección titulada «Parámetros»| Parámetro | Por defecto | Significado |
|---|---|---|
host | Pool master (nombre, nombre:puerto o https://nombre) | |
user / password / passfile | root | Credenciales de XAPI (vea Credenciales) |
config_file | /opt/backup/etc/xen.conf | Archivo de conexión |
fingerprint / ca_file / tls_verify | verificar | Verificación TLS (vea arriba) |
vm | Nombres o globs de VMs, separados por comas o repetidos | |
uuid | UUIDs de VMs | |
include / exclude | Globs de nombre a incluir / quitar (exclude también coincide con UUIDs) | |
tag | Protege las VMs con cualquiera de estas etiquetas de XenServer | |
all | no | Protege todas las VMs del pool |
power_state | any | running o halted para filtrar |
quiesce | try | try, yes o no |
cbt | yes | no guarda cada disco completo en todos los niveles |
cbt_read | auto | nbd, export o auto (NBD cuando está disponible) |
format | raw | vhd para imágenes VHD (solo Full) |
export_metadata | yes | Guarda también el archivo de metadatos de XAPI |
abort_on_error | no | Detiene el job en la primera VM que falle |
timeout | 3600 | Segundos permitidos para cada transferencia de XAPI |
Una VM que no se puede respaldar (por ejemplo, cuando se rechaza el snapshot) se nombra en el log del job como advertencia y las demás VMs continúan; el job falla si no se pudo respaldar ninguna VM o con abort_on_error=yes.
Liste las VMs de un pool con líneas de plugin listas para usar:
list pluginobjects client=backup-proxy-fd plugin=xen: config_file=/opt/backup/etc/xen.confRestauración
Sección titulada «Restauración»Restaure el punto más reciente de una VM, aplicando el Full y todos los Incrementales o Diferenciales de una sola vez:
restore jobid=<ultimo-job> chain=1 where=/ pluginoptions="xen: restore_name=web01-restaurada power_on=yes" yes| Opción de restauración | Significado |
|---|---|
restore_name | Nombre de la VM restaurada. Por defecto: el nombre original; si ese nombre ya existe y overwrite no está definido, se agrega (restored <jobid>) |
overwrite=yes | Reemplaza la VM existente. La VM nueva se crea e importa primero; solo entonces se elimina la VM antigua (con los discos que ninguna otra VM usa) y se renombra la nueva |
restore_sr | SR de destino (UUID o nombre) para todos los discos; por defecto: el SR original cuando existe, si no el SR por defecto del pool |
restore_host | Host (UUID, nombre o dirección) donde ubicar y encender la VM |
restore_network / no_network=yes | Red (UUID o nombre) para todas las interfaces, o ninguna interfaz; por defecto: la red original por UUID y luego por nombre |
keep_mac | auto (por defecto) conserva los MAC al reemplazar la VM o cuando la original ya no existe; yes / no para forzar |
power_on=yes | Enciende la VM tras la restauración |
restore_server / restore_user / restore_password | Restaura en otro pool |
restore_staging / keep_staging=yes | Directorio de staging en el cliente, y conservarlo tras la restauración |
El job de restauración solo informa éxito después de que cada VM fue creada y cada importación de disco fue confirmada por XAPI. Una VM cuya restauración falla se elimina de nuevo (no queda ninguna VM a medias) y el job falla indicando el motivo.
Vea también: Restauración granular y Restauración, Instant Recovery y V2V.