Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe
allgemeine Kategorie => Installation, Einrichtung und Systempflege => Thema von: Sebastian am 17. Mai 2025, 09:56:24

Titel: Btrfs Kompression
Beitrag von: Sebastian am 17. Mai 2025, 09:56:24

Vorwort

Hallo liebe Linux Gemeinschaft,

Ich möchte hier ein paar Worte für diejenigen da lassen, die BTRFS verwenden oder eine Affinität zu BTRFS oder Dateisysteme im Allgemeinen haben, so wich ich. ;D

PS:

Da ich mich auch stark für Kompression Algorithmen Interessiere, passen diese beiden Dinge auch gut zusammen. ;D

Einleitung

Wie der ein oder andere vielleicht schon weis, unterstützt BTRFS transparente Dateikompression (https://btrfs.readthedocs.io/en/latest/Compression.html).

Das bedeutet, dass Dateien (oder aus Sicht des Dateisystems Extens) vor Ablage auf den Datenträger komprimiert werden können.

Vor-/Nachteile der BTRFS Komprimierung

Hört sich erst einmal gut an, aber dies muss nicht immer sinnvoll sein. Daher gebe ich hier ein paar Vor-/Nachteile an:

Vorteile:

  • Weniger Speicherplatzverbrauch, dies ist der offensichtlichste Vorteil.
  • Weniger Schreibvorgänge, auf dem Datenträger. Dies kommt insbesondere Flash Speicher wie SSDs zugute, die mit jedem Schreibvorgang sich abnutzten, aber auch langsameren Datenträgern.


  • Nachteile:

    • Höhere CPU-Last, je nach eingesetzten Kompressions-Algorithmus und Kompressionsstärke, fällt dieser höher aus.
    • Mehr Arbeitsspeicherverbrauch, dasselbe gilt auch für den Arbeitsspeicher.
    • Vorsicht beim Mounten mit älteren Kernels. Werden Kompressions-Algorithmen oder Kompressionsfeatures genutzt, die von einem älteren Linux Kernel noch nicht unterstützt werden, so kann man das Dateisystem mit diesem nicht mounten.
    • . Siehe Nachwort


    • Beispiel Einsatzzwecke:

      Jetzt, wo wir eine grobe Vorstellung haben, welche Vor-/Nachteile Komprimierung im BTRFS mit sich bringt, zeige ich ein paar Einsatzzwecke auf:

      Kompression nutzen, um Flash Speicher (wie SSDs) zu schonen. Wie oben auch bereits erwähnt, altert eine SSD mit jedem Schreibvorgang. Indem weniger auf die Platte geschrieben werden muss, um so länger hält eine SSD. Das ist der Hauptgrund, warum ich auf meinem Hauptsystem eine leichte Komprimierung einsetzte (compress=zstd:3). Speicherplatz habe ich genug, und leider eine nicht als zu schnelle CPU und Arbeitsspeicher hält sich bei meinem Laptop auch in Grenzen. Daher nur eine leichte Komprimierung.

      Kompression, bei langsamen Laufwerken nutzen. Besitzt man so wie ich z.b. viele langsame USB-Sticks (Beim Schreiben) oder vielleicht ältere USB-2.0 Ports noch wo nicht viel Datendurchsatz darüber kommt, dann kann eine Kompression in Vorfeld eventuell helfen, die Daten schneller auf dem Datenträger zu schaufeln. Voraussetzung ist, dass man eine schnelle CPU hat, damit der Flaschenhals nicht woanders ist.

      Keine Kompression für Datengräber/Archive. Ich besitze mehrere externe 8 TB große Festplatten, die mir als Archiv dienen. Bedeutet alle jubel Jahre/Monate landen da mal neue Daten zur Ablage drauf, die meist dann auch nie wieder angeschaut werden. Aber ich zur Sicherheit behalten muss. Diese Platten sind zudem noch magnetische HDDs, die aufgrund des COW Prinzips von BTRFS stärker unter einer Fragmentierung leiden können. Hier habe ich mich bewusst gegen eine transparente Kompression entschieden. Ich unterziehe hier lieber im Vorfeld die Daten einer sehr starken Kompression, größtenteils mithilfe eines Squashfs als Container. Da ich auf diese Daten selten bis ga nicht darauf zugreifen muss. So bleiben die Daten auch stark komprimiert, wenn diese mal auf ein anderes Dateisystem oder Datenträger umziehen müssten. Das erspart später eine eventuelle neu Komprimierung.

      Nachwort

      Wie die Kompression in einem BTRFS jetzt genau genutzt werden kann, könnt ihr der offiziellen Dokumentation (https://btrfs.readthedocs.io/en/latest/Compression.html) entnehmen. Ich werde hier nur noch mal schnell das wichtigste zusammenfassen.

      • Die Kompression wird in BTRFS hauptsächlich zum Mount Zeitpunkt gesteuert. Dies bedeutet aber auch, dass wenn zum Mount zeitpunkt die compress= Mountoption nicht angeben wurde. So landen alle Daten unkomprimiert auf dem Datenträger. Daten, die sich bereits auf dem Datenträger befinden, werden so nicht automatisch nachträglich komprimiert.
      • Nachträgliche Komprimierung wird beim Defragmentieren erledigt. über den Befehl btrfs filesystem defragment können Daten beim Defragmentieren nachträglich mit komprimiert werden.

      • [color=Red]Vorsicht bei einer Defragmentierung!

        Eine Defragmentierung von Dateien in einem BTRFS zerstört die Reflinks zu den Daten, da diese verschoben werden. Das bedeutet macht man gebrauch von Snapshots oder von cp --reflink
        (neuere cp Version verwenden --reflink=auto als Standartd, was bedeutet, dass ein Reflink auf einem BTRFS immer nach Möglichkeit genutzt wird.) Was dazuführt das sich der Speicherplatz für diese Daten verdoppelt, verdreifacht... je nachdem wie viele Reflinks auf dieselben Daten gemacht wurden. Dadurch kann eurer Dateisystem ganz schnell der Speicherplatz ausgehen, wenn ihr da nicht aufpasst.
        [/color]

        PPS:

        Als ich mit BTRFS anfing meine ersten Erfahrungen zu sammeln (vor ein paar Monaten) so war es noch nicht möglich gewesen bei einer Defragmentierung auch das Kompressionslevel mit anzugeben. Man konnte lediglich den Algorithmus angeben, der dann mit dem Standard Level verwendet wurde. Dies ist seid Kernel 6.14 nun auch möglich so wie die Echtzeit Kompressionsstufen von zstd von -1..-15.

        Die Entwicklung von Btrfs und seinen Features ist für mich der Hauptgrund, warum ich auf den Mainline Linux Kernel gewechselt bin. Weg vom LTS Kernel ;D

        LG
        Sebastian

Titel: Re:Btrfs Kompression
Beitrag von: Andreas am 17. Mai 2025, 13:13:05

Schau, schau... Auch bei Dir ein Grund für den aktuellen Kernel! Bei mir sind es zig Gründe. Der LTS-Kernel würde viele der von mir verwendeten Hardware unerreichbar machen, auch viele andere, für mich wichtige Funktionen, sind noch nicht im LTS-Kernel enthalten...

LG
Andreas

Titel: Re:Btrfs Kompression
Beitrag von: Sebastian am 17. Mai 2025, 14:46:59

Ja klar, sobald ich wirklich eine need dafür habe, habe ich nichts gegen neuere Versionen. :)

Denn solange mir eine neue Version einer Software keine Verbesserung mitbringt, die ich auch tatsächlich nutze oder spüren kann, und die alte weiterhin Sicherheitsupdates bekommt. Habe ich einfach kein Bedarf auf neuere umzusteigen. Ich lasse lieber andere die Pionierarbeit machen, und komme lieber erst später dazu ;D

Ein Beispiel was ich dazu habe ist das ich z.b. libreoffice-still als die fresh Version weiterhin nutzte. Da ich die neuen Funktionen aus dem fresh Paket einfach nicht benötige.

LG
Sebastian


Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe | Powered by YaBB SE
© 2001-2003, YaBB SE Dev Team. All Rights Reserved.