ENOSPC: Warum ist „btrfs balance“ erforderlich? Was tut es?

Ich musste btrfs balance auf meinem Dateisystem mit einem Gerät ausführen, als ich , obwohl tatsächlich freier Speicherplatz vorhanden war.

Warum muss dies ausgeführt werden?

Was macht der Kontostand tatsächlich?

Antwort

Im Gegensatz zu den meisten herkömmlichen Dateisystemen verwendet BTRFS einen zweistufigen Zuweiser. In der ersten Stufe werden große Bereiche des Raums zugewiesen, die als Chunks für bestimmte Datentypen bezeichnet werden In der zweiten Stufe werden Blöcke wie ein reguläres Dateisystem in diesen größeren Regionen zugewiesen. Es gibt drei verschiedene Arten von Chunks:

  • Datenblöcke: Diese speichern reguläre Dateidaten.

  • Metadatenblöcke: Diese speichern Metadaten zu Dateien, einschließlich Zeitstempeln, Prüfsummen, Dateinamen, Besitzverhältnissen, Berechtigungen und erweiterten Attributen.

  • System-Chunks: Dies ist ein spezieller Chunk-Typ, der Daten darüber speichert, wo sich alle anderen Chunks befinden.

In diesem Block kann nur der Datentyp gespeichert werden, dem der Block zugewiesen ist. Der häufigste Fall heutzutage, wenn Sie einen -ENOSPC-Fehler in BTRFS erhalten, ist, dass das Dateisystem keinen Platz mehr für Daten oder Metadaten in vorhandenen Blöcken hat und keinen neuen Block zuordnen kann. Sie können überprüfen, ob dies der Fall ist Ausführen von btrfs fi df auf dem Dateisystem, das den Fehler ausgelöst hat. Wenn in der Zeile Daten oder Metadaten ein Gesamtwert angezeigt wird, der sich erheblich vom verwendeten Wert unterscheidet, ist dies wahrscheinlich die Ursache.

btrfs balance sendet Dinge über den Allokator zurück, was dazu führt, dass die Speicherplatznutzung in den Chunks komprimiert wird. Wenn Sie beispielsweise zwei Metadaten-Chunks haben, die beide sind 40% voll, ein Saldo führt dazu, dass sie zu einem Metadatenblock werden, der zu 80% voll ist. Durch eine solche Komprimierung der Speicherplatznutzung kann der Ausgleichsvorgang dann die jetzt leeren Blöcke löschen und somit Platz für die Zuweisung neuer Blöcke schaffen. Wenn Sie btrfs fi df erneut ausführen, nachdem Sie den Kontostand ausgeführt haben, sollten Sie feststellen, dass die Werte „Gesamt“ und „Verwendet“ viel näher beieinander liegen, da der Kontostand nicht mehr benötigte Blöcke gelöscht hat.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.