Fragen zu ... BTRFS, snapshots & nested volumes

Tacheles

Ensign
Registriert
Mai 2017
Beiträge
174
Hallo zusammen,

ich bereite gerade ein Neuinstallation fuer Arch Linux vor und versuche mir in Vorbereitung dazu eine sinnvolle Btrfs Konfiguration auszuarbeiten.

Ich hab also verschiedene Anleitungen durchgelesen und festgestellt das es fuer subvolumes eine Flache subvolume Konfiguration gibt, oder man diese hierarchisch als nested subvolumes untereinander einbinden kann. Diese Konfiguartion hier ist eine Mischung aus beidem:


Der Vorteil hierbei ist das die subvolumes unterhalb von @root automatisch eingebunden werden, aber nicht mit im snapshot landen. Snapshots sind natuerlich vom root subvolume/filesystem.

Ich hab das in Virtualbox nachgestellt und dann @root umbenannt und einen vorherigen snapshot an der Stelle gebootet. Hier zeigen sich beim Booten dann Fehlermeldungen weil die nested snapshots nicht mehr vorhanden sind.

Hab ich was bezueglich Btrfs nicht richtig verstanden? In den Anleitungen, die auch nested volumes nutzen, macht es den Eindruck das man damit auch ein systemrollback machen kann, so wie ich das mache funktioniert es nur leider nicht. Infos dazu waeren mir sehr willkommen.
 
Zuletzt bearbeitet:
Wenn du die Snapshots direkt bootest, enthalten sie alle unter dem ursprünglichen Root-Subvolume liegenden Subvolumes natürlich nicht. Einfaches Umbenennen genügt da nicht. Für diese Konfiguration ist snapper wohl ein geeignetes Werkzeug für Snapshots und Rollback.

Wenn du es eh manuell machen möchtest, ist es vielleicht einfacher, auf eine komplett flache Hierarchie zu setzen und die ansonsten unterhalb liegenden Subvolumes per fstab zu mounten. Für einen Rollback genügt es dann, in der fstab die subvolid des Root-Volumes zu ändern, oder natürlich eine entsprechende Dateisystemoperation (Verschieben, Kopieren). Das Verzeichnis, in dem die Snapshots liegen, muss dann auch kein Subvolume sein. Alternativ kannst du natürlich auch die Snapshots direkt unterhalb der Root-Ebene ablegen, z. B. als @root_2021-03-27.

Denke daran, dass Snapshots nur lesbar sind und beschreibbar gemacht werden sollten, bevor du sie als Root-Volume bootest.

Der Fedora-Installer Anaconda erzeugt übrigens eine komplett flache Hierarchie, sicherlich nicht ohne Grund. Die Tendenz aller Äußerungen, die ich dazu gelesen habe, geht ebenfalls in Richtung flache Hierarchie.
 
Zuletzt bearbeitet:
Persönlich habe ich mich auch dran begeben und bin kläglich mit meinen Ergebnis gescheitert.
In den letzten Wochen ist mir immer und mehr Garuda Linux (Arch Basis) ins Auge gefallen. Bringt alles mit. Baut auf BTRFS & Snapshots auf. Der Hauptteil liegt bei mir aber im Gamen. Und da Trumpft Garuda voll auf. Insgesamt ein schönes System was alles mitbringt und man bei Bedarf sich selbst zusammenstellen kann.
 
Es wäre vielleich interessant zu erfahren, woran du gescheitert bist. Das ist ja immerhin keine allgegebene Selbstverständlichkeit.
 
Iapetos schrieb:
Für einen Rollback genügt es dann, in der fstab die subvolid des Root-Volumes zu ändern

Ich hab die subvolid von @root bisher immer aus der fstab getilgt und es stattdessen bei subvol=@root belassen, welches auch in die cmd default Zeile vom Bootloader eingefuegt ist und damit anweist welches subvol zu booten ist.

Code:
LABEL=btrfsroot         /                 btrfs         rw,noatime,compress=zstd,ssd,space_cache=v2,subvol=@root    0 0

Code:
CMDLINE_DEFAULT="rd.luks.name=uuid-of-crypt_device=btrfsroot root=/dev/mapper/btrfsroot rootflags=subvol=@root apparmor=1 lsm=lockdown,yama,apparmor,bpf rw quiet"

Ich meine das ein aendern der ID von / in der Fstab hierbei nicht dazu fuehrt das auch tatsaechlich der snapshot gebootet wird, oder?


Wenn ich dich richtig verstanden habe kann man eine Konfiguration mit nested volumes nur nutzen wenn man das obere subvolume beibehaelt, in meinem Fall @root. Somit kann man nur noch snapper rollback nutzen um das System zurueckzusetzen, nicht aber ein anderes snapshot mounten. Da finde ich die Einschraenkung zu gross.

Ich hab vor automatisch snapshots mit Snapper zu machen, will aber auch manuell snapshots mounten. Falls das Sytem nicht bootet, kann ich per chroot ein beschreibbares snapshot von einem der snapper snapshots machen welches ich dann @root nenne und folglich nach dem neustart gemountet wird.
 
Zuletzt bearbeitet:
Ich würde an deiner Stelle, wie auch allgemein, ohne verschachtelte Subvolumes arbeiten. Wahrscheinlich hast du bereits diesen Teil des Arch-Wikis gelesen, oder? Dein Vorhaben klingt jedenfalls durchdacht und sinnvoll.

Das Ändern der Oprtion subvolid=, aber auch von subvol= in der fstab führt tatsächlich dazu, dass von dem entsprechenden Subvolume gebootet wird. Allerdings sind Snapshots ro, das solltest du (wie zuvor bereits gesagt) vorher ändern.

Nebenbei kannst du auf folgende Mount-Option verzichten: ssd. Die Begründung steht irgendwo im Btrfs-Kernel-Wiki oder in der Manpage... 😉 Und bei compress kannst du bei Bedarf noch den Level auswählen, also von 1 bis 9. Standardmäßig wird 3 verwendet, Fedora ab Version 34 setzt 1.
 
Iapetos schrieb:
Wahrscheinlich hast du bereits diesen Teil des Arch-Wikis gelesen, oder?

Jepp.

Es waere auch einfach und schoen geloest wenn man als boot-option den top-level-subvolume id 5 abgeben koennte und root & fstab automatisch im default subvolume gesucht wird. So koennte man mit btrfs subvolume set-default xx unkompliziert rw snapshots mounten, ohne die ganzen Zwischenschritte. Was leider nicht geht, aber schoen waers.

Ist ja interessant das Fedora nur compress:1 nutzt. Hab auch schon daran gedacht den default herabzusetzen fuers Notebook. Die ssd-option ist bei btrfs default, die hab ich nicht extra angegeben.

Danke fuer deine Beitraege dazu, die haben mir weitergeholfen und nochmal einiges klarer gemacht.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Iapetos
Zurück
Oben