If you’re running FreeBSD in a VMware virtual machine, eventually you may run out of disk space. Luckily, FreeBSD with ZFS makes it straightforward to expand your storage once you’ve added more space to the virtual disk.
In this guide, I’ll walk through how I expanded my FreeBSD 14.3 ZFS root disk from 20 GB to 30 GB inside VMware, using real command output from my system.
Step 1. Add More Space to the VMware Disk
In VMware, edit your VM settings and increase the size of your primary disk. In my case, I expanded it from 20 GB → 30 GB.
After restarting the VM, FreeBSD can see the new size.
Step 2. Check Current Partitions
Run:
gpart showOutput before resizing:
=> 40 62914487 nda0 GPT (30G)
40 532480 1 efi (260M)
532520 2008 - free - (1.0M)
534528 4194304 2 freebsd-swap (2.0G)
4728832 37212160 3 freebsd-zfs (18G)
41940992 20973535 - free - (10G)Notice the 10G free space at the end of the disk (- free -). That’s the space we need to attach to our ZFS partition (nda0p3).
Step 3. Resize the Partition
Tell FreeBSD to grow the ZFS partition to fill the free space:
gpart resize -i 3 nda0Output:
nda0p3 resizedStep 4. Expand the ZFS Pool
Now ZFS needs to be told to use the larger partition. Run:
zpool online -e zroot nda0p3No output means it succeeded.
Step 5. Verify the Changes
Check available space with:
df -hOutput after resizing:
Filesystem Size Used Avail Capacity Mounted on
zroot/ROOT/default 15G 5.8G 9.7G 37% /
...
zroot/usr/ports 18G 8.1G 9.7G 46% /usr/ports
zroot/usr/src 11G 858M 9.7G 8% /usr/src
...
zroot/iocage/jails/gitea/root 11G 1.8G 9.7G 16% /zroot/iocage/jails/gitea/rootAnd check the ZFS pool size:
zpool listNAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
zroot 27.5G 16.9G 10.6G - - 57% 61% 1.00x ONLINE -The pool grew from 18G → 27.5G and now has ~10 GB of free space available.
Step 6. Enable Autoexpand (Optional)
To avoid running zpool online -e manually in the future, enable ZFS autoexpand:
zpool set autoexpand=on zrootYou can check the setting with:
zpool get autoexpand zrootAnd that’s it — your ZFS pool grows without a reboot or downtime.
