Festplatte voll mit Btrfs-Subvolumes
Ich hatte eine ganze Reihe Btrfs-Subvolumes im Dateisystem von openSUSE Tumbleweed einhängen, die Platz auf der Festplatte gebraucht haben, aber im Root-Verzeichnis leer waren. Es waren vor allem Subvolumes von Docker, die den Platz beansprucht haben:
$ sudo btrfs subvolume list / ID 257 gen 101389 top level 5 path var/tmp [...] ID 1599 gen 101254 top level 5 path var/lib/docker/btrfs/subvolumes/5d6eb5431d75641963973f53ab44ffbb328981d3a3781219b0224534cb17cca3 ID 1605 gen 101254 top level 5 path var/lib/docker/btrfs/subvolumes/b4adf86f01370d6b00e3e300cf75ab9d7e540b66af91d46a794f10a78c7aa7b0 ID 1607 gen 101254 top level 5 path var/lib/docker/btrfs/subvolumes/2c35776404fa91d25d4a3009055a1c98f1d8568173fca15911f2ee4989b5f511 ID 1614 gen 101254 top level 5 path var/lib/docker/btrfs/subvolumes/4bced6174066e61a9f01bf99e2d80eddb3865b6c3593b35d4609972af90987f5-init ID 1615 gen 101254 top level 5 path var/lib/docker/btrfs/subvolumes/4bced6174066e61a9f01bf99e2d80eddb3865b6c3593b35d4609972af90987f5 [...] |
Meine erste Idee, sie einfach zu löschen, hat nicht funktioniert:
$ sudo btrfs subvolume delete </path/of/subvolume> ERROR: cannot access '<subvolume>': No such file or directory |
Einen Ansatz, die Subvolumes zu löschen, der funktioniert, habe ich im Unix-Forum von StackExchange gefunden. Ich konnte die Subvolumes löschen, nachdem ich das ganze Btrfs-Volume komplett unter /mnt
ins Dateisystem eingehangen habe:
$ sudo mount /dev/mapper/system-root /mnt/ -o subvol=/ $ ls /mnt .snapshots dev lib64 proc selinux tmp .w3m etc media root snap usr bin home mnt run srv var boot lib opt sbin sys $ sudo btrfs subvolume delete /mnt/var/lib/docker/btrfs/subvolumes/4bced6174066e61a9f01bf99e2d80eddb3865b6c3593b35d4609972af90987f5-init/ Delete subvolume (no-commit): '/mnt/var/lib/docker/btrfs/subvolumes/4bced6174066e61a9f01bf99e2d80eddb3865b6c3593b35d4609972af90987f5-init' |
Nachdem ich mit dem Löschen der einzelnen Subvolumes fertig war, habe ich /mnt
wieder ausgehangen und das Btrfs-Dateisystem neu ausbalanciert:
$ sudo umount /mnt $ btrfs balance start -m / Done, had to relocate 4 out of 103 chunks $ sudo btrfs fi df / Data, single: total=95.05GiB, used=61.86GiB System, single: total=32.00MiB, used=16.00KiB Metadata, single: total=1.97GiB, used=1.42GiB GlobalReserve, single: total=175.34MiB, used=0.00B |
Der disk free Befehl zeigt nach dem Ausbalancieren, dass ich jetzt wieder über 20 GB mehr zur Verfügung habe als vorher. Jetzt muss ich mir nur überlegen, was ich mit Docker und Btrfs zukünftig mache, um mein Btrfs-Volume nicht wieder zu „überfüllen“.