[Bug 297408] [zfs] pool checkpoint can eat up all available and unreasonable amount of space

From: <bugzilla-noreply_at_freebsd.org>
Date: Sun, 09 Aug 2026 22:16:10 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=297408

            Bug ID: 297408
           Summary: [zfs] pool checkpoint can eat up all available and
                    unreasonable amount of space
           Product: Base System
           Version: 15.1-RELEASE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: emz@norma.perm.ru

FreeBSD 15.1-RELEASE. First seen on 15.0-RC1.

Each noon the following shell script works from cron:

===Cut===
for pool in zroot data
do
    zpool checkpoint -d -w $pool || true
    zpool checkpoint $pool
done

[dataset snapshotting and snapshot rotation]
===Cut===

Once in several days (like 7-10) the checkpoint eats up all of the available
space, and we're talking terabytes:

# zpool status
  pool: data
 state: ONLINE
checkpoint: created Mon Aug 10 00:00:00 2026, consumes 3.61T
config:

        NAME        STATE     READ WRITE CKSUM
        data        ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            nda0    ONLINE       0     0     0
            nda1    ONLINE       0     0     0
            nda2    ONLINE       0     0     0
            nda3    ONLINE       0     0     0

errors: No known data errors

Under normal conditions the pool is about 50% used:

# zpool list
NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH 
ALTROOT
data   14.0T  7.70T  6.27T        -         -    34%    55%  1.00x    ONLINE  -
zroot  1.72T   192G  1.53T    5.61M         -     5%    10%  1.00x    ONLINE  -

The pool normally holds small amount of daily rotated snapshots. Snapshotting,
their rotation and zpool checkpointing all take place from one single script
running commands sequentially.

Dataset layout:


# zfs list -t all
NAME                                       USED  AVAIL  REFER  MOUNTPOINT
data                                      5.60T  4.43T   140K  /data
data/attic                                 407G  4.43T   407G 
/usr/local/public/attic
data/mongodb                              1.37T  4.43T  1.37T  /var/db/mongodb
data/mongodb@06-08-2026                    442K      -  1.37T  -
data/mongodb@07-08-2026                    494K      -  1.37T  -
data/mongodb@08-08-2026                    494K      -  1.37T  -
data/mongodb@09-08-2026                    465K      -  1.37T  -
data/mongodb@10-08-2026                    418K      -  1.37T  -
data/mysql                                3.69T  4.43T  3.62T  /var/db/mysql
data/mysql@06-08-2026                     14.8G      -  3.61T  -
data/mysql@07-08-2026                     8.57G      -  3.62T  -
data/mysql@08-08-2026                     8.22G      -  3.62T  -
data/mysql@09-08-2026                     8.12G      -  3.62T  -
data/mysql@10-08-2026                     6.85G      -  3.63T  -
zroot                                      192G  1.48T    96K  /zroot
zroot/ROOT                                8.40G  1.48T    96K  none
zroot/ROOT/default                        8.40G  1.48T  8.40G  /
zroot/home                                 420M  1.48T   398M  /home
zroot/home/emz                            22.5M  1.48T  22.5M  /home/emz
zroot/tmp                                 22.8M  1.48T  22.8M  /tmp
zroot/usr                                 58.1G  1.48T    96K  /usr
zroot/usr/local                           49.5G  1.48T  2.07G  /usr/local
zroot/usr/local/etc                       1.38M  1.48T  1.38M  /usr/local/etc
zroot/usr/local/public                    47.4G  1.48T   104K 
/usr/local/public
zroot/usr/local/public/jails              47.4G  1.48T   112K 
/usr/local/public/jails
zroot/usr/local/public/jails/php74        32.2G  1.48T  9.33G 
/usr/local/public/jails/php74
zroot/usr/local/public/jails/php74@reloc  22.8G      -  32.1G  -
zroot/usr/local/public/jails/php84        7.45G  1.48T  7.45G 
/usr/local/public/jails/php84
zroot/usr/local/public/jails/php84@reloc   336K      -  7.45G  -
zroot/usr/local/public/jails/php85        7.77G  1.48T  7.44G 
/usr/local/public/jails/php85
zroot/usr/local/public/jails/php85@reloc   337M      -  6.95G  -
zroot/usr/ports                           5.74G  1.48T  5.74G  /usr/ports
zroot/usr/src                             2.92G  1.48T  2.92G  /usr/src
zroot/var                                  125G  1.48T    96K  /var
zroot/var/audit                             96K  1.48T    96K  /var/audit
zroot/var/crash                             96K  1.48T    96K  /var/crash
zroot/var/db                               231M  1.48T    96K  /var/db
zroot/var/db/mongodb-config                231M  1.48T   209M 
/var/db/mongodb-config
zroot/var/db/mongodb-config@29-03-2026     320K      -   211M  -
zroot/var/db/mongodb-config@30-03-2026     252K      -   216M  -
zroot/var/db/mongodb-config@31-03-2026     324K      -   210M  -
zroot/var/db/mongodb-config@01-04-2026     272K      -   215M  -
zroot/var/db/mongodb-config@02-04-2026       0B      -   209M  -
zroot/var/db/mongodb-config@06-08-2026       0B      -   209M  -
zroot/var/db/mongodb-config@07-08-2026       0B      -   209M  -
zroot/var/db/mongodb-config@08-08-2026       0B      -   209M  -
zroot/var/db/mongodb-config@09-08-2026       0B      -   209M  -
zroot/var/db/mongodb-config@10-08-2026       0B      -   209M  -
zroot/var/log                             2.21M  1.48T  2.21M  /var/log
zroot/var/mail                            4.21M  1.48T  4.21M  /var/mail
zroot/var/tmp                              296K  1.48T   296K  /var/tmp
zroot/var/www                              125G  1.48T   123G  /var/www
zroot/var/www@13-03-2026                  83.2M      -   124G  -
zroot/var/www@14-03-2026                  79.4M      -   124G  -
zroot/var/www@15-03-2026                  59.7M      -   124G  -
zroot/var/www@16-03-2026                  41.4M      -   124G  -
zroot/var/www@17-03-2026                   338M      -   124G  -
zroot/var/www@06-08-2026                     0B      -   123G  -
zroot/var/www@07-08-2026                     0B      -   123G  -
zroot/var/www@08-08-2026                     0B      -   123G  -
zroot/var/www@09-08-2026                     0B      -   123G  -
zroot/var/www@10-08-2026                     0B      -   123G  -

The server runs Mysql database.

-- 
You are receiving this mail because:
You are the assignee for the bug.