Ganz kurz: KVM & Images

Diesen Beitrag schrieb ich 11 Jahre und 7 Monate zuvor; die nachfolgenden Ausführungen müssen heute nicht unbedingt noch genau so funktionieren. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 1 Minute

Und noch ein Notiz-Schnipsel aus der Sammlung – vielleicht könnt auch ihr etwas damit anfangen, ich bin oftmals sehr glücklich über Notizen dieser Art ;-)

Problemstellung

Die VM basiert auf einem qcow-File – diese lassen sich jedoch nicht ins Filesystem mounten.

$ file myfile.qcow 
myfile.qcow: Qemu Image, Format: Qcow , Version: 2

Eine mögliche Lösung

Man kann die Umwandlung von qcow ins RAW-Format anstoßen:

$ qemu-img convert myfile.qcow -O raw myfile.raw

Zur Sicherheit vergewissern: ja, das resultierende File ist nun RAW:

$ file myfile.raw
myfile.raw: x86 boot sector; partition 1: ID=0x83, starthead 1, startsector 32, 7998048 sectors; partition 2: ID=0x82, starthead 3, startsector 7998080, 2000000 sectors

Um das File mounten zu können, benötigen wir dessen Offset:

$ parted myfile.raw unit B print
Model:  (file)
Disk /path/to/myfile.raw: 5368709120B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start        End          Size         Type     File system  Flags
 1      16384B       4095016959B  4095000576B  primary  ext3              
 2      4095016960B  5119016959B  1024000000B  primary  linux-swap

Und mit dieser Angabe – im Beispiel ist es 16384B – kann das Image nun erfolgreich gemountet werden:

$ mount myfile.raw /mnt -o loop,offset=16384B -t ext3

Nachdem die gewünschten Änderungen vorgenommen wurden das umount nicht vergessen!

$ umount /mnt

Image vergößern

In dem Zuge kann das Image auch vergrößert werden. Beispiel: Image um 4GB vergrößern, dazu erstmal „genulltes“ 4GB-RAW-File anlegen:

$ dd if=/dev/zero of=zeros.raw bs=1024k count=4096

Dann diese 4GB an das eigentliche Image ankleben:

$ cat zero.raw >> myfile.raw

Wenn erforderlich, kann das Image nun wieder nach qcow zurückgewandelt werden:

$ qemu-img convert myfile.raw -O qcow myfile-growed.qcow

Und fertig – genial, oder?