Raymii.org
Quis custodiet ipsos custodes?Home | About | All pages | Cluster Status | RSS Feed
KVM add disk image or swap image to virtual machine with virsh
Published: 23-02-2014 | Author: Remy van Elst | Text only version of this article
❗ This post is over ten years old. It may no longer be up to date. Opinions may have changed.
Table of Contents
This tutorial shows you how to create and add a disk image to a KVM vm using virsh. 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.
Recently I removed all Google Ads from this site due to their invasive tracking, as well as Google Analytics. Please, if you found this content useful, consider a small donation using any of the options below:
I'm developing an open source monitoring app called Leaf Node Monitoring, for windows, linux & android. Go check it out!
Consider sponsoring me on Github. It means the world to me if you show your appreciation and you'll help pay the server costs.
You can also sponsor me by getting a Digital Ocean VPS. With this referral link you'll get $200 credit for 60 days. Spend $25 after your credit expires and I'll get $25!
Read this tutorial to learn how to set up a proper KVM hypervisor host: https://raymii.org/s/tutorials/KVM with bonding and VLAN tagging setup on Ubuntu_12.04.html
Requirements
Host running KVM and virsh
Virtual Machine to add disk to
This was tested on a KVM hypervisor host running Ubuntu 12.04 LTS and a Ubuntu 13.10 virtual machine. The KVM hypervisor uses virsh for management.
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:
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
.
Formatting the disk
Execute these steps in your virtual machine.
Reboot it so that the kernel sees the new disk:
reboot
Partition the drive with cfdisk
. For our example we use filesystem type 82
(linux/linux swap):
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
Add to /etc/fstab for reboot persistence:
/dev/vdb1 swap swap defaults 0 0
Or for the ext4 disk:
/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.