Btrfs best practice de

btrfs best practice :de:

Wenn man btrfs benutzt, kann man einfach alles machen wie bisher, aber um die Vorteile von btrfs zu nutzen muss man Manches anders machen als bisher

gpt und uefi

Benutze gpt als Partitionstabelle und erzeuge eine einzige EFI-Partition die als “bootable” markiert ist

warum ?

GPT: Das gpt-Partitionierungsschema ist der Nachfolger des msdos/mbr Partitionierungsschemas. GPT ist neuer, robuster und mehr zukunftsicher als mbr. Multiboot kann mit GPT robust umgesetzt werden.
EFI-Partition: Der Platz an dem die Bootloader von grub oder Windows oder andere abgelegt werden. Die Bootloader ändern sich sehr selten. Das Dateisystem ist FAT, damit es vom UEFI gelesen und gestartet werden kann. Die Partition ist als “bootable” markiert

Eine einzige große btrfs Partition

Benutze eine einzige große btrfs Partition und erzeuge Subvolumes anstatt wie bisher mehrere Partitionen zu benutzen.

warum ?

Früher wurden aus guten Gründen jeweils getrennte Partitionen für /boot, / und /home verwendet. Manchmal sogar noch mehr.
Btrfs hat einen eingebauten Volume-Manager. Damit ist es besser, die verschiedenen Teile einer Installation in einer einzigen Partition (einem Btrfs Volume) zusammen zu lassen. Statt unterschiedlicher Partitionen verwendet man hier Subvolumes innerhalb des Btrfs Volumes.

  • Der Platz innerhalb eines Volumes wird von allen Subvolumes und Snapshots gemeinsam dynamisch genutzt
  • Der Platz ist durch den Volume-Manager einfach erweiterbar
  • Ein Volume kann über mehrere Festplatten hinweg bestehen
  • Ein Volume kann zu einem RAID konvertiert werden
  • Ein Backup des Volume erfasst alle Subvolumes und Snapshots

swap

Verwende eine echte Swap-Partition statt ein Swapfile zu verwenden

warum ?

Ein Swapfile in Btrfs ist eine Notlösung die nur eingesetzt werden sollte, wenn alle anderen Optionen erschöpft sind. Gemäß den Entwicklern von btrfs muss eine Swapdatei in Btrfs besonders markiert werden. So markiert, behindert sie verschiedene Eigenschaften von Btrfs.
Entgegen landläufiger Meinung ist eine Swap-Partition nicht schädlich für eine SSD. Insbesondere ist eine Swap-Datei nicht schonender für eine SSD als eine Swap-Partition.

Btrfs Layout

Verwende ein Btrfs-Layout, das von möglichst vielen Tools unterstützt wird

@ → /

Btrfs-Name @ für das Subvolume das bei / gemountet wird

@home → /home

Btrfs-Name @home für das Subvolume das bei /home gemountet wird

warum ?

So kannst du verschiedene Tools benutzen, die sich auf dieses “ubuntu-layout” eingestellt haben. Natürlich lässt dir Btrfs hier auch andere Möglichkeiten.
Das Layout spielt eine wichtige Rolle beim Erzeugen von Snapshots der einzelnen Subvolumes und beim Rollback zu einem solchen Snapshot.
Egal welches Layout du wählst, entweder muss es von den von dir verwendeten Tools unterstützt werden, oder du mußt dazu in der Lage sein selbst den Überblick über deine Snapshots (auch nach einem Rollback) zu behalten. Wenn du den Überblick verlierst und ein “alter” Snapshot liegenbleibt, wirst du schnell Platzprobleme bekommen.
Näheres zum Btrfs-Layout findest du in der Btrfs Dokumentation.

/boot

Mach aus /boot weder eine eigene Partition, noch ein eigenes Subvolume

warum ?

In /boot liegen sowohl alle Kernel, als auch die Initramdisk. Beides ist zum booten notwendig, und beides ist eng mit dem gesamten System verknüpft. Wenn Snapshots vom Gesamtsystem (@) gemacht werden, sollten immer die passenden Kernel und Initramdisk dabei sein. Das wird automatisch der Fall sein, wenn /boot nicht eigenständig ist, sondern Teil von @

automatische Snapshots von @

Installier die notwendigen Tools um die Snapshots automatisch anzufertigen und wieder zu löschen

  • Vor und nach einem Update
  • nach dem erfolgreichen Booten
  • nach einem Zeitschema (stündlich, täglich, wöchenltlich, monatlich)
warum ?

Das erlaubt einfache Rollbacks wenn etwas schief ging.

  • Zustand vor dem Update
  • Zustand zu dem das System das letzte mal erfolgreich gebootet hat
  • Zustand bevor du deine Konfiguration kaputt-editiert hast
  • Zustand bevor du wichtige Systemdateien gelöscht hast
  • Zustand vor einer Stunde, einem Tag, einer Woche oder drei Monaten
    Es erlaubt auch einzelne Dateien im “vorherigen Zustand” zu betrachten
  • Eine gelöschte Konfigurationsdatei
  • Eine Datei in die du versehentlich einen Syntaxfehler eingebaut hast
    Du kannst die Datei einfach aus dem Snapshot heraus kopieren und wiederherstellen
    Oder du kannst sie mit der Version von vor drei Wochen vergleichen

automatische Snapshots von @home

Konfiguriere so dass auch automatisch unabhängige Snapshots von @home angefertigt und gelöscht werden

  • nach einem Zeitschema (stündlich, täglich, wöchenltlich, monatlich)
warum ?

Wenn @home ein eigenes Subvolume ist, werden die Snapshots von @ und @home getrennt durchgeführt. Bei einem System-Rollback auf den Stand von vor 4 Wochen verändern sich die Daten unter /home nicht, sonder alle unter /home/* inzwischen gemachten Veränderungen bleiben erhalten. Das System wird auf seinen Stand vor 4 Wochen zurückgesetzt, aber die Daten der Benutzer bleiben unangetastet. Das kommt daher weil Linux traditionell ein Mehrbenutzersystem ist, in dem System und Daten relativ strikt getrennt gehalten werden.

Unabhängig davon kann man einzelne Dateien aus den Snapshots von @home für die einzelnen Benutzer wiederherstellen

  • Dateien die vor einer Stunde, einem Tag, einer Woche oder drei Monaten gelöscht wurden
  • Eine einzelne versehentlich gelöschte Datei von LibreOffice
  • Eine gelöschte Konfigurationsdatei
    Du kannst die Datei einfach aus dem Snapshot heraus kopieren und wiederherstellen. Oder du kannst sie mit der selben Datei von vor drei Wochen vergleichen

noatime

Stelle sicher dass alle btrfs volumes mit noatime als option gemountet werden

warum ?

Das macht btrfs schneller, und vermeidet unnöti metadata zu erzeugen, wenn Dateien nur gelesen werden. Details sind verlinkt unter:
make btrfs faster

compression

Benutze unbedingt die in btrfs eingebaute kompression.

warum ?

Das spart platz im volume und führt in den meisten Fällen auch zu schnellerem lesen und schreiben von Daten. Insbesondere wenn ausreichend RAM vorhanden ist, und ein schneller Prozessor. Der gewählte kompressionsgrad ist geschmackssache. (mein Tip:9)

:footprints:
Btrfs im wiki
:notebook:

A final word:

Frei übersetzt: :notebook: Ein letztes Wort: Wenn Sie BTRFS und Snapshots verwenden, behalten Sie das Dateisystem im Auge, um sicherzustellen, dass es zu etwa 20 % frei ist.

Dafür gibt es in den unterschiedlichen Desktops verschiedene Tools für die Taskleiste oder auch conky, die den Belegungsgrad des Dateisystems anzeigen, und eventuell sogar bei einem selbst eingestellten Limit warnen.
Ab 80% sollte man aufpassen. Ab 85% ist es Zeit zu handeln. Bei 90% fängt es an riskant zu werden und ab 95% ist Ärger vorprogrammiert.
Informationen findet man im Wiki im Bereich Out of space

7 Likes

Danke, tolle Erklärung! :+1:
Wollt ich schon lange mal wissen, top Service!
Gruss

Danke @andreas85 für die gute Erklärung.

7 posts were split to a new topic: Fragen zu btrfs

Dnke Andreas, excellent. Das sollte als Pflichtlektüre vor dem Installieren von btrfs aufklappen…
Wäre schön, wenn das ins deutsche Manjaro-Wiki eingearbeitet würde, damit es nicht nach vier Wochen hier nur noch über die Suchfunktion auftaucht.

viele Grüsse gosia

2 Likes

Werd ich versuchen.