# sudo btrfs fi df /mnt/disk3
Data, single: total=12.70TiB, used=12.27TiB
System, DUP: total=8.00MiB, used=1.34MiB
Metadata, DUP: total=15.00GiB, used=14.50GiB
GlobalReserve, single: total=512.00MiB, used=608.00KiB

# mkdir /mnt/disk3/tst
mkdir: cannot create directory ‘tst’: No space left on device

I suspect this is BTRFS balancing issue, but even BTRFS’s own utility is indicating there’s still SOME space left. Certainly should be enough to create a directory.

Any ideas?

Just in general BTRFS default options for creating new volumes seem to not work well for disks that I intend to fill completely immediately after formatting. Are there better options for this use case? I just use

# mkfs.btrfs /dev/sdd1

10 points

When you create a filesystem, there is a parameter named as “block percent free”. This parameter should be “5%”, so a 5% of your partition size can only be written by the “root” user.

You can decrease this value or just free some space. You can try to create files or folders as root as well.

permalink
report
reply
4 points
*

Is there any reason this 5% number still holds true? Back in the days of 40 MB hard drives it made sense to make sure the system didn’t totally run out while root was fixing the low disk situation … but these days even 1% is still several gigabytes of space, not likely to run out that quickly.

permalink
report
parent
reply
4 points
2 points

Fragmentation probably but seems arbitrary

permalink
report
parent
reply
3 points

You/I learn something new every day. Cool info!

permalink
report
parent
reply
3 points

Are you sure that’s the case with btrfs? I know ext has that feature. My understanding is btrfs just has a global reserve that can be used for any data in an low space situation.

# sudo btrfs fi usage /mnt/disk3
Overall:
    Device size:                  12.73TiB
    Device allocated:             12.73TiB
    Device unallocated:            1.00MiB
    Device missing:                  0.00B
    Device slack:                    0.00B
    Used:                         12.29TiB
    Free (estimated):            449.43GiB      (min: 449.43GiB)
    Free (statfs, df):           449.43GiB
    Data ratio:                       1.00
    Metadata ratio:                   2.00
    Global reserve:              512.00MiB      (used: 0.00B)
    Multiple profiles:                  no

Data,single: Size:12.70TiB, Used:12.26TiB (96.55%)
   /dev/sdd1      12.70TiB

Metadata,DUP: Size:15.00GiB, Used:14.49GiB (96.58%)
   /dev/sdd1      30.00GiB

System,DUP: Size:8.00MiB, Used:1.34MiB (16.80%)
   /dev/sdd1      16.00MiB

Unallocated:
   /dev/sdd1       1.00MiB
permalink
report
parent
reply
5 points

For me the answer is always “snapshots” and normally because of docker.

If you run a docker image store on a BTRFS drive, docker creates snapshots at various times. It never cleans them up; It has no commands that clean them up, and it means that if you delete a file it doesn’t free any space because the snapshots keep the file alive.

permalink
report
reply
2 points

also, ‘df -i’. probably not this case but…

permalink
report
reply
1 point

btrfs dynamically allocates inodes.

permalink
report
parent
reply
2 points

Looking at balancing might be right place to start. ref, https://archive.kernel.org/oldwiki/btrfs.wiki.kernel.org/index.php/FAQ.html#Help.21_I_ran_out_of_disk_space.21

You might want to start by rebalancing by percentages and not all at once. If nothing else it’ll tell you much sooner if you’re on the right track or not. Something like sudo btrfs balance start -dusage=20 -musage=20 /mnt/disk3 to work on only blocks that are 20% full or less. That should coaleace them into single data blocks and free up some others.

permalink
report
reply
2 points

As a rule of thumb you should keep your disk usage around 60% or under.

My guess it that you have snapshots or other similar hidden data taking up space. List out your snapshots and sub volumes.

permalink
report
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

  • 7.4K

    Monthly active users

  • 6.6K

    Posts

  • 180K

    Comments