Growing a Proxmox VM disk is a two-part job: first make the virtual disk bigger on the host, then grow the partition and filesystem inside the guest. Both parts can usually be done while the VM keeps running.
Before you start
- A backup or snapshot of the VM.
- Free space on the storage that holds the disk.
- Shrinking is not supported in the web UI and is risky; only grow disks.
Resize the Proxmox VM disk on the host
- Select the VM → Hardware and click the disk (for example
scsi0). - Choose Disk Action → Resize and enter the amount to add in GiB.
- Click Resize disk.
Shell equivalent (adds 20 GB):
qm resize 105 scsi0 +20GGrow the partition and filesystem in Linux
Check the new size with lsblk. Then, for a simple ext4 root on /dev/sda1:
growpart /dev/sda 1resize2fs /dev/sda1For XFS use xfs_growfs / instead of resize2fs.
If the root is on LVM (common Ubuntu installs)
growpart /dev/sda 3pvresize /dev/sda3lvextend -r -l +100%FREE /dev/ubuntu-vg/ubuntu-lvThe -r option grows the filesystem in the same step. Adjust partition numbers and names to what lsblk shows.
Note: Install cloud-guest-utils (Debian/Ubuntu) or cloud-utils-growpart (RHEL family) to get growpart.
Grow the disk in Windows
- Open Disk Management and choose Action → Rescan Disks.
- Right-click the C: volume and choose Extend Volume.
- If a recovery partition sits after C:, it blocks extension; it must be moved or removed with care.
Check afterwards
df -hshows the larger filesystem.- The VM's applications work normally.
Troubleshooting
- Guest still shows the old size: rescan (
echo 1 > /sys/class/block/sda/device/rescan) or reboot. - growpart says NOCHANGE: the partition already fills the disk, or you chose the wrong partition number.
- Resize error on host: not enough free space in the storage, or the VM has snapshots on some storage types.
Frequently asked questions
Can I resize while the VM runs?
Yes, for most storage types and modern guests.
Can I shrink a disk?
Not safely from Proxmox. Create a smaller disk and copy data instead.
Should I add a second disk instead?
That is fine for data, such as a separate /var/lib/mysql volume.
