let’s say you have KVM VM with Linux and you’d like to resize its qcow2-backed disk without shutting down VM.
VM in this example is called mlt0. first – on the KVM server level I’ll find out the location and current size of the qcow2 file:
root@gkvm0:/mnt/big/kvm/mlt0# virsh Welcome to virsh, the virtualization interactive terminal. Type: 'help' for help with commands 'quit' to quit virsh # domblklist mlt0 Target Source --------------------------------------- vda /mnt/big/kvm/mlt0/vda.qcow2 hda - virsh # domblkinfo mlt0 /mnt/big/kvm/mlt0/vda.qcow2 Capacity: 34359738368 Allocation: 22932295680 Physical: 34365243392
then i’ll increase size of it [ be careful, take backup in advance ]:
root@gkvm0:/mnt/big/kvm/mlt0# virsh Welcome to virsh, the virtualization interactive terminal. Type: 'help' for help with commands 'quit' to quit virsh # blockresize mlt0 /mnt/big/kvm/mlt0/vda.qcow2 64G Block device '/mnt/big/kvm/mlt0/vda.qcow2' is resized virsh # domblkinfo mlt0 /mnt/big/kvm/mlt0/vda.qcow2 Capacity: 68719476736 Allocation: 22932299776 Physical: 34365244416
given new-enough kernel the VM should already ‘notice’ increased disk size, if not – partprobe should help:
root@mlt0:/# dmesg [5988323.071764] virtio_blk virtio1: [vda] new size: 134217728 512-byte logical blocks (68.7 GB/64.0 GiB)
now we just need to increase partition and file system:
root@mlt0:/# apt-get install cloud-guest-utils root@mlt0:/# echo 1 > /sys/class/block/vda/device/rescan root@mlt0:/# growpart /dev/vda 1 # grow the 1st partition to use all of available disk space root@mlt0:/# resize2fs /dev/vda1