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.

Category
Troubleshooting · Servers & Linux
Time
15–45 min
Last reviewed
What you'll need
  • SSH or console access with sudo

Step-by-step diagnostic

Step 1 of 6
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.

  1. Confirm usage Run zpool list and zfs list -o space.
  2. Check quota zfs get quota,reservation; increase or remove quota.
  3. Clear snapshots zfs list -t snapshot; zfs destroy old snapshots.
  4. Add vdev zpool add when pool is full and disks available.
  5. 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.

Run zfs get quota dataset. Quota set: increase with zfs set quota=size or remove with quota=none. No quota: the pool may be full—check zpool list.

You can change your answer later.

Increase or remove quota

zfs set quota=size or quota=none.

Run zfs set quota=30G dataset to increase, or zfs set quota=none to remove. Good: zfs list -o space shows available space. Bad: pool is full—add vdev or clear snapshots.
Question

Did quota change free space?

You can change your answer later.

Is the pool full?

zpool list shows free space.

Run zpool list. Pool full: add vdev with zpool add, or replace drives with larger ones. Pool has free space: dataset quota or snapshots may be the cause—check quota and zfs list -t snapshot.

You can change your answer later.

Do snapshots hold space?

Snapshots prevent freed space from returning.

Run zfs list -t snapshot. Destroy old snapshots with zfs destroy pool/dataset@snapshot. Good: space freed. Bad: no snapshots or pool still full—add vdev or escalate.
Question

Did destroying snapshots free space?

You can change your answer later.

Add vdev to pool

zpool add with new disks.

Run zpool add pool mirror /dev/sdX /dev/sdY (or raidz2). Pool gains capacity. ZFS does not support removing vdevs. If you cannot add disks, escalate.

Escalate

Provide zpool list, zpool status, zfs list -o space, zfs get all. Escalate when pool is full and you cannot add vdevs.

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.

Continue to