"Rm: xxx kann nicht entfernt werden: Kein Platz mehr auf dem Gerät" in BTRFS


17

Ausführen von OpenSuse 12.2.

Plötzlich scheint die Root-Partition voll zu sein (99%), aber ich kann Dateien nicht mehr manuell entfernen.

"rm: xxx kann nicht entfernt werden: Kein Platz mehr auf dem Gerät" obwohl laut df noch 450mb frei sind. Das Dateisystem ist BTRFS.

Ich habe versucht, den FS mit btrfsck zu überprüfen, aber es hat nicht geholfen.

Was ist zu tun?


1
Haben Sie Schnappschüsse aktiviert?
MadHatter

Haben Sie überprüft, ob noch ein Prozess ausgeführt wird, der die Datei verwendet? (überprüfen Sie dies mit lsof). Wenn dies der Fall ist, brechen Sie den Vorgang ab und versuchen Sie erneut, die Datei zu entfernen.
Chocripple

Antworten:


20

Höchstwahrscheinlich tritt ein Problem auf, bei dem BTRFS einige Metadaten zuordnen muss, bevor die Datei entfernt werden kann. Eine der Schwachstellen von BTRFS ist der Umgang mit Platzmangel; Die Verbesserung des Verhaltens in diesem Bereich ist eine der Prioritäten des Projekts.

Ein Vorschlag im btrfs-Wiki ist, die Datei zu löschen, anstatt sie zu entfernen.

#instead of this
rm -f ./some_file

# do this
true >| ./some_file

Dadurch wird der Inhalt der Datei entfernt, ohne dass der Verzeichniseintrag geändert wird. Sobald Sie sich aus der Ecke herausgearbeitet haben, können Sie Dateien wie gewohnt löschen. Wenn dies zu Problemen führt, möchten Sie möglicherweise vorübergehend die nodatacowOption erneut aktivieren, mit der das Verhalten beim Kopieren beim Schreiben deaktiviert wird . Aber ... nicht sicher, ob das hilft oder nicht.

Im Allgemeinen jedoch: Führen Sie ein BTRFS-Dateisystem nicht trocken aus. Es ist immer noch Vorproduktionssoftware, und die Eckfälle sind etwas rau.


2
Der Trick funktioniert auch gut für ein CIF-Netzwerklaufwerk, danke!
MarkusN

2

Ich habe die gleiche Fehlermeldung erhalten, aber in meinem Fall wurde das Dateisystem nicht als voll gemeldet:

user@host:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       2.8G  2.0G  618M  77% /

Die Befragung von BTRFS ergab jedoch, dass es tatsächlich voll war:

user@host:/# btrfs fi show
Label: none  uuid: {UUID redacted because reasons}
        Total devices 1 FS bytes used 1.92GiB
        devid    1 size 2.79GiB used 2.79GiB path /dev/sda3

Auch das Überschreiben von Dateien (wie von tylerl vorgeschlagen) war nicht möglich. Meine Lösung wurde unter http://marc.merlins.org/perso/btrfs/post_2014-05-04_Fixing-Btrfs-Filesystem-Full-Problems.html gefunden, wobei empfohlen wird, eine manuelle Neuverteilung des Dateisystems mit auszuführen btrfs balance start -dusage=55 /path/to/filesystem.


0

Bei der Verwendung von ZFS stellte ich fest, dass durch das Löschen anderer Dateien genügend Speicherplatz auf der ZFS-Partition frei wurde, und ich konnte dann die fraglichen Dateien löschen.


0

In meinem Fall konnte ich mit einem ZFS-Dateisystem unter Linux die Datei nicht einmal kürzen. Das Zerstören alter Schnappschüsse war der Trick (falls vorhanden).

zfs destroy /path/of/snapshot

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.