Der chunk allocator wird automatisch aktiviert. OpenSUSE verwendet btrfs-balance.service um die chunks wieder freizugeben:
**erlangen:~ #** systemctl status btrfs-balance.timer btrfs-balance.service
**●** btrfs-balance.timer - Balance block groups on a btrfs filesystem
Loaded: loaded (/usr/lib/systemd/system/btrfs-balance.timer; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/btrfs-balance.timer.d
└─schedule.conf
Active: **active (waiting)** since Tue 2021-11-23 18:28:12 CET; 11h ago
** Trigger: Mon 2021-11-29 00:00:00 CET; 4 days left **
Triggers: ● btrfs-balance.service
Docs: man:btrfs-balance
Nov 23 18:28:12 erlangen systemd[1]: Started Balance block groups on a btrfs filesystem.
○ btrfs-balance.service - Balance block groups on a btrfs filesystem
Loaded: loaded (/usr/lib/systemd/system/btrfs-balance.service; static)
Active: inactive (dead)
TriggeredBy: **●** btrfs-balance.timer
Docs: man:btrfs-balance
**erlangen:~ #**
Im obigen Beispiel wird btrfs-balance.service einmal in der Woche durch den timer aufgerufen.
Braucht man den Platz sofort kann man den service von Hand aufrufen:
erlangen:~ # systemctl start btrfs-balance.service
erlangen:~ #
erlangen:~ # journalctl -b -u btrfs-balance.service
-- Journal begins at Sat 2021-11-20 06:27:17 CET, ends at Wed 2021-11-24 06:23:05 CET. --
Nov 24 06:22:33 erlangen systemd[1]: Started Balance block groups on a btrfs filesystem.
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: Before balance of /
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: Data, single: total=22.01GiB, used=19.12GiB
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: System, single: total=32.00MiB, used=16.00KiB
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: Metadata, single: total=3.00GiB, used=1.03GiB
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: GlobalReserve, single: total=52.12MiB, used=0.00B
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: /dev/nvme0n1p3 56G 22G 32G 41% /
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: Done, had to relocate 0 out of 27 chunks
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: flock: es dauerte 0.000002 Sekunden, um die Sperre zu bekommen
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: flock: btrfs wird ausgeführt
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: Dumping filters: flags 0x1, state 0x0, force is off
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: DATA (flags 0x2): balancing, usage=5
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: Done, had to relocate 0 out of 27 chunks
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: flock: es dauerte 0.000006 Sekunden, um die Sperre zu bekommen
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: flock: btrfs wird ausgeführt
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: Dumping filters: flags 0x1, state 0x0, force is off
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: DATA (flags 0x2): balancing, usage=10
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: Done, had to relocate 0 out of 27 chunks
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: flock: es dauerte 0.000006 Sekunden, um die Sperre zu bekommen
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: flock: btrfs wird ausgeführt
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: Done, had to relocate 0 out of 27 chunks
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: flock: es dauerte 0.000006 Sekunden, um die Sperre zu bekommen
Nov 24 06:22:33 erlangen btrfs-balance.sh[14562]: flock: btrfs wird ausgeführt
Nov 24 06:22:34 erlangen btrfs-balance.sh[14562]: Dumping filters: flags 0x6, state 0x0, force is off
Nov 24 06:22:34 erlangen btrfs-balance.sh[14562]: METADATA (flags 0x2): balancing, usage=3
Nov 24 06:22:34 erlangen btrfs-balance.sh[14562]: SYSTEM (flags 0x2): balancing, usage=3
Nov 24 06:22:34 erlangen btrfs-balance.sh[14562]: Done, had to relocate 1 out of 27 chunks
Nov 24 06:22:34 erlangen btrfs-balance.sh[14562]: flock: es dauerte 0.000008 Sekunden, um die Sperre zu bekommen
Nov 24 06:22:34 erlangen btrfs-balance.sh[14562]: flock: btrfs wird ausgeführt
Nov 24 06:22:34 erlangen btrfs-balance.sh[14562]: After balance of /
Nov 24 06:22:34 erlangen btrfs-balance.sh[14562]: Data, single: total=22.01GiB, used=19.12GiB
Nov 24 06:22:34 erlangen btrfs-balance.sh[14562]: System, single: total=32.00MiB, used=16.00KiB
Nov 24 06:22:34 erlangen btrfs-balance.sh[14562]: Metadata, single: total=3.00GiB, used=1.03GiB
Nov 24 06:22:34 erlangen btrfs-balance.sh[14562]: GlobalReserve, single: total=57.56MiB, used=0.00B
Nov 24 06:22:34 erlangen btrfs-balance.sh[14562]: Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
Nov 24 06:22:34 erlangen btrfs-balance.sh[14562]: /dev/nvme0n1p3 56G 22G 32G 41% /
Nov 24 06:22:34 erlangen systemd[1]: btrfs-balance.service: Deactivated successfully.
erlangen:~ #
Bringt das auch nicht den gewünschten Erfolg, kann man “btrfs balance start” ausführen, Details siehe “man btrfs-balance”.
** Zusammenfassung**
In der Praxis gibt es nichts tun. Alles läuft automatisch ab. Den “unallocated space” sollte man allerdings im Auge behalten und im Zweifelsfall wie oben beschrieben vorgehen.