zpool list -p 's FREE vs. zfs list -p's AVAIL ? FREE-AVAIL == 6_675_374_080 (199G zroot pool)

Mark Millard marklmi at yahoo.com
Thu May 6 00:18:43 UTC 2021



On 2021-May-5, at 17:01, Yuri Pankov <yuripv at FreeBSD.org> wrote:

> Mark Millard via freebsd-current wrote:
>> Context:
>> 
>> # gpart show -pl da0
>> =>       40  468862048    da0  GPT  (224G)
>>         40     532480  da0p1  efiboot0  (260M)
>>     532520       2008         - free -  (1.0M)
>>     534528   25165824  da0p2  swp12a  (12G)
>>   25700352   25165824  da0p4  swp12b  (12G)
>>   50866176  417994752  da0p3  zfs0  (199G)
>>  468860928       1160         - free -  (580K)
>> 
>> There is just one pool: zroot and it is on zfs0 above.
>> 
>> # zpool list -p
>> NAME           SIZE        ALLOC          FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
>> zroot  213674622976  71075655680  142598967296        -         -     28     33   1.00    ONLINE  -
>> 
>> So FREE: 142_598_967_296
>> (using _ to make it more readable)
>> 
>> # zfs list -p zroot 
>> NAME          USED         AVAIL     REFER  MOUNTPOINT
>> zroot  71073697792  135923593216     98304  /zroot
>> 
>> So AVAIL: 135_923_593_216
>> 
>> FREE-AVAIL == 6_675_374_080
>> 
>> 
>> 
>> The questions:
>> 
>> Is this sort of unavailable pool-free-space normal?
>> Is this some sort of expected overhead that just is
>> not explicitly reported? Possibly a "FRAG"
>> consequence?
> 
> From zpoolprops(8):
> 
> free    The amount of free space available in the pool.  By contrast,
>        the zfs(8) available property describes how much new data can be
>        written to ZFS filesystems/volumes.  The zpool free property is
>        not generally useful for this purpose, and can be substantially
>        more than the zfs available space. This discrepancy is due to
>        several factors, including raidz parity; zfs reservation, quota,
>        refreservation, and refquota properties; and space set aside by
>        spa_slop_shift (see zfs-module-parameters(5) for more
>        information).

Thanks for pointing to the reference material.

6_675_374_080/213_674_622_976 =approx= 0.03124 =approx= 1.0/32.0

and spa_slop_shift's description reports:

QUOTE
       spa_slop_shift (int)
                   Normally, we don't allow the last 3.2%
                   (1/(2^spa_slop_shift)) of space in the pool to be consumed.
                   This ensures that we don't run the pool completely out of
                   space, due to unaccounted changes (e.g. to the MOS).  It
                   also limits the worst-case time to allocate space.  If we
                   have less than this amount of free space, most ZPL
                   operations (e.g. write, create) will return ENOSPC.

                   Default value: 5.
END QUOTE

So in my simple context, apparently not much else
contributes and the figures are basically as
expected.

Thanks again.

===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)



More information about the freebsd-stable mailing list