VirtualBox Image nach Hyper-V migrieren
In diesem Beitrag zeige ich wie man ein VirtualBox Image nach Hyper-V migrieren kann. Da es keine direkte Umwandlung des Images gibt kann man die Konvertierung manuell übernehmen. Im Anschluss zeige ich noch wie man eine fertige Software dafür verwendet.
VirtualBox Image nach Hyper-V migrieren
Auf meinem Server läuft schon seit Jahren VirtualBox und ich lasse dort sowohl Linux als auch ältere Windows Systeme laufen. Windows um alte Software zu verwenden und Linux um darauf zu entwickeln. Mein MicroServer hat leider eine mittlerweile hoffnungslos veraltete CPU, weshalb der nicht mehr als 2 VMs laufen lassen kann und nur noch als NAS eingesetzt werden sollte. Mein neuer Ryzen 7 Rechner hingegen hat genug CPU Kerne um viele VMs gleichzeitig zu betreiben. Warum soll sich der Rechner als weiter langweilen, während der Server auf 100% Auslastung läuft?
Hyper-V
Ich habe euch bereits gezeigt wie man ein Linux System unter Hyper-V erstellt. Warum Hyper-V? Weil auf dem Rechner Windows 10 läuft und ich dort auch Docker nutze. Nun möchte ich meine bereits fertigen virtuellen Maschinen vom Server mitnehmen und nichts neu aufsetzen. Das geht wie folgt:
Export
Der einfachste Schritt ist der Export einer virtuellen Maschine unter VirtualBox. Dazu wählt man bei der Detailansicht der gewählten VM den Menüpunkt Appliance exportieren…
Als nächstes kommt ein kompliziert aussehender Dialog. Es ist wichtig hier die neuere Version OVA 2 des Export-Dateiformats zu wählen. Standardmäßig ist die Version 1 ausgewählt. Nach einem Klick auf Export dauert es…je nach VM und Host System viele Minuten. Mein kleines Linux System hat ganze 30 Minuten benötigt. Zeit für die Mittagspause…
Zuletzt kopiert man sich die erstellte *.ova Datei auf den Zielrechner. Das OVA Dateiformat ist tatsächlich nur ein Archiv, öffnet man dieses beispielsweise mit 7-zip, dann präsentiert sich folgender Inhalt:
Neuer Host, neuer Hypervisor
Jetzt wird es etwas schwieriger, denn es gibt keinen einfachen Weg die virtuelle Maschine nach Hyper-V zu konvertieren. Die Systeme verwenden unterschiedliche Formate. Hyper-V hat keinen *.ova Importer. Die Aufgabe ist nun die *.vmdk Datei in eine *.vhdx Datei zu konvertieren. Microsoft hat dafür das Programm „Microsoft Virtual Machine Converter 3.0“ bereitgestellt, damit man VMWare Images nach Hyper-V konvertieren kann. Das sollte nun auch für die exportierte *.vmdk Datei aus VirtualBox funktionieren. Ich habe das Programm installiert und die *.ova Datei entpackt.
Problem
In der mit Administrator-Rechten gestarteten PowerShell sieht das so aus:
PS C:\Users\werne> Import-Module 'C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1' PS C:\Users\werne> ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath C:\Users\werne\Downloads\OVAName\OVAName-disk001.vmdk -HvdType DynamicHardDisk -VhdFormat vhdx -destination C:\Users\werne\Downloads\OVAName\disk1 ConvertTo-MvmcVirtualHardDisk: A parameter cannot be found that matches parameter name 'HvdType'. PS C:\Users\werne> ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath C:\Users\werne\Downloads\OVAName\OVAName-disk001.vmdk -VhdType DynamicHardDisk -VhdFormat vhdx -destination C:\Users\werne\Downloads\OVAName\disk1 ConvertTo-MvmcVirtualHardDisk: The entry 3436d38f-24cc-4437-bb90-55ca3100ce4e is not a supported disk database entry for the descriptor. ConvertTo-MvmcVirtualHardDisk: One or more errors occurred. (The entry 3436d38f-24cc-4437-bb90-55ca3100ce4e is not a supported disk database entry for the descriptor.)
Lösung
Das Problem ist die im Image angegebene UUID der Festplatte. Die Lösung ist deshalb diese Information zu entfernen. Nur blöd, dass man nicht so einfach eine mehrere Gigabyte große Image Datei im Editor öffnet. Abhilfe schafft ein Toolset. Die dsfok tools findet man unter dem angegebenen Link. Ich habe mir das Archiv heruntergeladen und dieses in den Ordner meiner *.ova Daten entpackt. Mit den Programmen dsfo.exe exportiert man einen Bereich in eine Textdatei und mit dsfi.exe kopiert man diesen wieder in das Image zurück. Ich exportiere mir also den Bereich von 512 – 1024 Byte und kopiere diese Information in die descriptor.txt Datei wie im Screenshot ersichtlich:
dsfo.exe image-disk001.vmdk 512 1024 descriptor.txt
Die Datei kann man in einem beliebigen Texteditor wie der Open Source Editor Visual Studio Code geöffnet und bearbeitet werden. Es müssen nun alle Informationen zur UUID des Festplattenimages entfernt werden:
Anders als im Bild dargestellt habe ich alle Zeilen nach der mit dem Pfeil markierten Zeile auskommentiert. D.h. Zeilen 21 – 25 jeweils mit einem # an erster Stelle versehen. Nun muss die Information nur noch zurück in die *.vmdk Datei und die Konvertierung kann nochmals gestartet werden:
dsfi.exe image-disk001.vmdk 512 1024 descriptor.txt
Je nach Größe des Images dauert der Prozess nun einige Zeit. In meinem Fall hat die PowerShell einen neuen Ordner disk1 erstellt in dem man dann die *.vhdx Datei mit dem selben Dateinamen findet wie die *.vmdk Datei (bei meinen Screenshots sind diese verpixelt!).
Virtuelle Maschine erstellen
Der Rest ist nun bereits bekannt. Im Hyper-V-Manager erstellt man eine neue virtuelle Maschine:
Den Assistenten kann man nun wie gewohnt nutzen um die virtuelle Maschine zu konfigurieren. Wichtig ist beim Punkt „Virtuelle Festplatte verbinden“ keine neue Platte zu erstellen sondern die soeben konvertierte virtuelle Festplatte auszuwählen. Je nachdem ob das nun eine Windows Installation oder doch ein Linux System ist funktioniert das sofort. Für Linux empfehle ich meinen Artikel zu meinem Linux unter Hyper-V.
Weitere Probleme?
Sollte meine Anleitung bei dir nicht funktioniert haben kann ich die freie Software V2V-Converter von StarWind empfehlen. Mit diesem Tool kann man virtuelle Festplatten unterschiedlichster Formate in alle möglichen anderen Formate konvertieren. Für den oben beschriebenen Fall wählt man sowohl beim Input als auch beim Output „Local File“.
Fazit
Die Übernahme meiner virtuellen Maschinen von VirtualBox nach Hyper-V habe ich mir etwas einfacher vorgestellt. Glücklicherweise habe ich das aber nach längerer Recherche und vieler Probleme doch noch gelöst. So einen Umzug macht man ja nicht oft, deshalb ist das zu verkraften. Gelernt habe ich auch etwas und meine Anleitung hat hoffentlich auch dir weiter geholfen.
Welches System hast du auf Hyper-V migriert?