Wie man virtuelle Maschinen-Imageformate konvertiert

Einführung

Wenn Sie mit einem entfernten Cloud-Server arbeiten, arbeiten Sie in der Regel mit einer virtuellen Maschine: einer isolierten Instanz eines vollständigen Betriebssystems, die innerhalb eines größeren Serverclusters ausgeführt wird. Sie können auch lokal auf Ihrem Desktop mit virtuellen Maschinen arbeiten, indem Sie Software wie QEMU oder VirtualBox verwenden. Virtuelle Maschinen können eine gesamte Desktop-Benutzeroberfläche enthalten oder sie können nur einen SSH-Server ausführen, um Terminalverbindungen zu ermöglichen. In beiden Fällen sind sie technisch ähnlich und treffen ähnliche Annahmen. Abgesehen von etwaigen Cloud-Optimierungen im großen Maßstab besteht der einzige signifikante Unterschied zwischen Virtualisierungsumgebungen in den Festplatten und Konfigurationsoptionen der virtuellen Maschine. Diese werden als virtuelle Maschinen-Images bezeichnet und sind bei verschiedenen Anbietern unterschiedlich formatiert.

In diesem Tutorial erfahren Sie, wie Sie zwischen Formaten von virtuellen Maschinen-Images (einschließlich qcow2, vdi, vhd und vmdk) konvertieren können, damit Sie Ihre virtuellen Umgebungen bei Bedarf von Ihrem Desktop in die Cloud und zurück nehmen können.

Voraussetzungen

Die Befehle in diesem Tutorial können unter Windows, macOS oder Linux ausgeführt werden, solange Sie QEMU und VirtualBox sowie deren Befehlszeilentools installieren können. Dieses Tutorial enthält Installationsanweisungen für den Homebrew-Paketmanager. Sie können Homebrew auf macOS, Linux oder unter Windows unter WSL2 installieren.

Wenn Sie auf einem DigitalOcean-Droplet arbeiten, sollten Sie mindestens 2 CPUs und 2 GB Speicher haben.

Sie benötigen außerdem mindestens 10 GB freien Speicherplatz, um die Befehle in diesem Tutorial ausführen zu können.

Hinweis: Wenn Sie macOS mit einem Apple Silicon CPU (hergestellt im Jahr 2020 und später) verwenden, können Sie nur QEMU verwenden und nicht VirtualBox.

QEMU

QEMU ist die leistungsstärkste und weit verbreitete Open-Source-Virtualisierungssoftware. Es läuft auf allen wichtigen Plattformen (einschließlich Windows, macOS, Linux und anderen Betriebssystemen wie Android) und ist sowohl zur Virtualisierung als auch zur Emulation fähig, je nach Bedarf. Zum Beispiel, wenn Sie ein Linux-Server-Image auf einem Windows-Desktop ausführen (ein häufiger Anwendungsfall), teilen sich beide Plattformen eine gemeinsame zugrunde liegende Architektur (Intel/AMD x86), so dass QEMU durch Virtualisierung eine volle Leistung erzielen kann. Wenn Sie QEMU verwenden, um Architekturen zu mischen und anzupassen, zum Beispiel durch Ausführen von x86 Linux oder Windows (entweder als „Host“ oder als „Gast“ Betriebssystem) mit den ARM-Architekturen von macOS oder Android, wird QEMU automatisch Emulation verwenden, um Architekturen zu übersetzen.

Verglichen mit Virtualisierung wird Emulation normalerweise nicht in Produktionsumgebungen verwendet, da sie einen signifikanten Leistungsverlust mit sich bringt. Dennoch bietet QEMU, indem es Virtualisierung und Emulation als nahezu gleichwertig behandelt, signifikante Kompatibilitätsvorteile, da dieselben Bildformate und dieselben Tools in jeder Situation verwendet werden können.

QEMU ist eine Kommandozeilensoftware und weist im Vergleich zu Desktop-Virtualisierungssoftware wie VMware oder VirtualBox aufgrund der Vielzahl von Optionen, mit denen virtuelle Maschinen konfiguriert werden können, eine hohe Lernkurve auf. Es kann optional mit GUI-Frontends wie QtEmu unter Windows oder Linux und UTM unter macOS verwendet werden. Dieses Tutorial wird Anweisungen zur Verwendung von QEMU über die Befehlszeile bereitstellen.

Installation von QEMU

Um QEMU zu installieren, verwenden Sie Homebrews brew install:

  1. brew install qemu

Dies stellt die gesamte Suite von QEMU-Tools und Befehlen bereit, einschließlich qemu-img, das zum Konvertieren von virtuellen Maschinenbildern in der Befehlszeile verwendet wird. Überprüfen Sie, ob Sie Zugriff auf den Befehl qemu-img haben, indem Sie which qemu-img ausführen:

  1. which qemu-img
Output
/usr/local/bin/qemu-img

Hinweis:Sie können QEMU auch unter Windows mit seinem nativen Installationsprogramm installieren, wenn Sie lieber ohne WSL2 unter Windows arbeiten.

QEMU bietet die meisten Funktionen, die Sie in diesem Tutorial benötigen werden. Sie können auch VirtualBox installieren, ein weiteres beliebtes Virtualisierungspaket.

VirtualBox

VirtualBox ist eine Open-Source-Virtualisierungssoftware von Oracle. Es unterstützt alle x86-Betriebssysteme (Windows, Linux und macOS-Computer, die vor 2020 hergestellt wurden). Es unterstützt keine Emulation oder Nicht-x86-Architekturen, was es hauptsächlich nützlich macht, Linux unter Windows und umgekehrt auszuführen. Es ist jedoch auch einfacher zu bedienen als QEMU, bietet weitgehend kompatible Standardeinstellungen und enthält standardmäßig eine Desktop-Benutzeroberfläche.

Es bietet nicht so viel Befehlszeilenfunktionalität wie QEMU, daher wird es oft mit dedizierter Orchestrierungssoftware wie Vagrant kombiniert, um virtuelle Maschinenkonfigurationen zu automatisieren und zu reproduzieren. Es enthält jedoch das Befehlszeilentool VBoxManage, mit dem einige virtuelle Maschinenbilder manipuliert werden können.

Installation von VirtualBox

Um VirtualBox unter macOS zu installieren, verwenden Sie brew install mit der Option --cask, da VirtualBox als vollständiges Anwendungsbündel verteilt wird, das Homebrew als cask bezeichnet:

  1. brew install --cask virtualbox

Um VirtualBox unter Ubuntu oder Debian-basierten Linux-Distributionen (einschließlich unter WSL2) zu installieren, verwenden Sie zunächst apt update, um Ihre Paketquellen zu aktualisieren, und dann apt install:

  1. sudo apt update
  2. sudo apt install virtualbox

Um VirtualBox unter Windows ohne WSL2 zu installieren, konsultieren Sie dessen Download-Seite.

Nach der Installation von VirtualBox überprüfen Sie, ob Sie Zugriff auf den Befehl vboxmanage haben, indem Sie which vboxmanage ausführen:

  1. which vboxmanage
Output
​​/usr/local/bin/vboxmanage

Es gibt Alternativen zu QEMU und VirtualBox für die Virtualisierung. Allerdings sind die meisten davon plattformspezifisch (wie Hyper-V unter Windows) oder für den Einsatz in großen Unternehmen konzipiert (wie VMware). Diese werden in diesem Tutorial nicht direkt behandelt, aber du wirst ihre Bildformate in den folgenden Schritten konvertieren.

Erstellen eines virtuellen Maschinen-Images mit QEMU

Um die Konvertierung von virtuellen Maschinen-Images zu demonstrieren, kannst du damit beginnen, ein Image mit QEMU zu erstellen. Du kannst diesen Abschnitt überspringen, wenn du bereits ein Image zum Konvertieren hast.

Verwende den Befehl qemu-img create mit der Option -f qcow2, um ein Image im Standardformat qcow2 von QEMU zu erstellen:

  1. qemu-img create -f qcow2 ubuntu-desktop-22.04.qcow2 10G

An diesem Punkt hast du ein leeres virtuelles Maschinen-Image erstellt. Auch wenn du es ubuntu-desktop-22.04.qcow2 genannt und eine Kapazität von 10G angegeben hast, wird es zu diesem Zeitpunkt weder Ubuntu 22.04 installiert haben noch 10 GB groß sein.

Output
Formatting 'ubuntu-desktop-22.04.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=10737418240 lazy_refcounts=off refcount_bits=16

QEMU-Images werden immer so wenig Platz wie möglich auf deiner Festplatte einnehmen, während sie ihre maximal deklarierte Kapazität für jede Software innerhalb der virtuellen Maschine widerspiegeln. In diesem Fall wäre 10 GB die Kapazität, von der deine virtuelle Maschine denkt, dass sie verfügbar ist, und die maximale Größe, auf die das virtuelle Maschinen-Image automatisch skaliert wird.

A typical next step would be to install Ubuntu 22.04 onto the virtual machine, using a Ubuntu 22.04 ISO. However, you can skip this step for this tutorial, as you won’t actually be working directly with this virtual machine. An ISO is another type of disk image that is usually read-only, and was historically written onto CD and DVD installation media, rather than an image of a writable hard disk. Other software exists for manipulating ISO images, such as mkisofs and dd. To learn more about installing Linux using QEMU, refer to the QEMU documentation.

Umwandlung eines QEMU-Images in ein anderes Format

Wenn Sie ein VM-Image erstellt haben, können Sie qemu-img convert verwenden, um es in andere Formate zu konvertieren. vdi ist das Standardbildformat von VirtualBox. Standardmäßig wird das ursprüngliche VM-Image nicht gelöscht, sondern nur ein neues erstellt:

  1. qemu-img convert -f qcow2 ubuntu-desktop-22.04.qcow2 -O vdi ubuntu-desktop-22.04.vdi

Das Flag -f wird verwendet, um das Eingabeformat und den Eingabedateinamen anzugeben. Das Flag -O wird verwendet, um das Ausgabeformat und den Ausgabedateinamen anzugeben. Sie können auch das Flag -p einschließen, um eine Fortschrittsanzeige anzuzeigen, was beim Konvertieren sehr großer Bilder hilfreich ist. Das Bild, das Sie im letzten Schritt erstellt haben, wird sofort konvertiert, da es noch keine Inhalte enthält. Sie können bestätigen, dass Sie ubuntu-desktop-22.04.vdi erstellt haben, indem Sie ls verwenden:

  1. ls ubuntu-desktop-22.04.vdi
Output
ubuntu-desktop-22.04.vdi

Weitere gängige Formate sind vmdk, das hauptsächlich von VMware verwendet wird, und vhd, das hauptsächlich von Microsofts Hyper-V verwendet wird. Sie können auch ein „rohes“ Bild erstellen, wenn Ihre Software dies erfordert, indem Sie den nächsten Schritt befolgen.

Umwandlung anderer Formate virtueller Maschinen in QEMU

Wenn Sie ein Bild im vdi-Format haben, können Sie das von VirtualBox bereitgestellte vboxmanage-Befehl verwenden, um es zu konvertieren:

  1. vboxmanage clonemedium ubuntu-desktop-22.04.vdi ubuntu-desktop-22.04.img --format raw
Output
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Clone medium created in format 'raw'. UUID: 0501e707-c94e-4103-9069-d7b64a933d78

Beachten Sie, dass dadurch das erstellte Bild automatisch mit Ihrer lokalen VirtualBox-Konfiguration registriert wird, was umständlich sein kann, wenn Sie versuchen, transiente Kopien zu erstellen. Sie müssen möglicherweise manuell alle neuen Einträge aus der VirtualBox-Schnittstelle entfernen, wenn Sie versehentlich Duplikate registrieren.

Raw Virtual Machine-Bilder sind überhaupt nicht komprimiert, daher wird dieser Befehl tatsächlich eine vollständige 10-GB-Datei erstellen, im Gegensatz zu vorher. Sie können es zurück ins qcow2-Format konvertieren, um es mit QEMU zu verwenden, indem Sie die Syntax des letzten Schritts umkehren:

  1. qemu-img convert -f raw ubuntu-desktop-22.04.img -O qcow2 ubuntu-desktop-22.04-new.qcow2

Sie können das Rohbild jetzt löschen, um Speicherplatz freizugeben:

  1. rm ubuntu-desktop-22.04.img

Abschließend können Sie die Befehle qemu-img check und qemu-img info verwenden, um einige Metadaten Ihrer virtuellen Maschinenbilder auszugeben:

  1. qemu-img check ubuntu-desktop-22.04.qcow2
Output
No errors were found on the image. Image end offset: 262144
  1. qemu-img info ubuntu-desktop-22.04.qcow2
Output
image: ubuntu-desktop-22.04.qcow2 file format: qcow2 virtual size: 10 GiB (10737418240 bytes) disk size: 196 KiB cluster_size: 65536 Format specific information: compat: 1.1 compression type: zlib lazy refcounts: false refcount bits: 16 corrupt: false extended l2: false

Weitere Informationen zur Konvertierung von Bildern mit qemu-img finden Sie in der qemu-img-Manualseite oder in der offiziellen Dokumentation.

Hinweis:Sie können diese Virtual Machine-Bilder auch auf DigitalOcean hochladen, um sie als Cloud-Server-Bilder zu verwenden, indem Sie der Custom Image-Dokumentation von DigitalOcean folgen.

Fazit

Im diesem Tutorial hast du QEMU und die Befehlszeilentools von VirtualBox verwendet, um virtuelle Maschinenbilder zu erstellen, zu konvertieren und zu exportieren. Du hast einige gängige Beispiele für Formate von virtuellen Maschinenbildern sowie nützliche Standardannahmen für die Arbeit mit virtuellen Maschinen überprüft. Es ist immer hilfreich, die Technologien zu verstehen, die den gängigen Konzepten wie Virtualisierung zugrunde liegen, insbesondere wenn du Architekturen oder Cloud-Anbieter migrieren musst.

Als Nächstes möchtest du vielleicht unseren Leitfaden zur Skalierung virtueller Maschinen nach deinen Bedürfnissen durchgehen.

Source:
https://www.digitalocean.com/community/tutorials/how-to-convert-virtual-machine-image-formats