SSD full BTRFS even after deleting files

I have a laptop 1 m.2 is 1tb, 2 partions windows NTFS and a exfat.

2nd laptop running Garuda BTRFS. Had lots of files noticed Drive was too full moved files off, deleted some cleared caches, removed most snapshots still says its almost full in BTRFS, Dolphine, Nemo and df

I have tried to scrub and balance in btrfs.

I did most of the deleting in Nemo ( KDE but don’t like dolphine).

Most of the files in question are in a root folder I made for jellyfin

I really don’t understand BTRFS all that well. Based on research my metadata has issues.

I did run sudo btrfs balance start -m / it found 4 blocks but didn’t free up much room.

I am guessing I deleted 400gb worth of data. I really wanted to figure this out myself but kinda worried I am making things worse.

Thank you in advance for all help.

  Kernel: 6.8.9-zen1-2-zen arch: x86_64 bits: 64 compiler: gcc v: 14.1.1 clocksource: tsc
    avail: acpi_pm parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=0eb11c94-d361-4490-9a56-8399da90c616 rw rootflags=subvol=@ quiet loglevel=3 ibt=off
  Desktop: KDE Plasma v: 6.0.4 tk: Qt v: N/A info: frameworks v: 6.1.0 wm: kwin_wayland vt: 1
    dm: SDDM Distro: Garuda base: Arch Linux
  Type: Convertible System: SAMSUNG product: 950QDB v: P11AKG serial: <superuser required> Chassis:
    type: 31 serial: <superuser required>
  Mobo: SAMSUNG model: NP950QDB-KB3US v: SGLB153A0D-C01-G001-S0001+10.0.22000
    serial: <superuser required> part-nu: SCAI-A5A5-A5A5-TGL3-PAKG uuid: <superuser required>
    UEFI: American Megatrends LLC. v: P11AKG.027.231017.MK date: 10/17/2023
  ID-1: BAT1 charge: 63.1 Wh (100.0%) condition: 63.1/66.8 Wh (94.5%) volts: 17.3 min: 15.4
    model: SAMSUNG Electronics SR Real Battery type: Li-ion serial: <filter> status: full cycles: 170
  Info: model: 11th Gen Intel Core i7-1165G7 bits: 64 type: MT MCP arch: Tiger Lake gen: core 11
    level: v4 note: check built: 2020 process: Intel 10nm family: 6 model-id: 0x8C (140) stepping: 1
    microcode: 0xB6
  Topology: cpus: 1x cores: 4 tpc: 2 threads: 8 smt: enabled cache: L1: 320 KiB
    desc: d-4x48 KiB; i-4x32 KiB L2: 5 MiB desc: 4x1.2 MiB L3: 12 MiB desc: 1x12 MiB
  Speed (MHz): avg: 1523 high: 3476 min/max: 400/4700 scaling: driver: intel_pstate
    governor: powersave cores: 1: 400 2: 401 3: 3476 4: 2397 5: 400 6: 400 7: 3040 8: 1674
    bogomips: 44851
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Vulnerabilities: <filter>
  Device-1: Intel TigerLake-LP GT2 [Iris Xe Graphics] vendor: Samsung Co driver: i915 v: kernel
    alternate: xe arch: Gen-12.1 process: Intel 10nm built: 2020-21 ports: active: eDP-1 empty: DP-1,
    DP-2, DP-3, DP-4, DP-5 bus-ID: 00:02.0 chip-ID: 8086:9a49 class-ID: 0300
  Device-2: Generic 720p HD Camera driver: uvcvideo type: USB rev: 2.0 speed: 480 Mb/s lanes: 1
    mode: 2.0 bus-ID: 3-6:4 chip-ID: 2b7e:0171 class-ID: fe01 serial: <filter>
  Display: wayland server: v: with: Xwayland v: 23.2.6 compositor: kwin_wayland
    driver: X: loaded: modesetting alternate: fbdev,intel,vesa dri: iris gpu: i915 display-ID: 0
  Monitor-1: eDP-1 res: 1536x864 size: N/A modes: N/A
  API: EGL v: 1.5 hw: drv: intel iris platforms: device: 0 drv: iris device: 1 drv: swrast
    surfaceless: drv: iris wayland: drv: iris x11: drv: iris inactive: gbm
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: intel mesa v: 24.0.6-arch1.2 glx-v: 1.4
    direct-render: yes renderer: Mesa Intel Xe Graphics (TGL GT2) device-ID: 8086:9a49
    memory: 14.94 GiB unified: yes display-ID: :1.0
  API: Vulkan v: 1.3.279 layers: 9 device: 0 type: integrated-gpu name: Intel Xe Graphics (TGL
    GT2) driver: mesa intel v: 24.0.6-arch1.2 device-ID: 8086:9a49 surfaces: xcb,xlib,wayland
    device: 1 type: cpu name: llvmpipe (LLVM 17.0.6 256 bits) driver: mesa llvmpipe
    v: 24.0.6-arch1.2 (LLVM 17.0.6) device-ID: 10005:0000 surfaces: xcb,xlib,wayland
  Device-1: Intel Tiger Lake-LP Smart Sound Audio vendor: Samsung Co
    driver: sof-audio-pci-intel-tgl alternate: snd_hda_intel,snd_sof_pci_intel_tgl bus-ID: 00:1f.3
    chip-ID: 8086:a0c8 class-ID: 0401
  API: ALSA v: k6.8.9-zen1-2-zen status: kernel-api with: aoss type: oss-emulator tools: N/A
  Server-1: PipeWire v: 1.0.6 status: active with: 1: pipewire-pulse status: active
    2: wireplumber status: active 3: pipewire-alsa type: plugin 4: pw-jack type: plugin
    tools: pactl,pw-cat,pw-cli,wpctl
  Device-1: Intel Wi-Fi 6E AX210/AX1675 2x2 [Typhoon Peak] driver: iwlwifi v: kernel pcie: gen: 2
    speed: 5 GT/s lanes: 1 bus-ID: 2d:00.0 chip-ID: 8086:2725 class-ID: 0280
  IF: wlp45s0 state: up mac: <filter>
  Info: services: NetworkManager, smbd, systemd-timesyncd, wpa_supplicant
  Device-1: Intel AX210 Bluetooth driver: btusb v: 0.8 type: USB rev: 2.0 speed: 12 Mb/s lanes: 1
    mode: 1.1 bus-ID: 3-10:5 chip-ID: 
8087:0032 class-ID: e001
  Report: btmgmt ID: hci0 rfk-id: 0 state: up address: <filter> bt-v: 5.3 lmp-v: 12 status:
    discoverable: no pairing: no class-ID: 6c0000
  Local Storage: total: 3.22 TiB used: 2.53 TiB (78.7%)
  SMART Message: Required tool smartctl not installed. Check --recommends
  ID-1: /dev/mmcblk0 maj-min: 179:0 model: SN512 size: 476.71 GiB block-size: physical: 512 B
    logical: 512 B type: USB tech: SSD serial: <filter> scheme: MBR
  ID-2: /dev/nvme0n1 maj-min: 259:2 vendor: Samsung model: MZVLQ1T0HBLB-00B size: 953.87 GiB
    block-size: physical: 512 B logical: 512 B speed: 31.6 Gb/s lanes: 4 tech: SSD serial: <filter>
    fw-rev: FXM7AK1Q temp: 75.8 C scheme: GPT
  ID-3: /dev/nvme1n1 maj-min: 259:0 vendor: Samsung model: SSD 970 EVO Plus 2TB size: 1.82 TiB
    block-size: physical: 512 B logical: 512 B speed: 31.6 Gb/s lanes: 4 tech: SSD serial: <filter>
    fw-rev: 2B2QEXM7 temp: 60.9 C scheme: GPT
  ID-1: / raw-size: 1.82 TiB size: 1.82 TiB (100.00%) used: 1.77 TiB (97.2%) fs: btrfs
    dev: /dev/nvme1n1p1 maj-min: 259:1
  ID-2: /boot/efi raw-size: 260 MiB size: 256 MiB (98.46%) used: 46.9 MiB (18.3%) fs: vfat
    dev: /dev/nvme0n1p1 maj-min: 259:3
  ID-3: /home raw-size: 1.82 TiB size: 1.82 TiB (100.00%) used: 1.77 TiB (97.2%) fs: btrfs
    dev: /dev/nvme1n1p1 maj-min: 259:1
  ID-4: /var/log raw-size: 1.82 TiB size: 1.82 TiB (100.00%) used: 1.77 TiB (97.2%) fs: btrfs
    dev: /dev/nvme1n1p1 maj-min: 259:1
  ID-5: /var/tmp raw-size: 1.82 TiB size: 1.82 TiB (100.00%) used: 1.77 TiB (97.2%) fs: btrfs
    dev: /dev/nvme1n1p1 maj-min: 259:1
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
  ID-1: swap-1 type: zram size: 15.3 GiB used: 538 MiB (3.4%) priority: 100 comp: zstd
    avail: lzo,lzo-rle,lz4,lz4hc,842 max-streams: 8 dev: /dev/zram0
  Src: /sys System Temperatures: cpu: 83.0 C mobo: N/A
  Fan Speeds (rpm): N/A
  Power: 12v: N/A 5v: 5 3.3v: N/A vbat: N/A
  Memory: total: 16 GiB note: est. available: 15.3 GiB used: 6.65 GiB (43.4%)
  Processes: 317 Power: uptime: 1h 25m states: freeze,mem,disk suspend: s2idle avail: deep
    wakeups: 0 hibernate: platform avail: shutdown, reboot, suspend, test_resume image: 6.11 GiB
    services: org_kde_powerdevil, power-profiles-daemon, upowerd Init: systemd v: 255
    default: graphical tool: systemctl
  Packages: pm: pacman pkgs: 1978 libs: 581 tools: octopi,paru Compilers: clang: 17.0.6
    gcc: 14.1.1 Client: shell wrapper v: 5.2.26-release inxi: 3.3.34
Garuda (2.6.26-1):
  System install date:     2024-05-06
  Last full system update: 2024-05-18
  Is partially upgraded:   No
  Relevant software:       snapper NetworkManager dracut
  Windows dual boot:       Probably (Run as root to verify)
  Failed units:            

╰─λ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme1n1p1  1.9T  1.8T   52G  98% /
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           7.7G   72M  7.6G   1% /dev/shm
efivarfs        128K  115K  8.4K  94% /sys/firmware/efi/efivars
tmpfs           3.1G  2.3M  3.1G   1% /run
/dev/nvme1n1p1  1.9T  1.8T   52G  98% /home
/dev/nvme1n1p1  1.9T  1.8T   52G  98% /root
/dev/nvme1n1p1  1.9T  1.8T   52G  98% /srv
/dev/nvme1n1p1  1.9T  1.8T   52G  98% /var/tmp
/dev/nvme1n1p1  1.9T  1.8T   52G  98% /var/log
/dev/nvme1n1p1  1.9T  1.8T   52G  98% /var/cache
tmpfs           7.7G   11M  7.7G   1% /tmp
/dev/nvme0n1p1  256M   47M  210M  19% /boot/efi
tmpfs           1.6G  914M  653M  59% /run/user/1000
/dev/nvme1n1p1  1.9T  1.8T   52G  98% /run/BtrfsAssistant/0eb11c94-d361-4490-9a56-8399da90c616
/dev/nvme0n1p4  470G  284G  187G  61% /run/media/user/FF79-B04D
/dev/nvme0n1p3  469G  450G   20G  96% /run/media/user/82A25B9DA25B950F
╰─λ lsblk
mmcblk0     179:0    0 476.7G  0 disk
└─mmcblk0p1 179:1    0 476.7G  0 part
zram0       254:0    0  15.3G  0 disk [SWAP]
nvme1n1     259:0    0   1.8T  0 disk
└─nvme1n1p1 259:1    0   1.8T  0 part /run/BtrfsAssistant/0eb11c94-d361-4490-9a56-8399da90c616
nvme0n1     259:2    0 953.9G  0 disk
├─nvme0n1p1 259:3    0   260M  0 part /boot/efi
├─nvme0n1p2 259:4    0    16M  0 part
├─nvme0n1p3 259:5    0 468.8G  0 part /run/media/user/82A25B9DA25B950F
├─nvme0n1p4 259:6    0 469.6G  0 part /run/media/user/FF79-B04D
├─nvme0n1p5 259:7    0  14.2G  0 part
└─nvme0n1p6 259:8    0     1G  0 part
╰─λ sudo btrfs filesystem usage /
Device size:                   1.82TiB
Device allocated:              1.78TiB
Device unallocated:           36.95GiB
Device missing:                  0.00B
Device slack:                    0.00B
Used:                          1.77TiB
Free (estimated):             51.30GiB      (min: 32.82GiB)
Free (statfs, df):            51.30GiB
Data ratio:                       1.00
Metadata ratio:                   2.00
Global reserve:              512.00MiB      (used: 0.00B)
Multiple profiles:                  no

Data,single: Size:1.78TiB, Used:1.76TiB (99.21%)
/dev/disk/by-uuid/0eb11c94-d361-4490-9a56-8399da90c616          1.78TiB

Metadata,DUP: Size:3.00GiB, Used:2.56GiB (85.46%)
/dev/disk/by-uuid/0eb11c94-d361-4490-9a56-8399da90c616          6.00GiB

System,DUP: Size:32.00MiB, Used:224.00KiB (0.68%)
/dev/disk/by-uuid/0eb11c94-d361-4490-9a56-8399da90c616         64.00MiB

/dev/disk/by-uuid/0eb11c94-d361-4490-9a56-8399da90c616         36.95GiB

I ran a number of commands from other sites, finally I got desperate and deleted all my snapshots and rebooted. Got 572 gb of space back. Did one of my snapshots try to back up the folder I made on root? Is there some way to exclude that, if so what term should I search for.

Thanks in advance

If you delete a file which is captured in a Btrfs snapshot, the space is not released until you delete the snapshot. The snapshot continues to “remember” the file you deleted.

This feature is basically the whole point of taking snapshots. If you don’t want this behavior you should just stop snapshotting your system altogether.


That doesn’t matter, what matters is this:

Take a look here:

I realized I did not directly answer this question. You can exclude a directory from snapshots by creating a new subvolume for it.

sudo btrfs subvolume create /jellyfin

You can move your files into that subvolume and use it just like an ordinary directory.

1 Like

Yah I read that still not sure what it all means. its ok, As I said when I deleted the snapshots it cleared up the space. It was tired and had been working on it for hours.

THank you, I created a jf subvolume and from what I am reading it will not be included in other snapshots. Can you conrfirm. If I run update now, it will create a snapshot and ignore the ‘jf’ subvolume i created.

sudo btrfs subvolume list /

ID 256 gen 82291 top level 5 path @
ID 257 gen 82291 top level 5 path @home
ID 258 gen 82275 top level 5 path @root
ID 259 gen 63308 top level 5 path @srv
ID 260 gen 82284 top level 5 path @cache
ID 261 gen 82291 top level 5 path @log
ID 262 gen 82132 top level 5 path @tmp
ID 263 gen 79854 top level 256 path .snapshots
ID 264 gen 82282 top level 256 path jf
1 Like

Yes, files that you add to the jf subvolume (or any other subvolume) will not be included in snapshots that are taken of the @ subvolume.


Thank you for your help

For those reading from the bottom up. This is what I understand, likely incorrect in many ways.

My SSD with BTRFS was critically full. All attempts to delete content form a folder ‘/jf’ failed to free up space. This was as intended because snapshots taken were essentially holding that data on the drive in case I wanted to restore them in the future. Once I deleted the snapshots from via snapper my drive was no longer near full.

To prevent this in the future I was advised to make a sub volume for ‘jf’ to prevent snapshots from being taken of that data.

sudo btrfs subvolume create /jf

I confirmed the subvolume exists with

sudo btrfs subvolume list /
ID 256 gen 82690 top level 5 path @
ID 257 gen 82690 top level 5 path @home
ID 258 gen 82275 top level 5 path @root
ID 259 gen 63308 top level 5 path @srv
ID 260 gen 82673 top level 5 path @cache
ID 261 gen 82690 top level 5 path @log
ID 262 gen 82132 top level 5 path @tmp
ID 263 gen 79854 top level 256 path .snapshots
ID 264 gen 82282 top level 256 path jf

My drive is no longer critically full and I can work to free up space with out snapshots holding space on the drive.

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme1n1p1  1.9T  1.3T  573G  70% /

Yes, the way you explained it is pretty much spot on. I think your understanding is better than you are giving yourself credit for! :smile:

1 Like

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