Fix ZFS that runs out of space
We'll confirm usage with zfs list and zpool list, adjust quotas, clear snapshots, and add vdevs when the pool is full—or tell you when to escalate.
What you'll need
- SSH or console access with sudo
Step-by-step diagnostic
Quick triage — pick your path
Get started
Choose the option that matches what you see. You can jump straight to that section.
Show full guide
Steps
Goal: Confirm usage, adjust quotas, clear snapshots, and add vdevs when the pool is full.
- Run zpool list and zfs list -o space to see pool and dataset usage.
- Good: Identify which dataset or pool is out of space. Proceed to Check quota or Clear snapshots.
Check quota
Goal: See if a quota limits the dataset.
- Run zfs get quota,reservation dataset. When quota is set, increase with zfs set quota=size or remove with quota=none.
- Good: Quota increased or removed—space available.
- Bad: No quota or pool full—proceed to Clear snapshots or Add vdev.
Clear snapshots
Goal: Free space held by snapshots.
- Run zfs list -t snapshot. Destroy old snapshots with zfs destroy pool/dataset@snapshot.
- Good: Space freed.
- Bad: No snapshots to remove or pool still full—add vdev or escalate.
Add vdev
Goal: Add capacity when the pool is full.
- Run zpool add pool mirror /dev/sdX /dev/sdY (or raidz2). The pool gains capacity.
- Good: zpool list shows increased free space.
- Bad: No disks available—escalate.
When to escalate
Escalate if:
- The pool is full and you cannot add vdevs.
- You need to shrink a pool (ZFS does not support shrinking).
- zpool add fails.
Provide zpool list, zpool status, zfs list -o space, and zfs get all for affected datasets.
Verification
- zfs list -o space shows available space on the dataset.
- zpool list shows free space in the pool.
- touch /path/test succeeds.
Escalation ladder
Work from the device outward. Stop when the problem is fixed.
- Confirm usage Run zpool list and zfs list -o space.
- Check quota zfs get quota,reservation; increase or remove quota.
- Clear snapshots zfs list -t snapshot; zfs destroy old snapshots.
- Add vdev zpool add when pool is full and disks available.
- Escalate Provide zpool list, zfs list, zfs get output.
What to capture if you need help
Before calling support or posting for help, have these ready. It speeds everything up.
- zpool list output
- zpool status output
- zfs list -o space output
- zfs get all for affected datasets
Does the dataset have a quota?
zfs get quota shows the limit.
You can change your answer later.
Increase or remove quota
zfs set quota=size or quota=none.
Did quota change free space?
You can change your answer later.
Is the pool full?
zpool list shows free space.
You can change your answer later.
Do snapshots hold space?
Snapshots prevent freed space from returning.
Did destroying snapshots free space?
You can change your answer later.
Add vdev to pool
zpool add with new disks.
Escalate
Reviewed by Blackbox Atlas
Frequently asked questions
- Why does ZFS run out of space?
- Quota on a dataset, pool at capacity, or snapshots holding space. Deleted files in snapshots are not freed until the snapshot is destroyed.
- Can I increase ZFS space without adding disks?
- Yes, if a dataset has a quota—increase or remove it. If the pool is full, you must add vdevs or replace drives with larger ones.
- When should I escalate ZFS space issues?
- If the pool is full and you cannot add vdevs, or you need to shrink a pool (ZFS does not support shrinking). Provide zpool list, zfs list -o space, and zfs get all.
Rate this guide
Was this helpful?
Thanks for your feedback.