A few days ago I started up Ubuntu in a VM to run some silly experiment. Suddenly I needed a bit more space though, and instead of creating a new disk I decided to expand the current one instead. This took some time to figure out, so posting it here for my future self and others who possibly might want to do this.
Since there was nothing of real importance on this VM, I did most steps on the VM while it was running. Take backups if you attempt this and care about your data, I am not sure all of it is safe.
qemu-img resize disk-0.qcow2 50G
Then I started the VM, installed gparted and expanded the partition. df still reported the disk to be 90% full though. Eventually I figured that I also needed to expand the logical volume. The command to do this was:
sudo lvextend -l +100%FREE /dev/mapper/<volume name>
But still df reported the volume to be full. Seems the ext4 filesystem also needs to be expanded. This did the job:
sudo resize2fs /dev/mapper/<volume name>
Finally df reports lots of free space! Sweet!
At the beginning, I shut down the VM before I did the first resizing of the .qcow2 file. I am not sure that was necessary. The next time I need to expand a disk on an unimportant VM, I will try without shutting it down for sure.