Boot Environment Disk Space Usage

ZFS Boot Environment snapshots consume an increasing amount of disk space over time as the contents of the disk diverge from when it was created compared to the current state of the disk.

A ZFS Boot Environment snapshot taken before upgrading to a new version of pfSense® Plus software can consume several gigabytes of space as those updates will rewrite the entire base system and all of the other components including packages as they are all reinstalled. Updating between development snapshots will cause a ZFS Boot Environment to consume about 500MB of disk space, give or take, based on what changed in the snapshot.


Frequent upgrades between development snapshots can cause ZFS Boot Environments to consume a lot of disk space!

The operating system reflects this usage as a change in the capacity of the disk. The size of a disk will appear to decrease proportionate to the snapshot usage, and this change is reflected on the dashboard Disks widget and in utilities such as df.

Removing older ZFS Boot Environments that are no longer necessary will free the space and make it available again. While the system will attempt to clean up older automatically created ZFS Boot Environments, ultimately it is up to the administrator to decide which ZFS Boot Environments are necessary.


Automatic creation of ZFS Boot Environments during upgrade can be disabled. Administrators may choose to do this, for example, if space is at a premium and administrators prefer not to use ZFS Boot Environments, or they wish to manage ZFS Boot Environments manually, See Boot Environments.


The following are examples of space usage for numerous ZFS Boot Environments.


This figure shows the Dashboard Disks and ZFS widgets on a firewall with a 12GB disk and 12 ZFS Boot Environments from snapshot upgrades.


Dashboard Disk Usage with 12 Boot Environments

Note that the disk size is listed as being only about 3GB when it should be significantly larger.

The next figure is the same system with the older Boot Environments removed so that only the default and one previous entry remain:


Dashboard Disk Usage with 1 Boot Environment


Similar to the above example, this is the same firewall but with the disk usage checked at the shell instead of the GUI.

With 12 Boot Environments:

: df -h /
Filesystem              Size    Used   Avail Capacity  Mounted on
pfSense/ROOT/default    3.1G    1.2G    1.9G    39%    /

: zfs list /
pfSense/ROOT/default  6.93G  1.90G  1.20G  /

With the default plus one automatic Boot Environment:

: df -h /
Filesystem              Size    Used   Avail Capacity  Mounted on
pfSense/ROOT/default    8.1G    1.2G    6.9G    15%    /

: zfs list /
pfSense/ROOT/default  1.96G  6.89G  1.20G  /