While checking for used and free space in a btrfs subvolume, I’m not getting a consistent value. It’s confusing and doesn’t help.
- What is the correct way to find used/free space?
- Why are these values inconsistent (except normal du)?
According to btrfs fi usage /home
, 83.21 GiB is used.
Overall:
Device size: 149.98GiB
Device allocated: 100.07GiB
Device unallocated: 49.91GiB
Device missing: 0.00B
Device slack: 0.00B
Used: 83.21GiB
Free (estimated): 63.06GiB (min: 38.10GiB)
Free (statfs, df): 63.06GiB
Data ratio: 1.00
Metadata ratio: 2.00
...
As per btrfs fi df /home
, used space is 82.86 GiB, not 83.21 GiB.
Data, single: total=96.01GiB, used=82.86GiB
System, DUP: total=32.00MiB, used=16.00KiB
Metadata, DUP: total=2.00GiB, used=178.61MiB
GlobalReserve, single: total=99.50MiB, used=0.00B
As per btrfs fi du -s /home
, used space is 63.11 GiB.
Total Exclusive Set shared Filename
63.11GiB 13.64GiB 49.01GiB /home
While according to du -hs /home
, 64GiB is used.
Also, maximum space used should be close to 72 GiB as per btrfs fi du -s /
and 73 GiB as per du -hs /
, if btrfs fi usage
includes all subvolumes . ‘/home’ and ‘/’ are on separate subvolumes.
It’d be really nice if df -h actually worked for btrfs…
Also, the discrepancies can be way worse than that.
Which is not to say don’t use it, it’s a way superior filesystem, just needs some polishing with these things. Also, remember to occasionally sudo btrfs balance, or better, set up a systemd to do so…