Table of Contents
Ubuntu - KVM - Add Disk Image
This is useful when you for example want to expand the disk space of your virtual machine when it is using LVM, or if you want to add a swap disk to a virtual machine.
Note that you can also create a swap file instead of a disk, however, this is an example for adding the disk.
Requirements
- Host running KVM and virsh
- Virtual Machine to add disk to
The example VM is named example-vm in virsh (domain).
Create and attach the disk image
Execute these steps on the KVM hypervisor host.
cd to the folder where you store your disk images:
cd /var/lib/libvirt/images/
Create the new disk image
sudo qemu-img create -f raw example-vm-swap.img 1G
We use qemu-img to create a new raw disk image with a size of 1 GB.
Attach the disk to the example virtual machine using virsh
virsh attach-disk example-vm --source /var/lib/libvirt/images/example-vm-swap.img --target vdb --persistent
We use virsh to attach the disk image /var/lib/libvirt/images/example-vm-swap as a virtio (/dev/vdb) disk to the domain (vm) example-vm.
The –persistent option updates the domain xml file with an element for the newly attached disk.
Note that if you already have a /dev/vdb disk you need to change vdb to a free device like vdc or vdd.
Reboot the Virtual Machine
Reboot so that the kernel sees the new disk.
Execute this in the virtual machine.
sudo reboot
Partition the drive
Partition the drive with cfdisk.
For our example we use filesystem type 82 (linux/linux swap):
Execute this in the virtual machine.
cfdisk /dev/vdb
Format the disk as swap:
mkswap /dev/vdb1
or format it as ext4:
mkfs.ext4 /dev/vdb1
Make the swap active
swapon /dev/vdb1
or mount the partition:
mkdir /mnt/new-disk mount /dev/vdb1 /mnt/new-disk
Make the new disk persistant
Add to /etc/fstab for reboot persistence:
- /etc/fstab
/dev/vdb1 swap swap defaults 0 0
or for the ext4 disk:
- /etc/fstab
/dev/vdb1 /mnt/new-disk ext4 defaults 0 0
That's it. You've now created, attached, formatted and mounted a new disk in your VM.
References
- qemu-img man page [http://linux.die.net/man/1/qemu-img]
- virsh-attach doc page [http://builder.virt-tools.org/artifacts/libvirt-virshcmdref/html/sect-attach-disk.html]