Resize a Virtual Hard Disk

VBoxManage list hdds
VBoxManage showmediuminfo ${DISK_UUID}

# resize to 10 GiB
VBoxManage modifymedium disk ${DISK_UUID} --resizebyte $((10 * 1024 * 1024 * 1024))

Confirm Resize

Inside the VM:

lsblk

Reshape Partition Table

Inside the VM:

apt install gdisk
gdisk ${DEVICE}

Use p to view the current layout, and remember the current geometry.

If you have a GPT disk, then you may need to use xe to relocate the backup data to the end of the disk... Before doing this, the "free space" will likely be close to zero.

  • x - enter "expert" menu
  • e - relocate backup data structures to the end of the disk
  • m - return to main menu

Now delete the last partition, and re-create using the same start sector, and a further end sector.

  • d - delete a partition
    • ? - the partition's number
  • n - add a new partition
    • ? - the partition's number
    • ? - the partition's start sector (exactly as above)
    • ? - the partition's end sector - leave blank to use all available space
    • ? - the partition's type (8300 = "Linux filesystem")
  • p - print the partition table and confirm the changes
  • w - write table to disk and exit

Verify changes: (reboot if they are not yet reflected)

partprobe
lsblk

Resize Filesystem

Ext 2 / 3 / 4

Online resize is possible:

resize2fs ${DEVICE}