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 zukunftsicherer 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 eines Swapfiles.

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, sondern 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ötig 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

9 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.

@andreas85: Danke für die detaillierte Erklärung. Btrfs hat viele starke Features, aber der Mangel an vernünftiger Unterstützung in grafischen Installern wie z.B. Calamares ist ein echtes Hindernis für viele Anwender. Sehe nur ich das so oder übersehe ich da was?

WofĂĽr fehlt Dir denn die UnterstĂĽtzung in grafischen Installern?
(Calamares ist der fast ĂĽberall verwendete)
Soweit ich weiß, gibt’s da auch für ext2/3/4 keine speziellen Werkzeuge - und für andere Dateisysteme auch nicht.

Persönlich finde ich es auch nicht gut, daß BTRFS nun default ist - und man muß tatsächlich genau hinsehen bei der Installation um zu merken, daß das so ist.
Es ist nur eine ganz kleine Checkbox - die man sehen und ändern müßte wenn man das nicht wollte.

1 Like

hi, vor ein paar Wochen hatte ich auf einem PC Manjaro installiert und wollte mir btrfs nochmal anschauen. Eine btrfs-Partition zu erstellen ist kein Problem, aber Subvolumes wie z.B. @home habe ich im Installer nicht gefunden. Ich habe keinen Plan wie das gehen soll, daher bleibe ich bei ext4, ich vermute das diese Subvolumes vor dem Installieren erstellt werden mĂĽssen?

Wenn Du die default Eistellungen nimmst dann wird all das fĂĽr Dich erledigt.

Wenn Du “custom” nimmst - dem Installer also sagst, daß Du alles selbst machen willst … mußt Du es auch selbst machen
und idealerweise wissen, was Du da tust …

Das ist aber bei ext4 nicht anders.

genau so ist es

ja, ich nutze eigentlich immer “custom”, da ich in der Regel Windows PCs platt mache und dann Linux mit mind. 3 Portionen installiere (efi, root und home).

PS:

Dieser wĂĽrde mir ein @home Subvolume anlegen?

Das “plattmachen” geht auch mit der Standardinstallation.
Oder Du ruftst vor dem Start des Installers gparted auf und nutzt das um die vorhandenen Partitionen zu eliminieren.

… Installation in eine(!) Partition?
Ja.
@home und einige weitere

Ich weiĂź ehrlich gesagt nicht, ob man ĂĽberhaupt eine Partition braucht oder ob man nicht einfach das gesamte Laufwerk verwenden kann.

2 Likes

Nein, das ist nicht wirklich empfehlenswert !
Das ist eher was fĂĽr freaks :wink: (und fĂĽr EFI und swap brauchts eh eine partition)

  • Partitionstabelle mit GPT (nicht msdos),
  • UEFI-Installation (nicht mbr)
  • Eine partition fĂĽr EFI
  • Eine fĂĽr swap
  • Eine fĂĽr das btrfs volume
  • keine /boot oder sonstige patrtitionen !
    Das ist einerseits einfach, und deckt andererseits alle Notwendigkeiten sauber ab.
    Die subvolumes wie @ und @home und … werden vom Installer korrekt angelegt. Mehr brauchts wirklich nicht.

Snapshots muss man später selbst einrichten, genauso wie Kompression und “noatime”. (aber wird alles hier im Forum :mag: und im Wiki ausführlich erklärt) :footprints:

2 Likes

Ok Ok … :grimacing: … I was just guessing - I’m no freak. :nerd_face:

Ich hab nur laut nachgedacht - ich bin kein solcher :nerd_face:

Danke euch! Werde das mal testen… evtl. schon nächste Woche.
Ich wusste nicht, das die subvolumes wie @ und @home und … vom Installer angelegt werden.

Notfalls

kann man Subvolumes auch erst nach der Installation einrichten. Btrfs ist da echt flexibel.

Von einer Live-ISO:
Man mountet das btrfs-root-volume(!) nach /mnt, dann erzeugt man die subvolumes die man braucht, trägt sie in die /mnt/etc/fstab ein, und verschiebt die bisherigen Daten (z.B. von /mnt/home/ nach /mnt/@home/ oder von /mnt/var/ nach /mnt/@var/ und den rest von /mnt/ nach /mnt/@/) :footprints:

3 Likes

Moien, ich habe das soeben auf einem Test-PC durchgefĂĽhrt und Manjaro wie folgt installiert:

Mein GPT-Partitionierungsschema (custom installation):

  • linux-swap | 16GB
  • FAT32 /boot/efi (Markierung: boot) | 300MB
  • Btrfs / | Rest der SSD

Der Calamares-Installer hat auf der Btrfs-Partition folgende Subvolumes erstellt:

  • @ (→ /)
  • @home (→ /home)
  • @cache (→ /var/cache)
  • @log (→ /var/log)

In der fstab habe ich bei den Btrfs-Mounts die Optionen discard=async und noatime ergänzt.

Frage: Bei meinen bisherigen ext4-PCs (mit /home auf einer eigenen Partition) konnte ich bei schwerwiegenden Problemen Linux neu installieren und mein bestehendes /home einfach einbinden, ohne es zu formatieren. Vorteil: In ca. 10 Minuten erledigt. Geht das auch mit Btrfs und dem Subvolume @home? Wenn ja, wie mache ich das, also eine Neuinstallation ohne das bestehende @home-Subvolume zu löschen?

Wenn Timeshift funktioniert, werde ich es wahrscheinlich nicht brauchen, aber falls doch, habe ich eine echte Sicherung von /home auf einer externen Festplatte und auf meinem NAS ĂĽber BackInTime.

PS: Bei einem PC mit 32 GB nutze ich kein swap und fĂĽr ein reines Linux System solten 100MB fĂĽr /boot/efi auch reichen (zumindest habe ich bisher kein Problem damit).

(Wenn ein backup von /home vorliegt. Von extern:)

  • Einfach drĂĽberinstallieren (ohne das btrfs-volume neu zu formatieren). @home bleibt dabei wie bei ext4 auch einfach erhalten.
  • Optional:
    @ vorher leer machen (nicht entfernen)
  • Optional:
    Subvolume @home umbenennen zu @home2, dann ein neues subvolume @home erzeugen. Nach der Installation wieder umbenennen @home → @home1, @home2 → @home

Kommt aber äußerst selten vor. Meist reicht ein Rollback auf den letzten Snapshot. Bei Timeshift/Snapper bitte unbedingt vor dem Rollback jeweils nochmal die Anleitung lesen, und peinlich genau einhalten. Bitte unbedingt von @home auch snapshots machen.

Ich hab 48 GB und verwende trotzdem eine SWAP-partition. Ich kann nicht sicher behaupten dass btrfs das braucht, wĂĽrde aber zumindest zu einer kleinen SWAP-Partition raten. :footprints:

1 Like

Wow! Ich dachte, ich hätte schon viel, da ich gerne Videobearbeitung und VMs nutze. Ich brauche kein Hibernate, daher war ich der Meinung, dass ich bei 32 GB auch keinen Swap benötige… zumindest läuft bisher alles gut so :innocent:

Bei der Gelegenheit könntest du ihm erklären wie man eine BTRFS SWAP Datei erstellt. Die sollte ja reichen.
:innocent:

@jolic