===== Images konvertieren, komprimieren, verschlüsseln und vergrößern ===== Das Tool qemu-img kann Images in unterschiedliche Formate umwandeln. Dazu dient der Parameter convert. Das Format des Zielsystems wird mit dem Parameter -O angegeben. Das Quellformat wird von qemu-img meist automatisch erkannt, es kann aber auch mit dem Parameter -f vorgegeben werden. Hier wird zum Beispiel eine virtuelle Festplatte im raw-Format in das Format qcow2 umgewandelt. ''Host ~$ **qemu-img convert -f raw -O qcow2 Platte.img Platte-dyn.img**'' In diesem Beispiel wird ein im Internet veröffentlichtes Disketten-Image in das Format qcow2 umgewandelt. ''Host ~$ **qemu-img convert -f http -O qcow2 \\\ http://static.netboot.me/gpxe/netbootme.dsk netbootme.qcow2**'' ''Host ~$ **qemu -fda netbootme.qcow2**'' Ab QEMU 0.15 zeigt die Option -p Fortschritte bei den Befehlen convert und rebase an. ''Host ~$ **qemu-img convert -p -f raw -O qcow2 Platte.img Platte-dyn2.img**\\ (20.02/100%)'' Die Image-Formate qcow und qcow2 lassen sich mit qemu-img und dessen Parameter -c komprimieren. Werden nach dem Komprimieren Sektoren neu geschrieben sind diese nicht komprimiert. ''Host ~$ **qemu-img convert -c -O qcow2 Platte.img komprimiert.img**'' Die Image-Formate qcow und qcow2 lassen sich mit qemu-img mit einem Passwort verschlüsseln. Die Verschlüsselung erfolgt mit AES (128 Bit Schlüssel) und ist dadurch sehr sicher. Für maximale Sicherheit ist ein Passwort mit 16 Zeichen zu verwenden. ''Host ~$ **qemu-img convert -O qcow2 -o encryption Platte.img encrypted.img**\\ Disk image 'encrypted.img' is encrypted.\\ password: ** ***** **'' Vor QEMU 0.13 ist die Option -e anzuwenden. ''Host ~$ **qemu-img convert -e -O qcow2 Platte.img encrypted.img**'' Dieses Image wird wie gewohnt eingebunden. Die Instanz wartet im Stop-Zustand. ''Host ~$ **qemu encrypted.img**'' Im QEMU-Monitor wird mit dem Befehl c der Stop-Zustand der Instanz beendet und es ist das Passwort einzugeben. ''(qemu) **c**\\ ide0-hd0 (encrypted.img) is encrypted.\\ Password: ** ****** **'' Im QEMU-Monitor ändert man das Passwort für das Device mit dem Befehl block_passwd. Zuvor ist der Name des Devices zu ermitteln. In diesem Beispiel ist es das Device ide0-hd0. ''(qemu) **info block**\\ ide0-hd0: type=hd removable=0 backing_file=encrypted.img ro=0 drv=qcow2 encrypted=1\\ (qemu) block_passwd ide0-hd0 ** ***** **'' Wenn sich eine Image-Datei als zu klein erweist, lässt sie sich vergrößern. Zuerst muss das Gast-System heruntergefahren werden. Da nur Images im raw-Format vergrößert werden können, ist das Format vorher zu ermitteln und, wenn nötig, das Image zu konvertieren. qemu-img info ermittelt das Format. ''Host ~$ **qemu-img info Platte.img**\\ file format: qcow2'' In diesem Beispiel liegt das Image Platte.img im Format qcow2 vor. Es muss konvertiert werden. ''Host ~$ **qemu-img convert -O raw Platte.img Platte-raw.img**'' Ab QEMU 0.13 wird von qemu-img der Befehl resize unterstützt. Mit resize wird das Fassungsvermögen einer virtuellen Festplatte im raw-Format geändert. Im folgenden Beispiel wird das Fassungsvermögen des Images um 2 GByte vergrößert. Im Gast-System ist dieser neue Speicherbereich zu partitionieren und zu formatieren (siehe unten). ''Host ~$ **qemu-img resize Platte-raw.img +2G**'' Soll die Image-Datei zur Laufzeit der virtuellen Maschine geändert werden, ist im QEMU-Monitor der Befehl block_resize anzuwenden. In diesem Beispiel wird die Größe der virtuellen Festplatte mit 10 GByte neu definiert. ''(qemu) **info block**\\ ide0-hd0: type=hd removable=0 file=ubuntu-server.img ro=0 drv=qcow2 encrypted=0'' ''(qemu) **block_resize ide0-hd0 10G**'' Bei älteren QEMU-Versionen erfolgt die Vergrößerung eines Images durch das Anhängen eines zweiten Images im raw-Format. Soll das Image zum Beispiel um 500 MByte vergrößert werden, ist ein weiteres Image mit einer Größe von 500 MByte anzulegen. ''Host ~$ **qemu-img create -f raw temp.img 500M**'' Unter Linux werden mehrere Dateien mit cat zusammengeführt. ''Host ~$ **cat Platte-raw.img temp.img > Platte-groesser-raw.img**'' Unter Microsoft Windows werden Dateien in der DOS-Eingabeaufforderung mit dem Befehl copy und dem Parameter /b zusammengeführt. ''Host C:\> **copy /b Platte-raw.img+temp.img Platte-groesser-raw.img**\\ qemu-img info zeigt die geänderte Größe an. '' ''Host ~$ **qemu-img info Platte-groesser-raw.img**\\ image: Platte-groesser-raw.img\\ file format: raw\\ virtual size: 1.1G (1205862400 bytes)\\ disk size: 1.1G'' Der zusätzliche Bereich auf der virtuellen Festplatte ist weder partitioniert noch formatiert. Eine Vergrößerung der ersten Partition um diesen Bereichen ermöglicht der Gnome Partition Editor, kurz GParted (http://gparted.sourceforge.net). Man startet QEMU oder KVM mit dem vergrößerten Image und bootet von der GParted-Live-CD. ''Host ~$ **qemu -hda Platte-groesser-raw.img \\\ -cdrom gparted-live-0.9.0-7.iso -boot d -vga std**'' Nach dem Hochfahren zeigt der Gnome Partition Editor die Partitionen und freien Bereiche der Festplatten an. Zur Vergrößerung einer Partition wählt man diese aus und klickt auf das Icon Größe ändern/verschieben. Es erscheint ein Fenster. Dort verschiebt man zur Vergrößerung der Partition den Pfeil an der rechten Seite oder stellt die gewünschte Größe mit den Zahlen ein. Anschließend klickt man auf den Button Größe ändern/verschieben. Danach betätigt man das Icon Apply, um die Änderungen auf die Festplatte zu schreiben. Beendet wird die GParted-Live-CD mit einem Klick auf das Icon Exit.