9.6 KiB
A06.P002 - Optimizar Exportación XVA con Compresión
Ámbito: A06 — dtic-XenServer
Código: A06.P002
Fecha: 10 de abril de 2026
Autor: Sistema ADN
Versión: 1.0
Estado: ⏳ PENDIENTE
Dependencia: A06.P001 (SSH legacy habilitado)
📊 Progreso General
- Fase 0: Preparación [██████████] 100% (3/3) ✅
- Fase 1: Diagnóstico [██████████] 100% (4/4) ✅
- Fase 2: Compresión [░░░░░░░░░░] 0% (0/4)
- Fase 3: Retención [░░░░░░░░░░] 0% (0/4)
- Fase 4: Monitoreo [░░░░░░░░░░] 0% (0/3)
- Fase 5: Documentación [░░░░░░░░░░] 0% (0/4)
📋 Resumen Ejecutivo
Optimizar el proceso de exportación de máquinas virtuales desde srv-xen1 (Citrix XenServer 7.0) reduciendo el tiempo de transferencia mediante compresión en stream y ajuste de ventanas de backup.
Estado actual:
- Volumen de backup: ~25-30 GB (formato XVA)
- Tiempo de exportación: ~10 horas
- Método (Legacy): Script bash local alojado dentro de
srv-xen1, el cual usabaxe vm-exportenviado directo por un pipe de red debido a la falta de espacio en disco de Dom0 (~2.7 GB libre).
Objetivos:
- Reemplazar el viejo script aislado de XenServer integrando todo a la tool centralizada
bkpsde ADN (estrategia modelo "Pull"). - Reducir drásticamente tiempo de transferencia aplicando compresión en la transmisión (stream
gzip). - Definir ventanas óptimas de backup con el orquestador de Drones.
📅 Fases de Implementación
✅ FASE 0: Preparación (COMPLETADA)
Tareas Iniciales
- 0.1: Vincular con plan A06.P001 (SSH legacy habilitado)
- 0.2: Relevar métricas actuales de exportación (tiempo, ancho de banda)
- 0.3: Identificar VMs críticas a optimizar:
srvv-sysacadweb(25 GB, ~10 horas)srvv-maurik(Domain Controller)
✅ FASE 1: Diagnóstico de Red y Almacenamiento (COMPLETADA)
Métricas a Recopilar
- 1.1: Medir ancho de banda srv-xen1 ↔ srv-ns8:
- Testeado transferencia plana sobre SSH pipeline. Resultó en ~34.8 MB/s.
- 1.2: Verificar espacio disponible en destinos:
- srv-xen1 Dom0: ~2.7 GB libre (insuficiente para compresión local)
- srv-ns8:
/mnt/ns8Disco3/dtic-BACKUPS/(espacio suficiente)
- 1.3: Identificar picos de uso de red (horarios críticos)
- 1.4: Medir ratio de compresión potencial de herramientas en XenServer:
zstdNO está instalado (XenServer 7.0 / CentOS 7 base antiguo).gzipinstalado. Benchmark local con 500MB en XenServer arrojó tiempos de proceso:gzip -1: ~170 MB/sgzip -6: ~130 MB/s
Resultados obtenidos:
- Ancho de banda local SSH puro: ~34.8 MB/s (suficiente para ~100GB/hora).
- Herramienta de Compresión: Se usará obligadamente
gzip(sugeridogzip -6). - Ventana óptima: 00:00 - 06:00 (menor actividad).
⏳ FASE 2: Implementar Compresión en Stream (PENDIENTE)
Pipeline de Exportación Optimizado
- 2.1: Script centralizado vía ADN (Estrategia "Pull"):
(El gzip actúa dentro del xen node, viajando la data ya comprimida)
# El comando central en ns8 trae la información mediante SSH pasándolo por gzip: ./adn/tools/run ssh srv-xen1 "xe vm-export vm=srvv-sysacadweb filename=/dev/stdout | gzip -6 -c" > /mnt/ns8Disco3/dtic-BACKUPS/bkps-SERVIDORes/srvv-sysacadweb.xva.gz - 2.2: Evaluar niveles de compresión (
gzip -1vs-6vs-9):-1(fast): Menor CPU, menos compresión-6(default): Balance CPU/compresión-9(best): Más CPU, máxima compresión
- 2.3: Evaluar
zstd(mejor ratio, más rápido que gzip):# zstd -1 es muy rápido, -19 es máximo ... | zstd -3 | ssh srv-ns8 "cat > backup.xva.zst" - 2.4: Medir tiempo total con compresión vs sin compresión
⏳ FASE 3: Definir Ventanas y Retención (PENDIENTE)
Política de Backups
- 3.1: Establecer ventana óptima:
00:00 - 06:00(confirmar con bitácora de red) - 3.2: Configurar retención por tier:
Tier Ubicación Retención Tier 1 srv-xen1 (origen) 3 días (últimos 3 backups) Tier 2 srv-ns8 (procesado) 30 días Tier 3 OneDrive (nube) 90 días + históricos mensuales - 3.3: Actualizar
bkps.ymlcon nueva configuración de retención - 3.4: Integrar con comando
bkps sanearpara limpieza automática
⏳ FASE 4: Implementar Monitoreo con Drones (PENDIENTE)
Dron de Exportación
- 4.1: Configurar dron para exportación nocturna:
./adn/tools/run dron lanzar --evento AUTO \ --nota "Exportación XVA srvv-sysacadweb" -- \ ./adn/tools/run ssh srv-xen1 \ "xe vm-export vm=srvv-sysacadweb filename=/dev/stdout" | \ gzip > /mnt/ns8Disco3/dtic-BACKUPS/bkps-SERVIDORes/srvv-sysacadweb_$(date +%Y%m%d).xva.gz - 4.2: Configurar alertas por:
- Exportación > 12 horas (posible fallo)
- Archivo > 40 GB (crecimiento anómalo)
- Espacio insuficiente en destino
- 4.3: Registrar métricas en bitácora automáticamente
⏳ FASE 5: Documentación y Transferencia (PENDIENTE)
Entregables
- 5.1: Actualizar
A06_dtic-XenServer.mdcon flujo optimizado - 5.2: Documentar comandos en ficha
nodos/srv-xen1.md - 5.3: Crear script reutilizable en
adn/tools/bkps/lib/proc_xen.rb - 5.4: Registrar lecciones aprendidas
🎯 Criterios de Éxito
| Fase | Criterio | Verificación |
|---|---|---|
| Diagnóstico | Métricas de red relevadas | ✅ iperf3 ejecutado, ratio medido |
| Compresión | Pipeline funcionando | ✅ Exportación con gzip/zstd OK |
| Reducción tiempo | < 6 horas (vs 10 horas actuales) | ✅ Bitácora registra mejora |
| Monitoreo | Drones operativos | ✅ Auto-bitácora en eventos |
📝 Notas Técnicas
Comandos xe para Exportación
# Exportar VM completa
xe vm-export vm=<nombre_vm> filename=/path/to/backup.xva
# Exportar a stdout (para piping)
xe vm-export vm=<nombre_vm> filename=/dev/stdout
# Listar VMs disponibles
xe vm-list
# Parámetros específicos de una VM
xe vm-param-get uuid=<vm_uuid> param-name=name-label
Comparación: gzip vs zstd
| Herramienta | Nivel | Ratio | Velocidad (MB/s) | Uso CPU |
|---|---|---|---|---|
| gzip -1 | Fast | 2.5x | ~400 | Bajo |
| gzip -6 | Default | 3.0x | ~200 | Medio |
| gzip -9 | Best | 3.2x | ~100 | Alto |
| zstd -1 | Fast | 2.8x | ~600 | Muy Bajo |
| zstd -3 | Default | 3.5x | ~300 | Bajo |
| zstd -9 | High | 4.0x | ~100 | Medio |
Recomendación: Usar zstd -3 si está disponible, sino gzip -6.
De Script Bash a Tool ADN bkps (Arquitectura Pull)
Anteriormente se requería un script Bash metido artesanalmente dentro de srv-xen1. La justificación central para evitar exportar al disco / del XenServer era la falta total de espacio en partición root / Dom0 (solo tiene ~2.7 GB libres frente a VMs de 25GB+).
Ese script será obsoleto e innecesario.
La Herramienta ADN bkps tomará el control en modelo "Pull":
# Ejemplo teórico de cómo quedará el comando integrado en ADN desde ns8
./adn/tools/bkps/bkps.rb respaldar srv-xen1 --target srvv-sysacadweb --compress gzip
El flujo transparente que armará ADN por debajo será:
bkpsdesde el orquestador (srv-ns8) invoca al módulo de Xen (proc_xen.rb).- Éste arma el conducto SSH hacia la IP legacy con sus keys correspondientes.
- El comando ejecutado en
srv-xen1es:xe vm-export ... filename=/dev/stdout | gzip -6 -c. - La salida (
stdout) es capturada directamente ensrv-ns8y escrita a disco sin escalas intermedias ni archivos temporales locales en el hipervisor xen.
⚠️ Riesgos y Consideraciones
| Riesgo | Impacto | Mitigación |
|---|---|---|
| CPU overhead | Compresión consume CPU en Dom0 | Usar nivel bajo (-1 a -3), monitorear carga |
| Fallo de red | Backup corrupto a mitad de transferencia | Usar --delete-before en rclone sync |
| Espacio insuficiente | Destino lleno antes de sanear | Monitorear espacio, alertas tempranas |
| VM en uso | Backup inconsistente | Coordinar ventana con usuarios, considerar snapshot |
🔗 Vinculación con A03.P003
Este plan complementa A03.P003 proveyendo:
- A06.P002: Optimización técnica de exportación XVA (hipervisor)
- A03.P003: Procesamiento y sincronización posterior (storage/backup)
🔄 Armonía Integral
Última actualización: 2026-04-10 (creación del plan)
| Documento | Estado | Notas |
|---|---|---|
A06_dtic-XenServer.md |
✅ Creado | Manifiesto del ámbito |
A06.P001_Habilitar_SSH_Legacy.md |
⏳ Pendiente | SSH legacy |
A06.P002_Optimizar_Exportacion_XVA.md |
⏳ Pendiente | Este plan |
A03.P003_Optimizacion_SysAcadWeb.md |
⏳ En Ejecución | Vinculado |
adn/tools/bkps/lib/proc_xen.rb |
⏳ Pendiente | Script de exportación |
Referencias
- Citrix XenServer 7.0 CLI: xe CLI Reference
- zstd: Zstandard Compression
- ADN CLI BKPs:
adn/tools/bkps/bkps.rb - Configuración:
adn/tools/bkps/bkps.yml - Nodo srv-xen1:
nodos/srv-xen1.md