Manchmal ist es erforderlich die virtuelle Grösse eines vorhandenen Images zu reduzieren. Wurde ein Ext Dateisystem innerhalb des Images genutzt ist dies durch Nutzung von guestfish, die Shell der libguestfs, sowie virt-resize, ebenfalls Bestandteil von libguestfs, möglich.

Mit qemu-img, in Ubuntu enthalten im Paket qemu-utils, lassen sich allgemeine Informationen wie virtuelle und physikalische Grösse eines Images anzeigen. Das in diesem Beitrage genutzt Image CentOS-6-x86_64-GenericCloud.qcow2 ist unter http://cloud.centos.org/centos/6/images/ verfügbar.

Liegt das Image im qcow2 oder einem anderen Format vort wird es zunächst mit qemu-img convert in ein Raw Format konvertiert.

Anschliessend wird mit guestfish das Dateisystem innerhalb des Images verkleinert. Hierbei ist zu beachten das nicht alle Dateisysteme unterstützt werden, im Fall von Ext4 ist es problemlos möglich. guestfish sowie das nachfolgend genutzte virt-resize sind in Ubuntu im Paket libguestfs-tools enthalten.

Nun wird ein Target Image im Raw Format mit der neuen Grösse erstellt.

Bei Verwendung der gleiche Grösse für das Target Image sowie die angepasste Partition erhält man den nachfolgenden Fehler. Daher wird das Target Image etwas grösser erstellt, in diesem Fall zusätzliche 5 MByte.

Abschliessend kann nun mit virt-resize die eigentliche Verkleinerung des Images durchgeführt werden.

Mittels dem bereits zuvor genutztem qemu-img info kann die virtuelle Grösse des Images geprüft werden, welche nun 2.0G beträgt.