TILMELD LOGIN

Gendan en Hyper-V VM fra skyen: en komplet gendannelsestest

En backup er først noget værd, når gendannelsen virker. Så vi prøvede det: slettede en Hyper-V VM, hentede den tilbage fra skyen, importerede den i Hyper-V og kontrollerede dataene. Alle skærmbilleder stammer fra denne test den 13. november 2026 på Windows Server 2025.

Udgivet 13. november 2026 · fra lionbackup-klienten 0.2.0

Udgangspunktet er test-VM'en FILESRV01 fra indlægget Backup af Hyper-V VM'er uden at lukke dem ned: en kørende VM med to kontrolpunkter og 300 bilag i en delt mappe. Den blev sikkerhedskopieret med lionbackup-klienten 0.2.0 til vores dev-miljø; du følger de samme trin mod prod. Skærmbillederne viser en tysk Windows Server og klientens tyske output.

Hvilke backups findes der?

Der listes og gendannes med læsetokenet. Skrivetokenet, som værten tager backup med, kan ikke det, og det er med vilje: den, der stjæler det, kommer ikke til dataene. Også her kommer tokenet fra en fil, som kun administratorer kan læse:

Get-Content .\secret\read-token.txt | .\lionbackup-client.exe --config .\hyperv-host.yaml --token-stdin --list

Listen viser to backups af FILESRV01, hver på 20,2 MB, med file_id og tidspunkt.

PowerShell: lionbackup-klienten med læsetoken og --list viser to backups af FILESRV01 på hver 20,2 MB
Listen, hentet med læsetokenet: to backups af FILESRV01.

Simuler et totaltab

Så nødsituationen: sluk VM'en, fjern den fra Hyper-V, og slet dens mappe med alle diske. Bagefter kender Hyper-V ingen VM, og der er intet tilbage på disken.

Stop-VM -Name FILESRV01 -TurnOff -Force
Remove-VM -Name FILESRV01 -Force
Remove-Item C:\Hyper-V\FILESRV01 -Recurse -Force
Get-VM
Test-Path C:\Hyper-V\FILESRV01
Kun på et testsystem. Disse kommandoer sletter VM'en endegyldigt.
PowerShell: VM'en FILESRV01 slukket, fjernet, mappe slettet; Get-VM tom, Test-Path False
Simuleret totaltab: VM'en og dens filer er væk.

Hent den tilbage fra skyen

Gendannelsen kræver tre ting: læsetokenet, file_id fra listen og den private nøgle. Nøglen har kun du; uden den kan ingen læse backuppen, heller ikke vi.

Get-Content .\secret\read-token.txt | .\lionbackup-client.exe --config .\hyperv-host.yaml --token-stdin `
  --restore DIT-FILE-ID --identity .\secret\hyperv-host.key --target C:\Restore

Klienten downloader backuppen, kontrollerer og dekrypterer den og pakker den ud til C:\Restore. I metadataene står kilden: hyperv:FILESRV01. Bagefter ligger der 16 filer, i alt 493 MB, opbygget som en eksport fra Hyper-V.

I testen tog det 2,1 sekunder for en lille VM, der komprimeret fylder 20,2 MB. For store VM'er afhænger tiden af deres størrelse og din båndbredde; tallet kan ikke overføres.

PowerShell: gendannelse af backuppen til C:\Restore, dekrypteret og pakket ud, derefter 16 filer med 493 MB
Gendannelsen fra skyen: dekrypteret og pakket ud til C:\Restore, derefter 16 filer, 493 MB.

Importér i Hyper-V

Importen er et PowerShell-trin. Da den oprindelige VM er væk, kommer kopien tilbage på den gamle placering C:\Hyper-V\FILESRV01. Compare-VM tjekker først, om Hyper-V kan overtage den: 0 uforeneligheder. Derefter fjerner du det kontrolpunkt, som Hyper-V kun oprettede til backuppen. Dine to egne kontrolpunkter, „vor-dem-update“, er tilbage.

$target = 'C:\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 'C:\Hyper-V\FILESRV01' `
  -VhdDestinationPath 'C:\Hyper-V\FILESRV01\Virtual Hard Disks' `
  -SnapshotFilePath 'C:\Hyper-V\FILESRV01'
$report.Incompatibilities.Count
$vm = Import-VM -CompatibilityReport $report
Get-VMSnapshot -VM $vm -SnapshotType Recovery | Remove-VMSnapshot
Get-VMSnapshot -VM $vm | Format-Table Name, SnapshotType -AutoSize
PowerShell: Compare-VM med 0 uforeneligheder, Import-VM, backup-kontrolpunktet fjernet, to kontrolpunkter vor-dem-update
Import til den gamle placering: 0 uforeneligheder, dine egne kontrolpunkter er tilbage.

Stemmer dataene?

En VM, der starter, er endnu ikke et bevis. Derfor monterede vi dens disk skrivebeskyttet, før den blev startet, og talte efter: de 300 bilag fra testdataene i Freigaben\Buchhaltung og en stikprøve, beleg-123, med det forventede indhold. Derefter afmonteres disken, og VM'en startes.

$disk = (Get-VMHardDiskDrive -VMName FILESRV01).Path
$drive = (Mount-VHD -Path $disk -ReadOnly -Passthru | Get-Disk | Get-Partition | Where-Object DriveLetter).DriveLetter
(Get-ChildItem "${drive}:\Freigaben\Buchhaltung").Count
(Get-Content "${drive}:\Freigaben\Buchhaltung\beleg-123.txt" -Raw).Substring(0, 36)
Dismount-VHD -Path $disk
Start-VM -Name FILESRV01
Get-VM | Format-Table Name, State, Status -AutoSize
PowerShell: disk monteret skrivebeskyttet, 300 bilag talt, stikprøve beleg-123, VM startet, FILESRV01 i normal drift
Dataene kontrolleret: 300 bilag, stikprøven stemmer, derefter kører FILESRV01 igen.

FILESRV01 kører normalt igen, i Hyper-V-styring med sin komplette kæde af kontrolpunkter. Den blev oprettet den 13. november 2026 kl. 17:30:44, ved importen.

Hyper-V-styring: FILESRV01 kører, oprettet den 13. november 2026 kl. 17:30:44, kæden af kontrolpunkter komplet
FILESRV01 kører igen, med sin komplette kæde af kontrolpunkter.

Hvad testen viser, og hvad den ikke viser

Test gendannelsen regelmæssigt. Det kan du gøre uden at røre den oprindelige VM: med -GenerateNewId og en anden målsti, som vist i Backup af Hyper-V VM'er uden at lukke dem ned.

Må vi støtte dig?

Vi laver gerne den første gendannelsestest sammen med dig på din Hyper-V-vært: gratis og via videoopkald.

Book en gratis aftale