btrfs ERROR: Fehler beim Ausgleichen - Auf dem Gerät ist kein Platz mehr vorhanden

15

Mein Kubuntu 12.04-System verfügt nicht über genügend Speicherplatz auf der Root-Partition und bootet nicht. Der Befehl df -hzeigt viel verfügbaren Speicherplatz an (wobei nur 37% verwendet werden):

/dev/sda2        45G   17G   29G  37%

Auf der folgenden Seite wird angegeben, dass der Befehl balance ausgeführt werden soll:

https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_get_.22No_space_left_on_device.22_errors.2C_but_df_says_I.27ve_got_lots_of_space

$ sudo btrfs fi balance start -dusage=5 /mount/point

Ich bin nicht ganz sicher, dass dies der beste Ansatz ist, aber es ist der einzige, den ich gefunden habe. Wenn ich diesen Befehl ausführe, erhalte ich jedoch den folgenden Fehler:

ERROR: error during balancing '/blah/blah/blah' - No space left on device

Ich bekomme den gleichen Fehler mit:

$ sudo btrfs fi balance start -dusage=1 /mount/point

Was ist die richtige Lösung?

MountainX für Monica Cellio
quelle

Antworten:

15

Es gibt Möglichkeiten, balancein dieser Situation zum Laufen zu kommen .

sudo btrfs fi show
sudo btrfs fi df /mount/point
sudo btrfs fi balance start -dusage=10 /mount/point

Wenn der Balance-Befehl mit "Done, musste 0 von XX Chunks verschieben" endet, müssen Sie den Prozentparameter "dusage" erhöhen, bis mindestens ein Chunk verschoben wurde.

wenn der balance Befehl fehlschlägt mit:

ERROR: error during balancing '/blah/blah/blah' - No space left on device

Möglicherweise müssen Sie tatsächlich Dateien vom Gerät löschen, um Platz zu schaffen. Führen Sie dann den Befehl balance erneut aus.

Dank Marc's Blog: btrfs - Beheben von Problemen mit dem Btrfs-Dateisystem ist hier eine weitere Option:

Ein Trick, um dies zu umgehen, ist das Hinzufügen eines Geräts (sogar eines USB-Sticks) zu Ihrem btrfs-Dateisystem. Dies sollte ermöglichen, dass der Abgleich gestartet wird. Anschließend können Sie das Gerät mit btrfs device delete entfernen, wenn der Abgleich abgeschlossen ist. Auf der Liste steht auch, dass Kernel 3.14 einige Balancing-Probleme beheben kann, die ältere Kernel nicht können. Probieren Sie es also aus, wenn Ihr Kernel alt ist.

MountainX für Monica Cellio
quelle
7
Ich habe festgestellt, dass ich gelegentlich auch mount -oremount,clear_cache /mountpointdie Freiraumberechnungen korrigieren musste. (Sie werden korrumpiert ...)
Rrauenza
1
@rrauenza, danke! Sie sollten das als Antwort hinzufügen :)
mwfearnley
0

Ich habe alles in der akzeptierten Antwort und in Marc's Blog versucht, einschließlich Inkrementieren des -dusageParameters und Hinzufügen eines weiteren Block-Geräts, alles ohne Erfolg. Auch nach dem Löschen einiger Dateien und dem Freigeben eines kleinen Speicherplatzes auf der Festplatte, der voll war, balancekonnte nicht abgeschlossen werden. Aus irgendeinem Grund schien es immer so, als würde es Daten auf die fast volle Festplatte verschieben. Am Ende funktionierte es für mich, den Ausgleich auf das gesamte Gerät zu beschränken:

btrfs balance start -ddevid=<dev_id> <path>

wo die dev_idzu finden sind mit:

btrfs fi show 
z7sg
quelle
Keines davon funktionierte
traf sich
Dies hat mein System zum Absturz gebracht und das Volume wurde nicht mehr verfügbar, obwohl ich das System neu gestartet habe. Ich habe ein Volume mit EXT4 installiert und hoffe nun, dass ich das sehr sensible BTRFS-System loswerden kann, das ich als Fehler mit vielen Designproblemen betrachte.
Al Bundy
0

sudo apt-btrfs-snapshot delete-older-than 3d Löscht Snapshots, die älter als 3 Tage sind. Beim Verschieben von Daten werden Momentaufnahmedaten nicht mehr richtig platziert und die tatsächlichen Daten müssen an mehreren Stellen auf das Laufwerk geschrieben werden. Dadurch werden Snapshots zu alten Daten an alten Standorten entfernt und diese Sektoren für die erneute Verwendung freigegeben. Ich empfehle duperemove auch, um Daten und Speicherbereiche im btrfs-Dateisystem zu deduplizieren.

D337z
quelle