Running out of disk space on BTRFS

I had tried btrfs some years ago, and my disk went into thrashing mode. I gave up and went to EXT4. Now I tried it again, on my wifeโ€™s laptop :open_mouth: It seemed to work okay for quite some time, but now she is getting out of disk space messages. It looked like quite a few snapper entries. I am just having a hard time finding much about this. I know I can delete them, but donโ€™t want to have to keep doing that. There should be a way to limit snapshots to not run out of disk space. I canโ€™t remember what the size of the partition was, but at least 50GB, maybe 100GB.

Have a look at the configuration files in /etc/snapper/configs - the settings in those files control how long the snapshots stay around and how the automatic cleanup works. The default file for the root configuration is well-commented.

Show the output of this, for a start โ€ฆ be sure to show the command and output and then the final prompt:
(use the Preformatted Text tool)

:>  sudo btrfs filesystem usage -T /

Not sure if you are using Gnome or not, but apparently that misreports disk usage under BTRFS, so often those messages are nothing to worry about. Admins may know more about this & be able to confirm or do a search for more info. . The command in the previous post will should also help to show the real picture.

I found a couple of settings in /etc/snapper/configs/root that probably should be adjusted.

# fraction of the filesystems space the snapshots may use
SPACE_LIMIT="0.5"

# fraction of the filesystems space that should be free
FREE_LIMIT="0.2"

But not sure what they should be. Looks like the free limit should give about 61*.2 = 12 GB free?

> sudo btrfs filesystem usage -T /
[sudo] password for root:  
Overall:
   Device size:                  61.00GiB
   Device allocated:             61.00GiB
   Device unallocated:            1.00MiB
   Device missing:                  0.00B
   Device slack:                    0.00B
   Used:                         59.43GiB
   Free (estimated):            371.24MiB      (min: 371.24MiB)
   Free (statfs, df):           371.24MiB
   Data ratio:                       1.00
   Metadata ratio:                   2.00
   Global reserve:              133.84MiB      (used: 0.00B)
   Multiple profiles:                  no

            Data     Metadata System                              
Id Path      single   DUP      DUP      Unallocated Total    Slack
-- --------- -------- -------- -------- ----------- -------- -----
1 /dev/sda5 54.98GiB  6.00GiB 16.00MiB     1.00MiB 61.00GiB     -
-- --------- -------- -------- -------- ----------- -------- -----
  Total     54.98GiB  3.00GiB  8.00MiB     1.00MiB 61.00GiB 0.00B
  Used      54.62GiB  2.41GiB 16.00KiB      

Whoa!!! Iโ€™m shocked yaโ€™ll havenโ€™t experienced any erratic behavior (or as you wrote: thrashing mode) with your wifeโ€™s laptop.

Iโ€™d highly recommend doing a โ€œclean-upโ€ (BTRFS, etc) to clear up some disk space. I would also suggest checking โ€œwhereโ€ all the disk space consumption is happening.

It could be some hidden โ€œexcessive cachingโ€ with applications[1]. And of course, configuration for BTRFS filesystem.

I have a thread out here from quite a while ago , when I experienced the same issue. Iโ€™ll search for it to see the various commands I executed to clean it up โ€ฆ it did work and was able to โ€˜recoverโ€™ the system.

.
[1] Interesting side note about โ€œexcessive hidden caching of appsโ€, in my search to find where large files exist in my home directory.
I use the Chrome browser - I discovered that it creates a subsystem named, โ€œOptGuideOnDeviceModelโ€ and stores OVER 4 gigabyte of disk space in your home directory!!! I disabled that feature, so instantly recovered the disk space.

Not sure if you have already installed filelight or are still able to install it but this is a great way to get fast insight on where space is used:

Filelight shows wrong calculations for BTRFS. You can google it. And there are even threads here.

Your screenshot is a good exampleโ€ฆ/home and / are 0 B?

/root is empty as I did run it as normal user and /home is empty as it is on another disk.

Yes, BTRFS is a pain on disk usage but AFAIK filelight generally work, it treats them like regular directories.

There are BTRFS-specific quirks like compression, deduplication, or shared extents, so sizes may not reflect actual disk usage but as long as you take the numbers not as absolute the relative sizes will be still semi-accurate.

Okay, I found my old thread. But my situation was a bit more โ€œcatastrophicโ€. The link to the orig thread is the last one in this Reply. (geez I was wordy).

Basically, my system at the time was locked up (read-only), running Tumbleweed (now with Leap).

This basically sums it up โ€ฆ what I did:
(basically, these command can be used to clean up a BTRFS system, even if youโ€™re no locked up )

==== quote
I am HAPPY to report that I ran the steps, one by one, found in here
โ€œrepair broken btrfsโ€ link
https://en.opensuse.org/SDB:BTRFS#How_to_repair_a_broken/unmountable_btrfs_filesystem

.
I also toggled to this webpage to compare the steps (SLES documentation):
โ€œHow to recover from BTRFS errorsโ€ link
https://www.suse.com/support/kb/doc/?id=000018769

==== end quote

My long-time-ago thread:
.

I did filelight, thought it was running on the /home directory, added an exclude, and still going past 61GB! I finally just let run and it came up with 900 some GB for .snapshots. That seemed wrong, but maybe it expanded the (what I would call the deltas)?

Two days ago, you showed the output of โ€œbtrfsโ€, which MORE ACCURATELY shows device size and space usage:

It was already mentioned to NOT RELY on Filelight.
( Folks should not recommend the use of Filelight to openSUSE users with BTRFS filesystems ).

So now, youโ€™re showing that Filelight is reporting an almost one terabyte storage device, when itโ€™s size is really 61 gigabyte ?!?!?!?!? Yes, itโ€™s rwong :+1:

I provided a link to documentation (previously), which I recommend reading the section, " Disk Space Full Because of Snapper" โ€ฆ and obviously, check the other sections :slight_smile:

https://en.opensuse.org/SDB:BTRFS#How_to_repair_a_broken/unmountable_btrfs_filesystem

Well, I was asked to find out where the space was. Didnโ€™t figure accuracy was important as long as it showed the most space.
And I have no reason to think the system is broken. I did see the full portion, but it referred to a zram which I do not understand what itโ€™s purpose is, and looked like a good way to mess things up if I donโ€™t know what Iโ€™m doing.
sudo zramctl /dev/zram0 --algorithm zstd --size "$(($(grep -Po 'MemTotal:\s*\K\d+' /proc/meminfo)/2))KiB"
I mean, thatโ€™s too much without explanation of why. Yes, โ€œto use as temporary, memory backed storage for our full btrfs filesystemโ€, but why? And if itโ€™s a temporary backup and I do something wrong, will it destroy the main system?
And after creating the zram device, there didnโ€™t seem any reference for using it. Of course, I donโ€™t understand it.
But that section was for deleting certain snapshots. And in Yast, thereโ€™s something about snapper and also in partition that lists snapshots and give a delete option. But having to manually go in every so often before it fills and delete some is what I wanted to get away from. The FREE_LIMIT=โ€œ0.2โ€. Why doesnโ€™t that work to give 20% free space?
Thereโ€™s so many strange and odd btrfs commands I came across, but one was to see what things would automatically run, and the system showed one was for cleanup.

Without knowing what else to do so it automatically takes care of things, I went into Yast and snapshots, deleted a few of the earlier ones, and got 15GB of free space. This will buy me time until I can update her computer to 16.0. And will probably never try btrfs again.

I would recommend against not using btrfs, better to understand it. It is particularly helpful for rolling back updates if you have issues (more important on TW than Leap, but still useful on Leap, too).

Itโ€™s just important to ensure youโ€™ve allocated enough space to the partition at installation time to account for snapshots.

Likewise if it is filling up, then likely the maintenance routines to cleanup are not runningโ€ฆ they run monthlyโ€ฆ There should only be 10 pre/post kept as wellโ€ฆ

I suspect when you move to Leap 16.0 it will keep btrfs stuff clean.

I did a systemctl list-timers and it showed a snapper timeline and cleanup timer ran a few minutes ago. But I think there was more than 10 snapshots when I was manually deleting some.
How much space does one need for the snapshots?
It just seems like btrfs is like a whole new programming language you have to learn just to keep your file system functioning and not a lot of information that I can find on how to do it.

@dt30 It should only keep 10โ€ฆ This is a Leap 16.0 system installed mid March;

snapper list

  # โ”‚ Type   โ”‚ Pre # โ”‚ Date                            โ”‚ User โ”‚ Used Space โ”‚ Cleanup โ”‚ Description           โ”‚ Userdata
โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
 0  โ”‚ single โ”‚       โ”‚                                 โ”‚ root โ”‚            โ”‚         โ”‚ current               โ”‚
 1* โ”‚ single โ”‚       โ”‚ Tue 17 Mar 2026 10:34:09 AM CDT โ”‚ root โ”‚ 139.13 MiB โ”‚         โ”‚ first root filesystem โ”‚
22  โ”‚ pre    โ”‚       โ”‚ Tue 17 Mar 2026 11:29:11 AM CDT โ”‚ root โ”‚ 705.20 MiB โ”‚ number  โ”‚ zypp(zypper)          โ”‚ important=yes
23  โ”‚ post   โ”‚    22 โ”‚ Tue 17 Mar 2026 11:32:18 AM CDT โ”‚ root โ”‚   1.16 GiB โ”‚ number  โ”‚                       โ”‚ important=yes
40  โ”‚ pre    โ”‚       โ”‚ Mon 06 Apr 2026 07:32:08 AM CDT โ”‚ root โ”‚  23.38 MiB โ”‚ number  โ”‚ zypp(zypper)          โ”‚ important=yes
41  โ”‚ post   โ”‚    40 โ”‚ Mon 06 Apr 2026 07:33:51 AM CDT โ”‚ root โ”‚  94.11 MiB โ”‚ number  โ”‚                       โ”‚ important=yes
42  โ”‚ pre    โ”‚       โ”‚ Sat 11 Apr 2026 09:31:17 AM CDT โ”‚ root โ”‚   8.88 MiB โ”‚ number  โ”‚ zypp(zypper)          โ”‚ important=yes
43  โ”‚ post   โ”‚    42 โ”‚ Sat 11 Apr 2026 09:32:06 AM CDT โ”‚ root โ”‚  28.61 MiB โ”‚ number  โ”‚                       โ”‚ important=yes
50  โ”‚ pre    โ”‚       โ”‚ Tue 21 Apr 2026 11:44:57 AM CDT โ”‚ root โ”‚  26.40 MiB โ”‚ number  โ”‚ zypp(zypper)          โ”‚ important=yes
51  โ”‚ post   โ”‚    50 โ”‚ Tue 21 Apr 2026 11:47:17 AM CDT โ”‚ root โ”‚ 117.66 MiB โ”‚ number  โ”‚                       โ”‚ important=yes
52  โ”‚ pre    โ”‚       โ”‚ Thu 23 Apr 2026 09:33:46 PM CDT โ”‚ root โ”‚   9.53 MiB โ”‚ number  โ”‚ zypp(zypper)          โ”‚ important=no
53  โ”‚ post   โ”‚    52 โ”‚ Thu 23 Apr 2026 09:34:44 PM CDT โ”‚ root โ”‚  50.05 MiB โ”‚ number  โ”‚                       โ”‚ important=no
54  โ”‚ pre    โ”‚       โ”‚ Sat 02 May 2026 08:40:17 PM CDT โ”‚ root โ”‚   9.34 MiB โ”‚ number  โ”‚ zypp(zypper)          โ”‚ important=yes
55  โ”‚ post   โ”‚    54 โ”‚ Sat 02 May 2026 08:42:11 PM CDT โ”‚ root โ”‚  73.38 MiB โ”‚ number  โ”‚                       โ”‚ important=yes
56  โ”‚ pre    โ”‚       โ”‚ Wed 06 May 2026 04:11:20 PM CDT โ”‚ root โ”‚   3.53 MiB โ”‚ number  โ”‚ zypp(zypper)          โ”‚ important=no
57  โ”‚ post   โ”‚    56 โ”‚ Wed 06 May 2026 04:11:38 PM CDT โ”‚ root โ”‚   4.01 MiB โ”‚ number  โ”‚                       โ”‚ important=no
58  โ”‚ pre    โ”‚       โ”‚ Wed 06 May 2026 04:16:42 PM CDT โ”‚ root โ”‚   2.00 MiB โ”‚ number  โ”‚ zypp(zypper)          โ”‚ important=no
59  โ”‚ post   โ”‚    58 โ”‚ Wed 06 May 2026 04:16:57 PM CDT โ”‚ root โ”‚  22.77 MiB โ”‚ number  โ”‚                       โ”‚ important=no
60  โ”‚ pre    โ”‚       โ”‚ Wed 06 May 2026 04:23:13 PM CDT โ”‚ root โ”‚ 336.00 KiB โ”‚ number  โ”‚ zypp(zypper)          โ”‚ important=no
61  โ”‚ post   โ”‚    60 โ”‚ Wed 06 May 2026 04:23:27 PM CDT โ”‚ root โ”‚   4.36 MiB โ”‚ number  โ”‚                       โ”‚ important=no

btrfs fi usage /

Overall:
    Device size:		 699.85GiB
    Device allocated:		 25.07GiB
    Device unallocated:		 674.78GiB
    Device missing:		     0.00B
    Device slack:		     0.00B
    Used:	                 21.29GiB
    Free (estimated):		 678.08GiB	(min: 340.69GiB)
    Free (statfs, df):		 678.08GiB
    Data ratio:			      1.00
    Metadata ratio:		      2.00
    Global reserve:		  47.66MiB	(used: 0.00B)
    Multiple profiles:		        no

Data,single: Size:23.01GiB, Used:19.71GiB (85.65%)
   /dev/nvme0n1p5	  23.01GiB

Metadata,DUP: Size:1.00GiB, Used:812.86MiB (79.38%)
   /dev/nvme0n1p5	   2.00GiB

System,DUP: Size:32.00MiB, Used:16.00KiB (0.05%)
   /dev/nvme0n1p5	  64.00MiB

Unallocated:
   /dev/nvme0n1p5	 674.78GiB