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.

  1. What is the correct way to find used/free space?
  2. 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.

You are viewing a single thread.
View all comments
6 points

I’m not an expert on btrfs, but I assume the inconsistencies come from deduplication, metadata, and maybe compression. I think some of them just count raw block storage, and some include the cost of metadata.

Traditional du assumes that each file takes up it’s full space on disk which isn’t always the case on btrfs. When using btrfs backed oci images, storage can easily appear multiple times higher.

I use btrfs filesystem usage /. I’m not sure that it is the “correct” way, but it works fairly well.

permalink
report
reply
2 points
*

Between btrfs filesystem usage / and btrfs filesystem du -s / there’s nearly 11GiB difference for used space. I have checked btrfs du -hs <path/to/subvolume> for all subvolume in the filesystem, and total seems to be 72 GiB, hence the confusion. Still I don’t know if I’m using the tools properly or something else is at fault here.

To correct myself, 11GiB is additional space used by snapshot probably used space difference between btrfs fi usage and btrfs fi du -s / is because of diff between snapshot and parent volume (didn’t consider that while adding all used GiB of subvolumes). So btrfs filesystem usage works well to check used/free space.

edit: fix incorrect args; additional space is not diff

permalink
report
parent
reply

Linux

!linux@lemmy.ml

Create post

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

  • Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
  • No misinformation
  • No NSFW content
  • No hate speech, bigotry, etc

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

Community stats

  • 9.8K

    Monthly active users

  • 6.1K

    Posts

  • 170K

    Comments