Eucalyptus: Die Größe von Images ändern (Variante 2)

Dieser Artikel beschreibt das Ändern der Größe eines bereits vorhandenen Images.

Situation: Aktuell befindet sich ein Image mit dem Namen "old.img" in der Cloud und wird dort verwendet. Es wird aber ein 4 Gigabyte großes Image benötigt.

Zunächst wird Speicherplatz für das neue Image erstellt.

dd if=/dev/zero of=new.img bs=1M count=4096

Anschließend werden temporäre Mountpoints erstellt.

mkdir old
mkdir new

Dem alten und neuen Image wird jeweils ein Block Loop Device (z.B. loop0 und loop1) zugewiesen.

losetup /dev/loop0 old.img
losetup /dev/loop1 new.img

Auf dem neuen Image wird ein Dateisystem erstellt.

mke2fs -j /dev/loop1

Die Images werden gemounted.

mount /dev/loop0 old
mount /dev/loop1 new

Das neue Image wird befüllt.

(cd old; tar czf - .)|(cd new; tar xzf -)

Die Images werden wieder unmounted.

umount /dev/loop0
umount /dev/loop1

Die Block Loop Devices werden wieder freigegeben.

losetup -d /dev/loop0
losetup -d /dev/loop1

In dem neuen Image "new.img" befindet sich nun eine Replizierung des alten Images "old.img". Allerdings mit der neuen Größe von 4 Gigabyte. Das Image "new.img" kann nun in die Cloud hochgeladen, registriert und genutz werden.

Achtung!!! Es sollte vorab sichergestellt werden, dass die Root Partition der verwendeten Instanz groß genug ist um das neue Image zu benutzen.

Quelle