This example takes olddisk.qcow2
and resizes it into newdisk.qcow2
,
extending one of the guest's partitions to fill the extra space.
virt-filesystems --long -h --all -a olddisk.qcow2
# Name Type VFS Label MBR Size Parent
# /dev/sda1 filesystem ntfs System Reserved - 50M -
# /dev/sda2 filesystem ntfs - - 39G -
# /dev/sda3 filesystem ntfs - - 513M -
# /dev/sda1 partition - - 07 50M /dev/sda
# /dev/sda2 partition - - 07 39G /dev/sda
# /dev/sda3 partition - - 27 513M /dev/sda
# /dev/sda device - - - 60G -
Tip: On Arch Linux the virt-filesystems
tool is under the libguestfs
package.
So just try a sudo pacman -Sy libguestfs
qemu-img create -f qcow2 -o preallocation=metadata newdisk.qcow2 50G
Note: "/dev/sda2" is a partition inside the olddisk.qcow2
file which we want to resize.
virt-resize --expand /dev/sda2 olddisk.qcow2 newdisk.qcow2
Done! Enjoy your new space!
If you want to create a raw disk instead of a qcow2 try following steps.
Note: This will create a new image newdisk.qcow2
with the given size.
truncate -r olddisk.qcow2 newdisk.qcow2
truncate -s +10G newdisk.qcow2
Note: "/dev/sda2" is a partition inside the olddisk.qcow2
file which we want to resize.
virt-resize --expand /dev/sda2 olddisk.qcow2 newdisk.qcow2
qemu-img info newdisk.qcow2
# image: newdisk.qcow2
# file format: raw
# virtual size: 50 GiB (53693907968 bytes)
# disk size: 36 GiB
virt-filesystems --long -h --all -a newdisk.qcow2
# Name Type VFS Label MBR Size Parent
# /dev/sda1 filesystem ntfs System Reserved - 50M -
# /dev/sda2 filesystem ntfs - - 49G -
# /dev/sda3 filesystem ntfs - - 513M -
# /dev/sda1 partition - - 07 50M /dev/sda
# /dev/sda2 partition - - 07 49G /dev/sda
# /dev/sda3 partition - - 27 513M /dev/sda
# /dev/sda device - - - 50G -
For more details and examples please take a look at the official documentation: https://libguestfs.org/virt-resize.1.html