Backup delle VM Hyper-V senza spegnerle
Dal client lionbackup 0.2.0 basta indicare sotto hyperv: i nomi delle tue VM. Il client trova da solo tutti i file, ottiene uno stato coerente tramite il writer di Hyper-V e lo salva cifrato nel cloud. Non devi spegnere le VM.
Pubblicato il 13 novembre 2026 · dal client lionbackup 0.2.0

Una VM è più di un .vhdx
Una VM Hyper-V è fatta di file in più posti: la configurazione (.vmcx, .vmrs, .vmgs) sotto “Virtual Machines”, i dischi virtuali da qualche parte sull'host e, per ogni checkpoint, un disco differenziale (.avhdx) che senza il disco padre non serve a nulla. Se mantieni questi percorsi a mano sotto files:, al checkpoint successivo dimentichi il nuovo .avhdx e la VM ripristinata non si avvia più.
A questo si aggiunge il blocco: una VM in esecuzione tiene i suoi dischi aperti in modo esclusivo. Finora il client li leggeva da una copia shadow senza writer VSS. Funzionava, ma con la sola coerenza da crash, come se qualcuno avesse staccato la corrente alla VM.
La configurazione: basta il nome
Il resto della configurazione resta invariato. La novità è la sezione hyperv::
lionbackup:
environment: prod
storagezone: "TUA-STORAGE-ZONE"
project: "TUO-PROJECT-UUID"
token: "TUO-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: trueI nomi sono quelli mostrati da Get-VM. Con "*" al posto di un elenco, il client salva tutte le VM dell'host. Accanto può restare files:, ad esempio per le condivisioni sull'host, oppure mancare del tutto.
Metti tmp_directory su un volume con spazio sufficiente: il client vi scrive prima ogni VM, compressa e cifrata, e poi la carica.

hyperv: con FILESRV01. Il token non è nel file, arriva tramite --token-stdin.Cosa succede a ogni esecuzione
- Chiedere a Hyper-V. Per ogni VM il client recupera l'elenco aggiornato dei suoi file: configurazione, checkpoint e ogni disco con la sua catena
.avhdx. Un nuovo checkpoint entra da solo nell'esecuzione successiva. - Copia shadow con il writer di Hyper-V. Con DiskShadow, uno strumento incluso in Windows Server, il client crea una copia shadow a cui partecipa il writer di Hyper-V. Tutti gli altri writer VSS li esclude. Hyper-V fissa ogni VM in un punto coerente per quell'istante.
- Leggere, comprimere, cifrare. I dati vengono letti dalla copia shadow, esattamente i file indicati dal writer di Hyper-V. Tra questi c'è un checkpoint che Hyper-V crea solo per la durata del backup. Ogni VM diventa un backup a sé, compresso e cifrato end-to-end sull'host prima che un solo byte lasci la macchina.
- Caricare, poi concludere. Solo quando l'upload è riuscito il client segnala il backup come completato, e Hyper-V lo registra. Se l'esecuzione fallisce, segnala invece l'interruzione.
Online o offline
Il modo in cui Hyper-V fissa la VM dipende dal sistema guest. Se nel guest è attivo il servizio di integrazione per il backup tramite copia shadow del volume, si tratta di un backup online: la VM continua a funzionare e le applicazioni nel guest, ad esempio SQL Server o Active Directory, diventano coerenti tramite il loro VSS. Senza questo servizio Hyper-V esegue il backup offline: la VM viene messa per un attimo in stato salvato. In nessuno dei due casi va spenta. Il log indica quale caso si è verificato.
DiskShadow conosce solo backup VSS completi. Le applicazioni nel guest trattano quindi un backup online riuscito come qualsiasi backup completo a livello di host.
Se il client si interrompe bruscamente, ad esempio perché qualcuno termina l'attività, DiskShadow se ne accorge in pochi secondi, segnala l'interruzione ed elimina le copie shadow. La VM esce subito dallo stato di backup in corso.
Per provare, avvia un'esecuzione a mano in PowerShell come amministratore:
C:\lionbackup\bin\lionbackup-client.exe --config C:\lionbackup\conf\hyperv.yaml --progress-barIl token non deve per forza stare nella configurazione. Con --token-stdin il client lo legge dallo standard input, ad esempio da un file che solo gli amministratori possono leggere. Così non compare né nella configurazione né nella riga di comando, ed è così che è andato il nostro test. Il caso normale resta token: nella configurazione.
Get-Content C:\lionbackup\secret\write-token.txt | C:\lionbackup\bin\lionbackup-client.exe --config C:\lionbackup\conf\hyperv.yaml --token-stdin
Ogni notte, anche senza nessuno connesso
In produzione l'esecuzione va nell'Utilità di pianificazione. Servono diritti di amministratore, perché solo un amministratore può creare copie shadow. Con l'account SYSTEM e i privilegi più elevati l'attività parte anche quando nessuno ha effettuato l'accesso:
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 HighestRipristino: restore e Import-VM
Il backup di una VM si ripristina come qualsiasi altro, con un token di lettura e la tua chiave privata. Un test completo con perdita totale simulata è in Ripristinare una VM Hyper-V dal cloud. In breve:
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 TUO-FILE-ID --identity E:\lionbackup.key --target D:\RestoreIn D:\Restore\FILESRV01 trovi poi “Virtual Machines”, “Virtual Hard Disks” e “Snapshots”, organizzati come un'esportazione di Hyper-V. Compare-VM verifica prima se Hyper-V può acquisire la VM così com'è; l'elenco delle incompatibilità dovrebbe essere vuoto. Import-VM la crea poi come copia con un nuovo ID, così una VM originale ancora presente resta intatta. Infine rimuovi il checkpoint che Hyper-V ha creato solo per il backup:
$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 # dovrebbe essere vuoto
$vm = Import-VM -CompatibilityReport $report
# Rimuovere il checkpoint creato da Hyper-V solo per il backup:
Get-VMSnapshot -VM $vm -SnapshotType Recovery | Remove-VMSnapshot
Rename-VM -VM $vm -NewName 'FILESRV01-ripristinato' # optionalI dischi della VM importata puntano poi alla copia in D:\Hyper-V\FILESRV01-restore, non agli originali.

Compare-VM segnala 0 incompatibilità, Import-VM crea la copia. Dopo, originale e copia funzionano normalmente.Requisiti e limiti
| Punto | Cosa vale |
|---|---|
| Host | Windows Server 2025 o 2022 con il ruolo Hyper-V; abbiamo testato su 2025. |
| Diritti | Il client gira come amministratore, ad esempio come attività pianificata con l'account SYSTEM. La copia shadow (use_vss) resta attiva. |
| Senza DiskShadow o con errore del writer | DiskShadow è uno strumento di Windows Server. Senza di esso, o se il writer fallisce, il client salva le VM solo con coerenza da crash e avvisa. Con on_writer_error: abort invece si interrompe. |
| Dove si trovano le VM | Volumi locali di un host autonomo. Cluster Shared Volumes, condivisioni SMB, dischi pass-through e VHD Set vengono rifiutati con un messaggio, invece di essere saltati in silenzio. |
| Ambito | Ogni esecuzione è un backup completo dell'intera VM. Il limite predefinito è di 100 GB per backup e si può aumentare su richiesta. |
Cosa abbiamo testato
Su Windows Server 2025 con Hyper-V: una VM in esecuzione con una catena di checkpoint, un vero upload nel nostro ambiente dev, il backup come attività pianificata con l'account SYSTEM, l'interruzione brusca del client e un ripristino completo dal cloud con dati completi. Come è andato lo mostra l'articolo Ripristinare una VM Hyper-V dal cloud. L'ambiente dev è il nostro ambiente di test, i tuoi backup girano in prod. La VM di test non aveva un sistema operativo guest, quindi Hyper-V l'ha salvata offline.
Non abbiamo ancora verificato di persona un backup online con un vero guest. Anche Windows Server 2022 include DiskShadow e il writer di Hyper-V; i nostri test lì seguiranno.
Casi particolari: comandi prima e dopo il backup
Per i casi che hyperv: non copre, dal client 0.2.0 puoi far eseguire anche comandi tuoi. Un esempio è una VM che per il backup preferisci spegnere in modo pulito: pre_backup la spegne, post_snapshot la riavvia appena la copia shadow esiste, e il client legge poi dall'istantanea.
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: 3600Metti i comandi tra apici singoli e raddoppia un ' al loro interno. Altrimenti due punti seguiti da uno spazio o un # nel comando rompono lo YAML. --validate mostra questi errori con il numero di riga.
pre_backupviene eseguito prima di tutto il resto. Se un comando fallisce, l'esecuzione non salva nulla.post_snapshotviene eseguito appena la copia shadow esiste. Senza copia shadow, solo quando tutti i dati sono stati letti.post_backupviene sempre eseguito alla fine, anche dopo un errore.
Allo stesso modo puoi esportare prima una VM con Export-VM e salvare l'esportazione sotto files:.
Disponibilità
La sezione hyperv: e i comandi prima e dopo il backup arrivano con il client lionbackup 0.2.0. Il client è disponibile nei download, il codice sorgente è pubblico nel nostro repository. Come lionbackup protegge i tuoi dati lo trovi nella pagina Sicurezza.
Possiamo supportarti?
Configuriamo volentieri insieme a te il backup del tuo host Hyper-V: gratis, in videochiamata.