• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Snapshots schreiben die Festplatte (btrfs) voll

ThomasQ

Newbie
Hallo,
ich habe vor einiger Zeit auf meinem Rechner Suse 12.1 mit Gnome 3.2.1 installiert. Bei der Vorbereitung der Festplatte wurde btrfs vorgeschlagen. Da es mir sinnvoll und sicher erschien, habe ich dies ausgewählt. Ich hätte vielleicht vorher im Forum lesen sollen, aber das ist nun ja definitiv zu spät. Meine Festplatte ist mittlerweile fast voll, da etliche Snapshots angelegt wurden und diese teilweise sehr groß (bis zu 50GB) sind. Jeder Versuch, alte Snapshots los zu werden, ist gescheitert.
Hat jemand eine Idee, wie ich Snapshots löschen kann?
Grüße, Thomas
 

TomcatMJ

Guru
Mit
Code:
btrfs subvolume list
die ID des jeweiligen Snapshots herausfinden, was auch über
Code:
snapper list
geht, und dann kann man per
Code:
btrfs subvolume delete
den jeweiligen Snapshot löschen. Allerdings hatte ich bei einem gleichartigen Problem, bei dem dann die Partition vor lauter Snapshots voll war trotz
Code:
snapper cleanup timeline
und
Code:
snapper cleanup number
sowie dann ein Update per zypper noch abbrach, dann das heftigere Problem, daß die Platte so voll war, daß selbst snapper nicht mehr aufrufbar war obwohl mit df -h meldete es wären noch 26% des Dateisystems der betroffenen Partition frei.
Ein
Code:
 btrfs filesystem df
sagte mir dann jedoch daß alles komlett voll sei. Dummerweise war dann die Partition plötzlich auch noch nur noch im Read-Only Modus zugänglich so daß ich auch nichts anderes mehr löschen konnte obwohl die Ausgabe von mount mir sagte sie wäre auch beschreibbar.
Nach Löschung eines einzelnen alten Snapshots war sie auch kurz wieder beschreibbar (ein Test mit touch $testdateiname funktionierte wieder), aber wenige Minuten später war wieder alles nur Read-Only ohne daß dafür bisher ein entsprechendes Filesystemchecktool da ist. Daher hatte ich dann ein Image per dd auf eine externe Platte gezogen, die eingebaute Platte per dban völlig geleert, mit fdisk eine dann wieder gültige Partitionstabelle erstellt und mit meinem alten Autoyast Controlfile den Rechner per PXE-Boot fix wieder mit der ursprünglichen Softwarebestückung hergestellt so daß ich nur noch die Konfigurationsdateien die ich geändert hatte aus dem Image zurückkopieren musste.
Wie im Wiki von kernel.org, wo sich auch die Dokumentation von BTRFS und zugehörigen Dateisystemtools befindet zu ersehen ist, ist der Status von btrfs offiziell noch experimentell. Und das kann ich nach meinen Erfahrungen vom letzten WE dazu nur bestätigen, zumal einem die Snapshots wenn man sie nicht regelmäßig oder in zu großen Abständen prüft doch recht fix die Platte verstopfen ;)
Jetzt hab ich die Experimente jedenfalls erstmal sein gelassen und den Rechner doch lieber mit ext4 bei der Installation versehen (einfach im Controlfile btrfs durch ext4 ersetzt und den dort ebenso zu findenden /etc/fstab Eintrag auch entsprechend angepasst) und es flitzt wieder wie es eigentlich sollte.....wenn durch den Crash da nicht auch noch die rpm-Datenbank in Mitleidenschaft gezogen worden wäre bzw. diese dadurch völlig schrottreif war, dann hätte ich vielleicht noch mehr ausprobiert um den Fehler mit dem versteckten Read-Only setzen der Partition zu analysieren und loszuwerden,aber so hatte ich schon genug Zeit investiert für etwas, was offiziell ja immer noch den "Experimentell"_status innehat.

Vielleicht hilfts dir trotzdem schonmal was weiter rechtzeitig Platz zu schaffen bevors dir genauso geht wie mir am letzten WE mit der rappelvollen Partition ;)

Bis denne,
Tom
 
OP
T

ThomasQ

Newbie
Hallo,
herzlichen Dank für die schnelle Antwort. Ich habe von Hand einige Snapshots gelöscht, um zu sehen, ob es funktioniert. Da es mittlerweile aber einige Hundert Snapshots waren, hat mein Sohn mir ein Shellskript geschrieben, das alle Dateien nach dem Muster .snapshots/<Nummer>/snapshot löscht. Das löschen hat eine halbe Stunde gedauert, aber dann war die Platte wieder frei. Das sollte man natürlich nur machen, wenn man sich sicher ist, das man keinen der Snapshots mehr benötigt.
Code:
for snap in /.snapshots/*/snapshot
do
  echo "deleting $snap..."
  btrfs subvolume delete $snap
done
Frohe Ostern,
Thomas
 
Oben