Btrfs - recovering space?

Hi

I have been using Tumbleweed for a long time now with very few issues. So thank you - it’s brilliant.

I have 100GB btrfs volume on a 1TB SSD. The reported usage has been slowly creeping up and I have to manage it carefully, as I have at least on one occasion, run out of space.

I’m wondering if I can recover space, particularly by deleting subvolumes 11-23 e.g.
@/.snapshots/1/snapshot/.snapshots/11/snapshot

Can I also delete snapshot 1 (first root filesystem)?

Here’s the most recent analysis:

==============
> sudo snapper list
--------------
   # | Type   | Pre # | Date                     | User | Cleanup | Description           | Userdata     
-----+--------+-------+--------------------------+------+---------+-----------------------+--------------
  0  | single |       |                          | root |         | current               |              
  1  | single |       | Thu 27 Feb 2020 09:55:48 | root | number  | first root filesystem |              
136* | single |       | Mon 18 Mar 2024 19:16:14 | root |         | writable copy of #114 |              
154  | pre    |       | Sun 31 Mar 2024 13:55:01 | root | number  | zypp(zypper)          | important=yes
155  | post   |   154 | Sun 31 Mar 2024 15:45:11 | root | number  |                       | important=yes
--------------
==============
> sudo btrfs fi show
--------------
Label: none  uuid: d8ab3a11-371d-4244-8327-063049454a95
	Total devices 1 FS bytes used 85.65GiB
	devid    1 size 100.00GiB used 91.09GiB path /dev/nvme0n1p8

--------------
==============
> sudo btrfs fi df /
--------------
Data, single: total=88.00GiB, used=83.39GiB
System, single: total=32.00MiB, used=16.00KiB
Metadata, single: total=3.06GiB, used=2.25GiB
GlobalReserve, single: total=190.81MiB, used=0.00B
--------------
==============
> sudo btrfs fi du -s /.snapshots/
--------------
     Total   Exclusive  Set shared  Filename
 200.66GiB    21.78GiB    39.17GiB  /.snapshots/
--------------
==============
> sudo btrfs fi usage /
--------------
Overall:
    Device size:		 100.00GiB
    Device allocated:		  91.09GiB
    Device unallocated:		   8.91GiB
    Device missing:		     0.00B
    Device slack:		     0.00B
    Used:			  85.65GiB
    Free (estimated):		  13.51GiB	(min: 13.51GiB)
    Free (statfs, df):		  13.51GiB
    Data ratio:			      1.00
    Metadata ratio:		      1.00
    Global reserve:		 190.81MiB	(used: 0.00B)
    Multiple profiles:		        no

Data,single: Size:88.00GiB, Used:83.39GiB (94.77%)
   /dev/nvme0n1p8	  88.00GiB

Metadata,single: Size:3.06GiB, Used:2.25GiB (73.64%)
   /dev/nvme0n1p8	   3.06GiB

System,single: Size:32.00MiB, Used:16.00KiB (0.05%)
   /dev/nvme0n1p8	  32.00MiB

Unallocated:
   /dev/nvme0n1p8	   8.91GiB
--------------
==============
> sudo btrfs fi du -s /0 /bin /boot /certs /data /dev /etc /home /lib /lib64 /mnt /opt /proc /root /run /sbin /snap /srv /sys /tmp /usr /var
--------------
     Total   Exclusive  Set shared  Filename
     0.00B       0.00B       0.00B  /0
   1.85GiB       0.00B     1.85GiB  /bin
     0.00B       0.00B       0.00B  /certs
  12.28GiB       0.00B    12.28GiB  /data
  17.24MiB       0.00B    17.24MiB  /etc
   4.30GiB       0.00B     4.30GiB  /lib
   7.19GiB       0.00B     7.19GiB  /lib64
   2.35GiB     2.35GiB   144.00KiB  /opt
  36.48MiB    36.45MiB    20.00KiB  /root
 185.09MiB       0.00B   185.09MiB  /sbin
   4.55MiB     4.55MiB       0.00B  /srv
   3.78GiB     3.78GiB       0.00B  /tmp
  17.87GiB   208.10MiB    17.67GiB  /usr
--------------
==============
> sudo btrfs qgroup show /
--------------
Qgroupid    Referenced    Exclusive   Path 
--------    ----------    ---------   ---- 
0/5           16.00KiB     16.00KiB   <toplevel>
0/256         16.00KiB     16.00KiB   @
0/257         15.87GiB     15.87GiB   @/var
0/258        216.84MiB    216.70MiB   @/usr/local
0/259          3.79GiB      3.79GiB   @/tmp
0/260          4.61MiB      4.61MiB   @/srv
0/261         41.48MiB     41.48MiB   @/root
0/262          2.35GiB      2.35GiB   @/opt
0/263          4.23MiB      4.23MiB   @/boot/grub2/x86_64-efi
0/264         16.00KiB     16.00KiB   @/boot/grub2/i386-pc
0/265        300.00KiB    300.00KiB   @/.snapshots
0/266         10.57GiB      9.54GiB   @/.snapshots/1/snapshot
0/490          1.72MiB      1.72MiB   @/.snapshots/1/snapshot/.snapshots
0/501          7.95GiB    244.00KiB   @/.snapshots/1/snapshot/.snapshots/11/snapshot
0/502          7.95GiB    224.00KiB   @/.snapshots/1/snapshot/.snapshots/12/snapshot
0/503          7.12GiB    352.00KiB   @/.snapshots/1/snapshot/.snapshots/13/snapshot
0/504          7.12GiB    224.00KiB   @/.snapshots/1/snapshot/.snapshots/14/snapshot
0/505          7.12GiB    144.00KiB   @/.snapshots/1/snapshot/.snapshots/15/snapshot
0/506          7.12GiB    176.00KiB   @/.snapshots/1/snapshot/.snapshots/16/snapshot
0/507          7.95GiB    224.00KiB   @/.snapshots/1/snapshot/.snapshots/17/snapshot
0/508          7.95GiB    224.00KiB   @/.snapshots/1/snapshot/.snapshots/18/snapshot
0/509          7.95GiB    464.00KiB   @/.snapshots/1/snapshot/.snapshots/19/snapshot
0/510          7.95GiB    384.00KiB   @/.snapshots/1/snapshot/.snapshots/20/snapshot
0/511          8.22GiB    240.00KiB   @/.snapshots/1/snapshot/.snapshots/21/snapshot
0/512          8.22GiB    288.00KiB   @/.snapshots/1/snapshot/.snapshots/22/snapshot
0/543          9.21GiB      5.18GiB   @/.snapshots/1/snapshot/.snapshots/23/snapshot
0/93104       31.17GiB    175.95MiB   @/.snapshots/136/snapshot
0/93169       31.56GiB      8.20GiB   @/.snapshots/154/snapshot
0/93175       31.17GiB    174.80MiB   @/.snapshots/155/snapshot
--------------

Thanks for any help

Post output of

btrfs subvolume get-default /
findmnt -u

sudo btrfs subvolume get-default /

ID 93104 gen 2544117 top level 265 path @/.snapshots/136/snapshot

findmnt -u

TARGET                                                                                               SOURCE                                     FSTYPE          OPTIONS
/                                                                                                    /dev/nvme0n1p8[/@/.snapshots/136/snapshot] btrfs           rw,relatime,ssd,discard=async,space_cache,subvolid=93104,subvol=/@/.snapshots/136/snapshot
├─/usr/local                                                                                         /dev/nvme0n1p8[/@/usr/local]               btrfs           rw,relatime,ssd,discard=async,space_cache,subvolid=258,subvol=/@/usr/local
├─/.snapshots                                                                                        /dev/nvme0n1p8[/@/.snapshots]              btrfs           rw,relatime,ssd,discard=async,space_cache,subvolid=265,subvol=/@/.snapshots
├─/boot/grub2/i386-pc                                                                                /dev/nvme0n1p8[/@/boot/grub2/i386-pc]      btrfs           rw,relatime,ssd,discard=async,space_cache,subvolid=264,subvol=/@/boot/grub2/i386-pc
├─/boot/grub2/x86_64-efi                                                                             /dev/nvme0n1p8[/@/boot/grub2/x86_64-efi]   btrfs           rw,relatime,ssd,discard=async,space_cache,subvolid=263,subvol=/@/boot/grub2/x86_64-efi
├─/opt                                                                                               /dev/nvme0n1p8[/@/opt]                     btrfs           rw,relatime,ssd,discard=async,space_cache,subvolid=262,subvol=/@/opt
├─/root                                                                                              /dev/nvme0n1p8[/@/root]                    btrfs           rw,relatime,ssd,discard=async,space_cache,subvolid=261,subvol=/@/root
├─/mnt/win                                                                                           /dev/nvme0n1p3                             fuseblk         rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096
├─/tmp                                                                                               /dev/nvme0n1p8[/@/tmp]                     btrfs           rw,relatime,ssd,discard=async,space_cache,subvolid=259,subvol=/@/tmp
├─/srv                                                                                               /dev/nvme0n1p8[/@/srv]                     btrfs           rw,relatime,ssd,discard=async,space_cache,subvolid=260,subvol=/@/srv
├─/dev                                                                                               devtmpfs                                   devtmpfs        rw,nosuid,size=4096k,nr_inodes=4074301,mode=755,inode64
│ ├─/dev/hugepages                                                                                   hugetlbfs                                  hugetlbfs       rw,nosuid,nodev,relatime,pagesize=2M
│ ├─/dev/mqueue                                                                                      mqueue                                     mqueue          rw,nosuid,nodev,noexec,relatime
│ ├─/dev/shm                                                                                         tmpfs                                      tmpfs           rw,nosuid,nodev,inode64
│ └─/dev/pts                                                                                         devpts                                     devpts          rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000
├─/var                                                                                               /dev/nvme0n1p8[/@/var]                     btrfs           rw,relatime,ssd,discard=async,space_cache,subvolid=257,subvol=/@/var
│ └─/var/lib/docker/overlay2/223e32a8814457004b79e0b07fd1084842254ca1aa37040c06775cff3bad1158/merged overlay                                    overlay         rw,relatime,lowerdir=/var/lib/docker/overlay2/l/YKRFFZ5T7STJ6K2SFBPOTIVBSD:/var/lib/docker/overlay2/l/JIZMGA5EPDZXV4PGO2IBYO56R5:/var/lib/docker/overlay2/l/MUZ4NYCWDZ3JNM4VMKFC5NGN5B:/var/lib/docker/overlay2/l/UB3H7WGZQFMJ4IEVVTP2BIDEIF:/var/lib/docker/overlay2/l/4I2UIIP2EHAM4ZVJMQIS56CAFZ:/var/lib/docker/overlay2/l/5OCCUC66QQ7Q3IA6R2GWHRFSWG,upperdir=/var/lib/docker/overlay2/223e32a8814457004b79e0b07fd1084842254ca1aa37040c06775cff3bad1158/diff,workdir=/var/lib/docker/overlay2/223e32a8814457004b79e0b07fd1084842254ca1aa37040c06775cff3bad1158/work
├─/sys                                                                                               sysfs                                      sysfs           rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/debug                                                                                debugfs                                    debugfs         rw,nosuid,nodev,noexec,relatime
│ │ └─/sys/kernel/debug/tracing                                                                      tracefs                                    tracefs         rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/tracing                                                                              tracefs                                    tracefs         rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/config                                                                               configfs                                   configfs        rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/fuse/connections                                                                         fusectl                                    fusectl         rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/security                                                                             securityfs                                 securityfs      rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/cgroup                                                                                   cgroup2                                    cgroup2         rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot
│ ├─/sys/fs/pstore                                                                                   pstore                                     pstore          rw,nosuid,nodev,noexec,relatime
│ ├─/sys/firmware/efi/efivars                                                                        efivarfs                                   efivarfs        rw,nosuid,nodev,noexec,relatime
│ └─/sys/fs/bpf                                                                                      bpf                                        bpf             rw,nosuid,nodev,noexec,relatime,mode=700
├─/proc                                                                                              proc                                       proc            rw,nosuid,nodev,noexec,relatime
│ └─/proc/sys/fs/binfmt_misc                                                                         systemd-1                                  autofs          rw,relatime,fd=36,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=9009
│   └─/proc/sys/fs/binfmt_misc                                                                       binfmt_misc                                binfmt_misc     rw,nosuid,nodev,noexec,relatime
├─/run                                                                                               tmpfs                                      tmpfs           rw,nosuid,nodev,size=6527044k,nr_inodes=819200,mode=755,inode64
│ ├─/run/docker/netns/6c581323f793                                                                   nsfs[net:[4026533080]]                     nsfs            rw
│ └─/run/user/1000                                                                                   tmpfs                                      tmpfs           rw,nosuid,nodev,relatime,size=3263520k,nr_inodes=815880,mode=700,uid=1000,gid=100,inode64
│   ├─/run/user/1000/doc                                                                             portal                                     fuse.portal     rw,nosuid,nodev,relatime,user_id=1000,group_id=100
│   └─/run/user/1000/gvfs                                                                            gvfsd-fuse                                 fuse.gvfsd-fuse rw,nosuid,nodev,relatime,user_id=1000,group_id=100
├─/home                                                                                              /dev/nvme0n1p9                             xfs             rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota
├─/snap/core18/2812                                                                                  /dev/loop13                                squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/authy/23                                                                                     /dev/loop6                                 squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/gtk-common-themes/1535                                                                       /dev/loop1                                 squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/kde-frameworks-5-qt-5-15-3-core20/8                                                          /dev/loop12                                squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/authy/22                                                                                     /dev/loop9                                 squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/gnome-3-34-1804/93                                                                           /dev/loop2                                 squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/gnome-3-28-1804/194                                                                          /dev/loop4                                 squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/core20/2182                                                                                  /dev/loop7                                 squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/gtk-common-themes/1534                                                                       /dev/loop3                                 squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/gnome-3-28-1804/198                                                                          /dev/loop5                                 squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/core18/2796                                                                                  /dev/loop10                                squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/core20/2105                                                                                  /dev/loop0                                 squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/bare/5                                                                                       /dev/loop14                                squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/core22/1122                                                                                  /dev/loop8                                 squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/slack/139                                                                                    /dev/loop15                                squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/gnome-3-34-1804/90                                                                           /dev/loop11                                squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/boot/efi                                                                                          /dev/nvme0n1p7                             vfat            rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro
├─/snap/snapd/20671                                                                                  /dev/loop18                                squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/slack/132                                                                                    /dev/loop16                                squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/snapd/21184                                                                                  /dev/loop17                                squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/teams-for-linux/539                                                                          /dev/loop21                                squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/tradingview/51                                                                               /dev/loop19                                squashfs        ro,nodev,relatime,errors=continue,threads=single
├─/snap/tradingview/50                                                                               /dev/loop22                                squashfs        ro,nodev,relatime,errors=continue,threads=single
└─/snap/teams-for-linux/537                                                                          /dev/loop20                                squashfs        ro,nodev,relatime,errors=continue,threads=single

Initially you did not have /.snapshots mount point and all these snapshots were created in the wrong place and are now invisible to snapper. Start with deleting them. You probably will need to delete each nested subvolume manually before you can use snapper to delete snapshot 1 itself.

2 Likes

Fantastic. Thank you.

> sudo btrfs subvolume delete /.snapshots/1/snapshot/.snapshots/11/snapshot
Delete subvolume 501 (no-commit): '/.snapshots/1/snapshot/.snapshots/11/snapshot'
: etc
>sudo btrfs subvolume delete /.snapshots/1/snapshot/.snapshots/23/snapshot
Delete subvolume 543 (no-commit): '/.snapshots/1/snapshot/.snapshots/23/snapshot'

sudo rm -rf /.snapshots/1/snapshot/.snapshots
sudu snapper delete -s 1

Looks so much better now

==============
> sudo btrfs fi usage /
--------------
Overall:
    Device size:		 100.00GiB
    Device allocated:		  91.09GiB
    Device unallocated:		   8.91GiB
    Device missing:		     0.00B
    Device slack:		     0.00B
    Used:			  60.66GiB
    Free (estimated):		  38.20GiB	(min: 38.20GiB)
    Free (statfs, df):		  38.20GiB
    Data ratio:			      1.00
    Metadata ratio:		      1.00
    Global reserve:		 190.81MiB	(used: 0.00B)
    Multiple profiles:		        no

Data,single: Size:88.00GiB, Used:58.71GiB (66.71%)
   /dev/nvme0n1p8	  88.00GiB

Metadata,single: Size:3.06GiB, Used:1.95GiB (63.78%)
   /dev/nvme0n1p8	   3.06GiB

System,single: Size:32.00MiB, Used:16.00KiB (0.05%)
   /dev/nvme0n1p8	  32.00MiB

Unallocated:
   /dev/nvme0n1p8	   8.91GiB
--------------

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.