REGISTRARSE LOGIN

Copia de seguridad de VM Hyper-V sin apagarlas

A partir del cliente lionbackup 0.2.0 solo indica los nombres de sus VM en hyperv:. El cliente encuentra por sí mismo todos los archivos, obtiene un estado coherente a través del writer de Hyper-V y lo guarda cifrado en la nube. No tiene que apagar las VM.

Publicado el 13 de noviembre de 2026 · desde el cliente lionbackup 0.2.0

Administrador de Hyper-V en Windows Server 2025 con la VM FILESRV01 en ejecución y su cadena de puntos de control (interfaz en alemán)
Administrador de Hyper-V en Windows Server 2025: la VM de prueba FILESRV01 con su cadena de puntos de control (interfaz en alemán).

Una VM es más que un .vhdx

Una VM de Hyper-V se compone de archivos en varios lugares: la configuración (.vmcx, .vmrs, .vmgs) en “Virtual Machines”, los discos virtuales en algún lugar del host y, por cada punto de control, un disco diferencial (.avhdx) que sin su disco primario no sirve de nada. Si mantiene estas rutas a mano en files:, en el siguiente punto de control olvidará el nuevo .avhdx y la VM restaurada ya no arrancará.

A ello se suma el bloqueo: una VM en ejecución mantiene sus discos abiertos en exclusiva. Hasta ahora el cliente los leía de una instantánea sin writers VSS. Funcionaba, pero solo con coherencia ante bloqueos, como si alguien hubiera desenchufado la VM.

La configuración: basta con el nombre

El resto de la configuración no cambia. La novedad es la sección hyperv::

lionbackup:
  environment: prod
  storagezone: "SU-STORAGE-ZONE"
  project: "SU-PROJECT-UUID"
  token: "SU-WRITE-TOKEN"
  hyperv:
    vms:
      - FILESRV01
      - DC01
  encryption_keyfile: C:\lionbackup\key\lionbackup.pub
  tmp_directory: D:\lionbackup\tmp
  log_directory: C:\lionbackup\log
  compression_method: ZSTD
  compression_level: 6
  resume: true
  require_https: true

Los nombres son los que muestra Get-VM. Con "*" en lugar de una lista, el cliente guarda todas las VM del host. files: puede figurar al lado, por ejemplo para recursos compartidos del host, o no aparecer.

Coloque tmp_directory en un volumen con espacio suficiente: el cliente escribe allí primero cada VM, comprimida y cifrada, y después la sube.

PowerShell muestra la configuración hyperv-host.yaml: proyecto, zona de01-1, entorno dev, sección hyperv: con FILESRV01, token mediante --token-stdin
La configuración de la prueba: un proyecto en nuestro entorno dev, zona de01-1, sección hyperv: con FILESRV01. El token no está en el archivo; llega mediante --token-stdin.

Qué ocurre en cada ejecución

  1. Consultar a Hyper-V. Para cada VM, el cliente obtiene la lista actual de sus archivos: configuración, puntos de control y cada disco con su cadena .avhdx. Un nuevo punto de control se incluye solo en la siguiente ejecución.
  2. Instantánea con el writer de Hyper-V. Con DiskShadow, una herramienta incluida en Windows Server, el cliente crea una instantánea en la que participa el writer de Hyper-V. Excluye todos los demás writers VSS. Hyper-V fija cada VM en un punto coherente durante ese momento.
  3. Leer, comprimir, cifrar. Los datos se leen de la instantánea: exactamente los archivos que indica el writer de Hyper-V. Entre ellos hay un punto de control que Hyper-V crea solo mientras dura la copia. Cada VM se convierte en una copia de seguridad propia, comprimida y cifrada de extremo a extremo en el host antes de que un solo byte salga de la máquina.
  4. Subir y después cerrar. Solo cuando la subida ha salido bien, el cliente da la copia por completada y Hyper-V la registra. Si la ejecución falla, notifica en su lugar la cancelación.

En línea o sin conexión

Cómo fija Hyper-V la VM depende del sistema invitado. Si en el invitado funciona el servicio de integración de copia de seguridad mediante instantánea de volumen, se trata de una copia en línea: la VM sigue funcionando y las aplicaciones del invitado, por ejemplo SQL Server o Active Directory, quedan coherentes mediante su propio VSS. Sin ese servicio, Hyper-V hace la copia sin conexión: la VM pasa brevemente a estado guardado. En ninguno de los dos casos hay que apagarla. El registro indica qué caso se dio.

DiskShadow solo conoce copias VSS completas. Por eso, las aplicaciones del invitado tratan una copia en línea correcta como cualquier copia completa a nivel de host.

Si el cliente se interrumpe bruscamente, por ejemplo porque alguien finaliza la tarea, DiskShadow lo detecta en segundos, notifica la cancelación y elimina las instantáneas. La VM sale de inmediato del estado de copia de seguridad en curso.

Para probarlo, inicie una ejecución a mano en PowerShell como administrador:

C:\lionbackup\bin\lionbackup-client.exe --config C:\lionbackup\conf\hyperv.yaml --progress-bar

El token no tiene por qué estar en la configuración. Con --token-stdin el cliente lo lee de la entrada estándar, por ejemplo de un archivo que solo los administradores pueden leer. Así no aparece ni en la configuración ni en la línea de comandos, y así se hizo nuestra prueba. Lo habitual sigue siendo token: en la configuración.

Get-Content C:\lionbackup\secret\write-token.txt | C:\lionbackup\bin\lionbackup-client.exe --config C:\lionbackup\conf\hyperv.yaml --token-stdin
PowerShell: cliente lionbackup con --token-stdin, instantánea con writers VSS, VM FILESRV01 copiada sin conexión, subida de 20,2 MB, duración total 57,7 segundos, END BACKUP notificado
Una ejecución real en Windows Server 2025 contra nuestro entorno dev: instantánea con writers VSS, FILESRV01 copiada sin conexión, 470 MB comprimidos a 20,2 MB y subidos. Solo después el cliente da la copia por completada.

Cada noche, incluso sin sesión iniciada

En producción, la ejecución pertenece al Programador de tareas. Necesita derechos de administrador, porque solo un administrador puede crear instantáneas. Con la cuenta SYSTEM y los privilegios más altos, la tarea se ejecuta también cuando nadie ha iniciado sesión:

Register-ScheduledTask -TaskName "lionbackup Hyper-V" -Action (New-ScheduledTaskAction -Execute 'C:\lionbackup\bin\lionbackup-client.exe' -Argument '--config C:\lionbackup\conf\hyperv.yaml') -Trigger (New-ScheduledTaskTrigger -Daily -At 22:00) -User 'SYSTEM' -RunLevel Highest

Recuperar: restauración e Import-VM

La copia de seguridad de una VM se restaura como cualquier otra, con un token de lectura y su clave privada. Una prueba completa con pérdida total simulada está en Restaurar una VM Hyper-V desde la nube. En resumen:

C:\lionbackup\bin\lionbackup-client.exe --config C:\lionbackup\conf\restore.yaml --list
C:\lionbackup\bin\lionbackup-client.exe --config C:\lionbackup\conf\restore.yaml --restore SU-FILE-ID --identity E:\lionbackup.key --target D:\Restore

En D:\Restore\FILESRV01 encontrará después “Virtual Machines”, “Virtual Hard Disks” y “Snapshots”, organizados como una exportación de Hyper-V. Compare-VM comprueba primero si Hyper-V puede adoptar la VM tal cual; la lista de incompatibilidades debería estar vacía. Import-VM la crea después como copia con un ID nuevo, de modo que una VM original que aún exista queda intacta. Por último, elimine el punto de control que Hyper-V creó solo para la copia:

$target = 'D:\Restore\FILESRV01'
$cfg  = Get-ChildItem "$target\Virtual Machines\*.vmcx" | Select-Object -First 1
$report = Compare-VM -Path $cfg.FullName -Copy -GenerateNewId `
  -VhdSourcePath "$target\Virtual Hard Disks" `
  -VirtualMachinePath 'D:\Hyper-V\FILESRV01-restore' `
  -VhdDestinationPath 'D:\Hyper-V\FILESRV01-restore\Virtual Hard Disks' `
  -SnapshotFilePath 'D:\Hyper-V\FILESRV01-restore'
$report.Incompatibilities | Format-List Message   # debería estar vacío
$vm = Import-VM -CompatibilityReport $report
# Eliminar el punto de control que Hyper-V creó solo para la copia:
Get-VMSnapshot -VM $vm -SnapshotType Recovery | Remove-VMSnapshot
Rename-VM -VM $vm -NewName 'FILESRV01-restaurado'   # optional

Los discos de la VM importada apuntan después a la copia en D:\Hyper-V\FILESRV01-restore, no a los originales.

PowerShell: Compare-VM sin incompatibilidades, Import-VM, eliminación del punto de control de la copia, ambas VM en funcionamiento normal
Compare-VM informa de 0 incompatibilidades, Import-VM crea la copia. Después, el original y la copia funcionan con normalidad.

Requisitos y límites

AspectoQué se aplica
HostWindows Server 2025 o 2022 con el rol Hyper-V; hemos probado en 2025.
DerechosEl cliente se ejecuta como administrador, por ejemplo como tarea programada con la cuenta SYSTEM. La instantánea (use_vss) sigue activada.
Sin DiskShadow o con error del writerDiskShadow es una herramienta de Windows Server. Sin ella, o si el writer falla, el cliente copia las VM solo con coherencia ante bloqueos y avisa. Con on_writer_error: abort se cancela en su lugar.
Ubicación de las VMVolúmenes locales de un host independiente. Cluster Shared Volumes, recursos compartidos SMB, discos de paso y VHD Sets se rechazan con un mensaje en lugar de omitirse en silencio.
AlcanceCada ejecución es una copia completa de toda la VM. El límite predeterminado es de 100 GB por copia y puede ampliarse bajo petición.

Qué hemos probado

En Windows Server 2025 con Hyper-V: una VM en ejecución con una cadena de puntos de control, una subida real a nuestro entorno dev, la copia como tarea programada con la cuenta SYSTEM, la interrupción brusca del cliente y una restauración completa desde la nube con los datos completos. Cómo fue lo muestra el artículo Restaurar una VM Hyper-V desde la nube. El entorno dev es nuestro entorno de pruebas; sus copias se ejecutan en prod. La VM de prueba no tenía sistema operativo invitado, así que Hyper-V la copió sin conexión.

Todavía no hemos comprobado por nuestra cuenta una copia en línea con un invitado real. Windows Server 2022 también incluye DiskShadow y el writer de Hyper-V; nuestras propias pruebas allí llegarán más adelante.

Casos especiales: comandos antes y después de la copia

Para los casos que hyperv: no cubre, el cliente 0.2.0 también ejecuta comandos propios. Un ejemplo es una VM que prefiere apagar de forma ordenada para la copia: pre_backup la apaga, post_snapshot la vuelve a iniciar en cuanto existe la instantánea, y el cliente lee después de la imagen.

lionbackup:
  files:
    - D:\Hyper-V\LEGACY01
  hooks:
    pre_backup:
      - 'powershell -NoProfile -Command "Stop-VM -Name LEGACY01"'
    post_snapshot:
      - 'powershell -NoProfile -Command "Start-VM -Name LEGACY01"'
    timeout_sec: 3600

Escriba los comandos entre comillas simples y duplique cualquier ' que contengan. De lo contrario, dos puntos seguidos de un espacio o un # en el comando rompen el YAML. --validate muestra estos errores con su número de línea.

Del mismo modo puede exportar antes una VM con Export-VM y guardar la exportación en files:.

Quien puede modificar la configuración puede ejecutar comandos con ella. Los comandos se ejecutan con los derechos del cliente, es decir, como administrador en un host Hyper-V. Guarde por ello la configuración de forma que solo los administradores puedan modificarla.

Disponibilidad

La sección hyperv: y los comandos antes y después de la copia llegan con el cliente lionbackup 0.2.0. El cliente está en Descargas y el código fuente es público en nuestro repositorio. Cómo protege lionbackup sus datos lo encontrará en la página de seguridad.

¿Podemos apoyarle?

Configuramos con gusto junto con usted la copia de seguridad de su host Hyper-V: gratis y por videollamada.

Concierte una cita gratuita