Storage

How to Resize Disks in Proxmox VE: Linux, LVM, and Windows Guests

Resize VM disks in Proxmox VE using qm resize, then extend the partition and filesystem inside Linux (ext4, XFS, LVM) and Windows guests with step-by-step commands.

ProxmoxR app icon

Managing Proxmox? Try ProxmoxR

Monitor and control your VMs & containers from your phone.

Try Free

Overview of Disk Resizing in Proxmox

Resizing a VM disk in Proxmox is a two-step process. First, you increase the virtual disk size at the Proxmox level. Second, you extend the partition and filesystem inside the guest OS to use the new space. Proxmox supports growing disks online (while the VM is running) for most storage backends, though the guest-side steps vary depending on the operating system and filesystem.

Note that Proxmox only supports increasing disk size, not shrinking. If you need a smaller disk, create a new one and migrate the data.

Step 1: Resize the Disk in Proxmox

Using the Web UI

Navigate to your VM, go to Hardware, select the disk, and click Resize disk. Enter the amount of space to add (not the total new size). For example, entering 20 adds 20 GB to the existing disk.

Using the Command Line

The qm resize command is more flexible:

# Add 20GB to disk scsi0 of VM 100
qm resize 100 scsi0 +20G

# Set the disk to exactly 100GB (must be larger than current size)
qm resize 100 scsi0 100G

For containers, use pct resize:

pct resize 200 rootfs +10G

After resizing at the Proxmox level, the guest OS sees a larger raw disk but the existing partition and filesystem have not changed yet. You must handle that inside the guest.

Step 2a: Extending a Linux Guest (Simple Partition + ext4)

This is the most common scenario: a single partition with an ext4 filesystem, typical of cloud images and basic installations.

Install cloud-guest-utils if not present (for the growpart utility):

apt install cloud-guest-utils -y   # Debian/Ubuntu
yum install cloud-utils-growpart -y  # RHEL/CentOS

Check the current layout:

lsblk
# Example output:
# sda      20G
# ├─sda1   19G   /
# └─sda14  4M    (BIOS boot)

Grow the partition to fill the available space:

growpart /dev/sda 1

Resize the ext4 filesystem (works online, no unmount needed):

resize2fs /dev/sda1

Verify:

df -h /

Step 2b: Extending a Linux Guest (XFS)

XFS uses a different resize command. XFS can only be grown while mounted:

# Grow the partition first
growpart /dev/sda 1

# Resize the XFS filesystem
xfs_growfs /

Note that xfs_growfs takes the mount point as its argument, not the device path.

Step 2c: Extending a Linux Guest (LVM)

If your Linux guest uses LVM (common with RHEL/CentOS/AlmaLinux installations), the process has an additional step to extend the logical volume.

# 1. Grow the physical partition
growpart /dev/sda 2

# 2. Resize the physical volume
pvresize /dev/sda2

# 3. Extend the logical volume to use all free space
lvextend -l +100%FREE /dev/mapper/rl-root

# 4. Resize the filesystem
# For ext4:
resize2fs /dev/mapper/rl-root

# For XFS:
xfs_growfs /

Check the results:

pvs    # Shows updated PV size
vgs    # Shows VG with new free space (should be 0 after lvextend)
lvs    # Shows extended LV
df -h  # Shows the filesystem using the new space

Step 2d: Extending a Windows Guest

Windows detects the additional disk space automatically after a Proxmox-level resize. You just need to extend the volume.

Using Disk Management GUI

Open Disk Management (right-click Start > Disk Management). You will see unallocated space next to your existing partition. Right-click the volume and select Extend Volume, then follow the wizard.

Using diskpart (Command Line)

Open an elevated Command Prompt or PowerShell:

diskpart
list disk
select disk 0
list partition
select partition 2
extend

Using PowerShell

A more modern approach using PowerShell cmdlets:

# Find the partition to extend
Get-Partition -DiskNumber 0

# Get maximum supported size
$maxSize = (Get-PartitionSupportedSize -DiskNumber 0 -PartitionNumber 2).SizeMax

# Resize the partition
Resize-Partition -DiskNumber 0 -PartitionNumber 2 -Size $maxSize

GPT vs MBR Considerations

Modern VMs typically use GPT partition tables, which may have a secondary GPT header at the end of the disk. When you resize the disk, this header needs to be moved. The growpart tool handles this automatically on Linux. If you encounter issues, fix it manually:

sgdisk -e /dev/sda

For MBR disks, growpart works without any special handling, but MBR has a 2 TB partition size limit.

Handling SCSI vs VirtIO Disks

Both SCSI (via VirtIO SCSI controller) and VirtIO Block disks support online resizing. After running qm resize, the guest kernel should detect the new size immediately. If it does not, you can trigger a rescan:

# For SCSI disks
echo 1 > /sys/class/scsi_device/0:0:0:0/device/rescan

# For VirtIO disks (usually detected automatically)
dmesg | tail -5

Disk resizing is a routine operation in any Proxmox environment. With ProxmoxR, you can monitor disk utilization trends across all your VMs to proactively resize disks before guests run out of space.

Take Proxmox management mobile

All the features discussed in this guide — accessible from your phone with ProxmoxR. Real-time monitoring, power control, firewall management, and more.

ProxmoxR

Manage Proxmox from your phone

Monitor, control, and manage your clusters on the go.

Free 7-day trial · No credit card required