Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe
allgemeine Kategorie => Installation, Einrichtung und Systempflege => Thema von: Sebastian am 15. Dezember 2024, 10:57:19

Titel: btrfs subvolume Layout
Beitrag von: Sebastian am 15. Dezember 2024, 10:57:19

Einführung:

Hallo Suletuxe,

Bevor man ein Dateisystem verwendet, macht man sich im idealen Fall über dieses erst einmal schlau, damit man sich im Vorfeld ein paar Gedanken dazu machen kann. Dazu gehört auch die Überlegung wie man seine Subvolumes in einem Btrfs organisiert.

Was ist ein Subvolume?

Um sich über die Organisation von einem Subvolume Gedanken machen zu können, muss man natürlich erst einmal wissen was diese sind und was es bei Subvolumes zu beachten gibt. Ich werde versuchen dies hier nicht zu Technisch zu halten, sondern versuchen dies in Sinnbildlicher Sprache zu erklären.

Ein Subvolumen kann man sich gedanklich am besten vorstellen wie ein normales Verzeichnis/Ordner im Dateisystem. Nur mit dem Unterschied, dass dieses Verzeichnis, wenn es als Subvolumen auserkoren wurde, besondere Eigenschaften von btrfs nutzten kann.

Somit kann jedes Subvolume innerhalb eines Btrfs ähnlich wie eine Partition gemountet werden. Was eine besondere Partitionierung der Festplatte fast überflüssig macht. Technisch kann ein Btrfs sogar ganz ohne eine Partitionstabelle verwendet werden, solange man von dem Datenträger nicht gebootet werden muss. Dies ist aber nicht zu empfehlen, da viele Tools/Programme eine Partitionstabelle erwarten und dann nicht richtig funktionieren.

Da wir nun wissen, dass ein Subvolume eigentlich nur ein Verzeichnis mit spezialen Eigenschaften ist. Können Subvolumes ganz normal wie jedes Verzeichnis auch mit mv im Dateisystem hin und her verschoben werden. Dies macht Btrfs sehr flexible was die Gestaltung bzw. den Aufbau seiner Baumstruktur macht.

Subvolumes können dabei auch wie Verzeichnisse Verschachtelt werden also ein Subvolume in einem Subvolume. Technisch ist die Wurzel eines Btrfs auch nur ein Subvolume. Sogesehen verschachtelt man eigentlich von Anfang an ein Subvolume nach dem anderen. Beim Verschachteln von Subvlumes gibt es dabei ein paar Dinge zu beachten:


  • Wenn ein Subvolume gemountet wird, so müssen verschachtelte Subvolumes unterdessen, nicht separat gemountet werden. Diese sind durch den höreren mount automatisch mit erreichbar.
  • Verschachtelte Subvolumes werden bei einen Snapshot nicht mit gesnapshottet.
  • Subvolumen die eine Swapdatei enthalten können nicht gesnapshottet, werden.


  • Grade die Eigenschaft das Verschachtelte Subvolumes nicht mit gesnapshottet werden von einen höher angesiedelten Subvolume kann man sich zur nutze machen um Verzeichnisse zu exkludieren.

    Noch ein Hinweis:
    Es hat sich in der Community eingebürgert, Subvolume Verzeichnisse mit einem @ Symbol zu kennzeichnen. Damit in einem Verzeichnisbaum sofort ersichtlich wird, dass es sich bei diesem Verzeichniss sich um ein Subvolume handeln kann. Dies ist aber kein zwang dies zu tun.


    Subvolume Layout:

    Mit diesem Vorwissen, können wir uns nun Gedanken über die Ordner/Subvolume Struktur unser Dateisystem machen. Dabei entfielt es sich ein Linux nicht direkt in die Wurzel eines btrfs Dateisystems (Subvolume ID 5) zu installieren. Da dies das management von Subvolumen unnötig erschwert. Stattdessen sollte für die Wurzel eines Linux Systems lieber ein eigenes Subvolume verwendet werden.

    Ich gebe hier mein aktuelles Layout als Beispiel einmal vor:


    Code:

    / (Btrfs Wurzel, Subvolume ID 5)
    └- @ (Wurzel für EndavourOS)
    └- @home (Subvolume das unter EOS in /home gemountet wird)
    | └-/sebastian/.cache (zum Subvolume gemacht damit es bei einen Snapshot von @home excludet wird)
    └- @cache (Subvolume das unter EOS in /var/cache gemountet wird)
    └- @swap (Subvolume das unter /swap/ gemountet wird. Enthählt eine swapdatei)
    └-@.snapshots (Subvolume das unter /.snapshots gemountet wird. Hier werden meine Snapshots abgelegt.)


    Das schöne ist jetzt dabei, da die Subvolume etwas andere Verzeichnisse sind. Das diese Struktur nicht in Stein gemeißelt ist. Und ich die Struktur nach belieben verändern kann. Somit wäre es auch möglich, die Wurzel von dem Endeavouros Betriebssystem noch weiter zu verschachteln, falls man z.b. noch eine andere Distribution installieren möchte. Dies kann dann alles im selben Dateisystem erfolgen und getrennt wird alles sauber mit Subvolumes.

    Ich hoffe ich konnte den ein oder anderen eine bessere Einsicht in die Arbeitsweise von btrfs Subvolumen geben. Alle die Btrfs in Einsatz habt, wie organisiert ihr eure Subvolumes?

    Falls etwas unklar ist dürfen natürlich Fragen gestellt werden.

    Edit:

    Bei meinen als Beispiel angefürten Layout, ist es nicht möglich in ein Readonly Snapshot zu booten. Dies ist der Tatsache geschuldet, das Programme ihre logs in /var/log schreiben möchten. Dies sollte beachtet werden falls man vor hat seine Snapshots in dem GRUB Menü einzubauen.

    Falls man das unbendingt möchte, sollte man seinen Snapshot vorher auf rw stellen oder sein /var/log Verzeichnis über ein separates Subvolume mounten. Ich habe mich bewusst dagegen entschieden, da ich meine Logs bei einen Rollback konsistent halten möchte. Mit anderen Worten sollen sich meine logs mit dem Zustand meines Systems decken. Ich möchte keine Einträge in den Logs haben über Ereignisse, die durch das Rollback nie stattgefunden haben.

    LG
    Sebastian


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