Konvertieren von KVM- und VirtualBox-Images



  • In puncto Virtualisierung arbeite ich sowohl mit KVM (wahlweise mit Proxmox VE, oVirt oder Virt-Manager als Managemen-Interface, als auch mit VirtualBox. Beide Hypervisoren haben Ihre Vorteile, unterstützen aber jeweils mehrere Image-Formate.

    VirtualBox: VDI, VDMK, VHD, HDD, QED und QCOW.
    KVM: RAW, QED, QCOW/QCOW2, COW, VDMK, VDI und noch einige mehr

    Mit den jeweiligen CLI-Tools von VirtualBox und Qemu ist es daher problemlos möglich, bei Bedarf diverse Formate ineinander zu konvertieren, was bei mir häufig vorkommt. In KVM/Qemu etwa dient das CLI-Tool qemu-img nicht nur zum Erzeugen neuer virtuelle Speichermedien, sondern kann auch die Speichermedien anderer Virtualisierungs-Lösungen konvertieren. Das Pendant bei VirtualBox heißt VboxManage.

    Möchte man zum Beispiel ein KVM-Image in VirtualBox (VDI) konvertieren, geht das wie folgt: zunächst macht man aus dem vorhandenen KVM-Image ein einfaches Raw-Image, weil davon auszugehen ist, dass das in KVM verwendete Format ein Sparse-Format ist. Das trifft eigentlich für alle weiter entwickelten Formate wie QCOW/QCOW2, VDMK usw. zu. Du solltest natürlich wissen, welches Format Deine KVM-Images haben. Am Dateinamen sieht man es meist nicht, weil häufig .img als Endung verwendet wird. Du kannst das natürlich in Deinem verwendeten Management-Interface (z.B. Virt-Manager oder Aqemu) prüfen, ist aber auch egal, weil Du das Quellformat nicht angeben muss. Was bei folgendem Kommando hinten raus kommt ist aber auf jeden Fall raw, daher solltest Du darauf achten, dass genügend freier Festplattenspeicher zur Verfügung steht. Ist Dein Image etwa nur mit 20 GB belegt, wurde aber beim Erzeugen als dynamisch wachsendes (Sparse) Image von z.B. 100 GB deklariert, wächst jetzt selbstverständlich auch das raw-File auf 100GB. Der Befehl dazu sieht so aus:

    qemu-img convert kvm-image.img -O raw kvm-image-raw.img

    Danach kannst Du das Image in Deine VirtualBox-Maschine kopieren und es dort mit folgendem Kommando nach VDI konvertieren.

    VBoxManage convertfromraw –format VDI kvm-image-raw.img vbox-image.vdi

    Mit folgenden Kommando schrumpft Du das Image dann wieder auf die richtige (aktuelle) Größe:

    VBoxManage modifyvdi vbox-image.vdi compact

    VDI-Images haben den Vorteil, sich flexibler einsetzen zu lassen.

    Anders herum, also VirtualBox zu KVM funktioniert selbstverständlich ebenfalls. Auch hier konvertierst Du das Image zunächst ins raw-Format. Das geht bei VirtualBox mit

    VBoxManage clonehd virtualbox-image.vdi virtualbox-image-raw.img --format raw

    Danach kannst Du es wieder mit qemu-img zum Beispiel ins qcow2-Format bringen:

    qemu-img convert -f raw virtualbox-image-raw.img -O qcow2 kvm-image.qcow2



  • Guten Tag,

    vorab vielen Dank für den kleinen Benutzerguide.

    Ich möchte, im Zuge eines Backups, ein bestehendes Qcow2-Image (Produktivdaten) in eine neue wenn möglich komprimierte Image-Datei (ebenfalls qcow2) konvertieren. Diese konvertierte Image-Datei soll dann jeden Tag auf einen Backup-Server gesichert werden. Mir ist durchaus bewusst, dass es adäquatere Formen von Backups, wie Snapshots oder Clones gibt, doch das konvertierte Image stellt für mich die einfachste Forum dar, um ein Backup zu erzeugen und im Worst Case !!!schnell!!! wieder in Betrieb zu nehmen.

    Meine Frage ist, ob ich die VM, die das Produktiv-Image verwendet, vor dem Konvertieren heruntergefahren bzw pausiert ($ virsh suspend foo) werden muss? Leider habe ich dazu keine hinreichenden Informationen, weder im WWW noch im Buch KVM Best Practices von Ch. Arnold et al., finden können.

    Vielen Dank für die Beantwortung meiner Frage.

    Beste Grüße,
    Christian


Log in to reply