onsdag 3. august 2011

HOWTO: Resize kvm disk image

I Recently needed a way of re-sizing a kvm disk image. I found quite a few guides and tutorials on this. But i found that several steps were unnecessary and time consuming.

The following is my own recipe on re-sizing a kvm disk image. (some of which is plain copy & paste)

Make backup of kvm disk image
sudo mv disk-image.img /backup-path/disk-image.img.backup

Create a new blank qemu image file
sudo qemu-img create -f raw addon.raw 30G

Append addon.raw to the end of disk-image.img and store as the original disk-image.img file
sudo -s
cat /backup/disk-image.img.backup addon.raw >> disk-image.img

Mount the new disk-image to loop device.
losetup -f (we will assume it returns /dev/loop0)
losetup /dev/loop0 disk-image.img

Then use your favorite partitioning tool (fdisk/parted) to recreate your partitions. take care to ensure the partition numbers and partiton types stay the same, also remember bootable flag.
parted /dev/loop0

Add partition mappings
kpartx -av /dev/loop0

Check filesystem and resize partition
e2fsck -f /dev/mapper/loop0p1 (assuming this is the partition we are extending)
resize2fs /dev/mapper/loop0p1 (assuming this is the partition we are extending)

Recreate filesystem on swap partition
mkswap /dev/mapper/loop0p2 (assuming this is your swap partition)

Remove kpartx mappings
kpartx -dv /dev/loop0

Detach loopback device
losetup -d /dev/loop0