The Situation

You bumped up your VM's disk size in VMware Fusion, expecting extra breathing room, and... nothing changed. df -h still shows the same old numbers. Classic gotcha: resizing the virtual disk in VMware doesn't automatically flow through to your partition, LUKS container, LVM volume, and filesystem inside the guest OS. Each layer needs to be told separately "hey, there's more room now."

This post walks through the whole thing, step by step, no reboot or live USB required. Works for any Linux distro using LUKS + LVM on install (Debian, Ubuntu, Kali, Parrot, and most others that offer "encrypted LVM" as a setup option), not tied to one specific distro.

Step 1: Shut Down the VM

VMware won't let you touch the disk size while the VM is running. So first:

Your Linux VM → shut down completely (not just sleep/suspend)

Step 2: Increase Disk Size in VMware Fusion

  1. Open VMware Fusion
  2. Select your Linux VM → SettingsHard Disk (NVMe)
  3. Drag the Disk size slider (or type a value) to the new size you want, e.g. going from 60GB to 80GB
  4. Click Apply

You'll see a warning like "Hard disk settings cannot be changed until the virtual machine is shut down" if it's still running, which confirms you need to shut it down first (see Step 1).

Step 3: Start the VM Back Up

Boot your Linux VM normally once the disk size change is applied.

Step 4: Check If the New Space Shows Up

Open a terminal and run:

df -h
lsblk

What these two commands tell you:

  • df -h shows how much space is used/free on each mounted filesystem (like / and /home) in a human-readable format (GB, MB)
  • lsblk shows the full block device tree — the raw disk, its partitions, the LUKS container, and the LVM volumes, all in one view

Here's the catch: even after increasing the disk in VMware, df -h and lsblk will usually still show the old total size. That's because the OS doesn't know about the new space yet, it's just sitting there unused on the virtual disk. You'll need to manually extend it through each layer. That's what the rest of this guide covers.

The Layers You're Extending

A typical Linux install with full-disk encryption looks like this:

Physical Disk (nvme0n1)
 └─ Partition (nvme0n1p4)
     └─ LUKS encrypted container (nvme0n1p4_crypt)
         └─ LVM Physical Volume
             └─ Volume Group (khome-vg)
                 ├─ Logical Volume: root
                 ├─ Logical Volume: swap
                 └─ Logical Volume: home

Five layers. Skip one and the extra space just sits there, unused.


Option A: Extending / (Root)

Use this if df -h shows your root partition (/) is nearly full.

sudo growpart /dev/nvme0n1 4
sudo cryptsetup resize nvme0n1p4_crypt
sudo pvresize /dev/mapper/nvme0n1p4_crypt
sudo lvextend -l +100%FREE /dev/khome-vg/root
sudo resize2fs /dev/khome-vg/root
df -h

What each command actually does, in plain language:

Command What it does
sudo growpart /dev/nvme0n1 4 Stretches partition 4 to fill the newly added disk space
sudo cryptsetup resize nvme0n1p4_crypt Grows the encrypted (LUKS) container to match the bigger partition. Safe to run live, no need to lock/unlock anything
sudo pvresize /dev/mapper/nvme0n1p4_crypt Tells LVM "the disk underneath you just got bigger"
sudo lvextend -l +100%FREE /dev/khome-vg/root Gives all the newly freed space to the root logical volume
sudo resize2fs /dev/khome-vg/root Grows the actual filesystem to use the extra space. This is the step people most often forget
df -h Confirms it worked, root should now show a bigger size and lower usage percentage

Option B: Extending /home

Use this if df -h shows your home partition (/home) is nearly full instead.

sudo growpart /dev/nvme0n1 4
sudo cryptsetup resize nvme0n1p4_crypt
sudo pvresize /dev/mapper/nvme0n1p4_crypt
sudo lvextend -l +100%FREE /dev/khome-vg/home
sudo resize2fs /dev/khome-vg/home
df -h

Exact same idea as Option A, just pointed at home instead of root in the last two commands. (If you only want to give home a fixed chunk instead of everything, swap -l +100%FREE for something like -L +10G.)

⚠️ Important: +100%FREE grabs everything left over. If you already extended root earlier and used up all the free space then, there might be nothing left for home unless you increase the VMware disk size again (back to Step 1) first.

Check how much free space is actually available before extending:

sudo vgs
sudo vgdisplay khome-vg

Look for the VFree / Free PE / Size field. If it's 0 or very small, go back to VMware Fusion and bump the disk size again before running lvextend.


Why Not Just Use GParted?

GParted can resize a plain partition, but it has no idea what to do with LUKS encryption or LVM volumes sitting on top of it. It also can't safely resize a disk that's actively mounted as your running root filesystem. For an encrypted LVM setup like this, the terminal commands above are actually simpler than booting a separate GParted Live ISO and still having to finish the job with cryptsetup, pvresize, and lvextend afterward anyway.

Quick Recap

  1. Shut down the Linux VM
  2. In VMware Fusion, increase Disk size and click Apply
  3. Start the VM back up
  4. Run df -h and lsblk to check, the new space won't show yet
  5. Pick Option A (root) or Option B (home) depending on which partition needs the space
  6. Run through growpartcryptsetup resizepvresizelvextendresize2fs
  7. Confirm with df -h

No reboot mid-process, no downtime, no drama.