Files
dtic-DIIAA/docs/ambito/dtic-XenServer/A06.P002_Optimizar_Exportacion_XVA.md
T

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 usaba xe vm-export enviado directo por un pipe de red debido a la falta de espacio en disco de Dom0 (~2.7 GB libre).

Objetivos:

  1. Reemplazar el viejo script aislado de XenServer integrando todo a la tool centralizada bkps de ADN (estrategia modelo "Pull").
  2. Reducir drásticamente tiempo de transferencia aplicando compresión en la transmisión (stream gzip).
  3. 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:
    • zstd NO está instalado (XenServer 7.0 / CentOS 7 base antiguo).
    • gzip instalado. Benchmark local con 500MB en XenServer arrojó tiempos de proceso:
      • gzip -1: ~170 MB/s
      • gzip -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 (sugerido gzip -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 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
    
    (El gzip actúa dentro del xen node, viajando la data ya comprimida)
  • 2.2: Evaluar niveles de compresión (gzip -1 vs -6 vs -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.yml con nueva configuración de retención
  • 3.4: Integrar con comando bkps sanear para 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.md con 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á:

  1. bkps desde el orquestador (srv-ns8) invoca al módulo de Xen (proc_xen.rb).
  2. Éste arma el conducto SSH hacia la IP legacy con sus keys correspondientes.
  3. El comando ejecutado en srv-xen1 es: xe vm-export ... filename=/dev/stdout | gzip -6 -c.
  4. La salida (stdout) es capturada directamente en srv-ns8 y 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