Wie kann ein lauffähiges RaspbianOS System möglichst einfach auf btrfs umgestellt werden?

  • DBa hat mich darauf gebracht dass man ja vermittels btrfs Snapshots die Downtime von Services wenn man ein Backup mit raspiBackup erstellen will sehr klein halten kann.

    Ich habe keine Erfahrung mit btrfs und suche nach einem möglichst einfachen Weg das Rootfilesystem von ext4 auf btrfs umzustellen. Zum Einen damit ich damit testen kann - zum Anderen damit ich das für raspiBackup Nutzer dokumentieren kann um btrfs Snapshots nutzen zu können.

    Zentris hat einen Eintrag im Lexikon dazu erstellt. Eine Anleitung wie man von ext4 auf btrfs umstellt findet sich dort leider nicht. Ein Lexikoneintrag ist da auch nicht der richtige Platz.

    Leider bin ich bei meiner Suche nach Anleitungen im Netz nur auf umständliche Anleitungen gestossen. Wäre schön btrfs-convert reicht aus - aber leider muss das initrd auch neu gebaut werden damit btrfs unterstützt wird.

    Ich gebe zu - ich bin gerade dabei raspiBackup Release 0.7.0 intensiv zu testen und das ist wichtiger. Die Release sollte baldmöglichst published werden.

    Ich plane aber den btrfs Support im nächsten raspiBackup Release einzubauen - der ist sehr sinnvoll. Da ich mich mit btrfs nicht auskenne werde ich mich natürlich mit dem Thema beschäftigen.

    Die Rampuptime für mich bzgl btrfs und letztendlich Verfügbarkeit des btrfs Supports in raspiBackup wird also verkürzt wenn ich da angeschoben werde.

    :no_sad: ... Kein raspiBackup - kein Mitleid ... :no_sad:

    Mein Raspberry Zoo

    3 * RPi1B, 2 * RPi3B, 2 * RPI4, 1 * CM4, 1 * RPi5

  • Wie kann ein lauffähiges RaspbianOS System möglichst einfach auf btrfs umgestellt werden?? Schau mal ob du hier fündig wirst!

  • Ich habe einige Zeit überlegt, ob ich hier antworten soll. Aber warum nicht, ist ja nur meine Meinung. ;)

    So sinnvoll ich - bei passenden Voraussetzungen - btrfs snapshots halte:

    Wir werkeln hier mit einem Bastelcomputer herum. Und raspiBackup ist raspiBackup und nicht die eierlegende Wollmilchbackupsau.

    Btrfs geht sehr am Standard (beim Raspi) vorbei. Falls jemals das Raspberry Pi OS btrfs als Standard-Filesystem verwenden sollte, könnte der früheste Zeitpunkt sein, darüber nachzudenken, es in raspiBackup einzubauen.

    Vorher erzeugt es nur aufwändigen Support ("Mein Pi läuft nicht mehr." "Wie administriert man btrfs?" usw.). Bei vermutlich nur wenigen Nutzern.

    :2cents:


    Und jetzt färbt mich rot, wie es im Heise-Forum immer so nett heißt... :D

  • Zentris hat einen Eintrag im Lexikon dazu erstellt. Eine Anleitung wie man von ext4 auf btrfs umstellt findet sich dort leider nicht. Ein Lexikoneintrag ist da auch nicht der richtige Platz.

    Leider bin ich bei meiner Suche nach Anleitungen im Netz nur auf umständliche Anleitungen gestossen. Wäre schön btrfs-convert reicht aus - aber leider muss das initrd auch neu gebaut werden damit btrfs unterstützt wird.

    Eine Suche mit der Suchmaschine deines Vertrauens nach dem im Text erwähnten "btrfs-convert" Tool lässt dich unter https://btrfs.readthedocs.io/en/latest/Convert.html fündig werden :)

    Hilft dir das ?

  • Zum Backup selbst denke ich, holt man sich mit btrfs noch Anderes ins System welches grundlegend ist. Von daher ist eine schnelle Integration auszuschließen.
    btrfs ist ja ein technisches Detail in größerem Zusammenhang das abgesehen von dessen Backup-Funktionalität tiefgreifendere Änderungen mit sich bringt. Vielleicht ist es sinvoll nur die Backup-Dateien selbst als btrfs-Dateisystem zu Formatieren um den User die Details zu ersparen und nur dort dessen Funktionalität vom Userfilesystem isoliert betrachtet.
    Edit: So eine Art Übersetzer von Dateisystem X zu btrfs und zurück.

    Jeder macht was er will, keiner macht was er soll, aber alle machen mit :)

    Edited 2 times, last by momefilo: Das ist unzweckmäßige Denkweise die mehr Umwege bringt als das er Zielführend ist. Die isolierte Betrachtung, nur die Backupdateien als btrfs zu Formatieren um dessen Vorteile zur Sicherung um zu setzen ist besser (January 7, 2025 at 1:32 PM).

  • Und sollten wir nicht eine wirklich gute Backuplösung für RasPiOS User entwickeln? In der er auch eine(oder mehrere) Onlineplatform(en) unter Vielen zur Sicherung des Backups auswählen kann (mir sind schon etliche Datenträger vor allem aber nicht nur CD/DVD-s einfach "gestorben"). Sowie nicht nur eine Komplette Systemsicherung (welche in der Praxis oftmals Fehler mit sichert) auch reine User-Daten Sicherung bietet. Das ist bestimmt komplexer weil hier viel vom graphischen Interface des Nutzers abhängt, und ich denke das hier zuerst eine Trennung von zu sichernden Daten und erneuerbaren Daten beginnen soll um den Backupforgang "abstrahieren" zu können, genauer eine Zieldefinition zu finden. Gute Datensicherung verschlingt Hirnschmalz ohne Ende, es gibt aussreichend Literatur und Erfahrung mit diesem Thema.

    Ich persönlich betreibe meine Systeme "grundsätzlich" Antifragil nach Nassim Nicholas Taleb, und bedeutet: Antifragile Systeme bringen die immerwährende Veränerung in ihrer Struktur zum Ausdruck und sind somit unvergänglich.

    Edit: natürlich betreibe ich auch "vernagelte" Systeme die seit min. zwei Jahren kein Update erfahren haben z.b. als Druckserver

    Jeder macht was er will, keiner macht was er soll, aber alle machen mit :)

  • Ein anderes Thema hier wo es um Usernamen- und Passwort- Änderung ging, ist ein Beispiel der "User-Daten Sicherung" wie ich sie meine. So das ich als angemeldeter Benutzer auf RaspiOS alle meine Systemänderungen und Passwörter und SSH-Schlüssel mit gesichert bekomme ohne das ich auf spezielle Softwarekonfiguration des RaspiOS angewiesen bin. Das ist in so weit komfortabe,l wie sich die Trennung von zu sichernden Daten im Detail des Systems programmatisch bewegt

    Jeder macht was er will, keiner macht was er soll, aber alle machen mit :)

  • Erstmal möchte ich vorweg sagen: wer btrfs nicht traut, muss es nicht benutzen. Eine Unterstützung dafür in raspiBackup erzwingt nicht, dass man es auch benutzen muss.

    Zweitens: ja, es gibt auch andere Filesysteme mit Snapshots, z.B. ZFS. Warum btrfs und nicht ZFS? Weil man mit irgendeinem anfangen kann, und ich benutze halt btrfs. Außerdem findet sich btrfs auch in NAS-Systemen wieder (z.B. ist es das empfohlene System für Synology Volumes und auch für Terramaster), kann also so unausgereift und instabil gar nicht sein.

    Drittens und am Wichtigsten: wofür Snapshots? Kurze Antwort: weil man nur mit Snapshots "kurze Downtime bei konsistenten Backups" erreichen kann.

    Lange Antwort: normalerweise müssen im Prinzip fast alle Services, die Daten wegschreiben, fürs Backup heruntergefahren werden. Dazu gehören alle Datenbanken, Docker, Home Assistant (und Ähnliche) und je nach Anwendung auch Andere, sogar in manchen Fällen Apache/Nginx. Fährt man die Services nicht runter, riskiert man inkonsistente Backups, d.h. nach der Wiederherstellung passen die Dateien möglicherweise nicht zueinander und die zugehörige Anwendung startet möglicherweise gar nicht erst, oder hat Datenfehler. Ganz massiv ist dieses Problem bei Datenbanken zu beobachten.

    Wenn das Backup eine Stunde dauert (8 GB Daten, 20 MB/s Transferrate), bedeutet das, dass die o.g. Services für eine Stunde ausfallen. Das kann je nach Service ganz schön doof sein.

    Mit einem Snapshot-fähigen System kann man Folgendes machen: Services stoppen, snapshot machen (dauert nur ein paar sekunden), Services wieder starten. DANACH kann man in aller Ruhe den Snapshot mit rsync oder tar sichern, denn er ändert sich nicht und reflektiert einen KONSISTENTEN stand.

    Kann btrfs viel mehr als snapshots? Na klar. Muss man alle Features nutzen? Jedem das, was er will.


    Ich weiß jetzt wieder, warum ich seit Jahren (als Raspi4 rauskam) von Raspbian auf Ubuntu umgestiegen bin.

    Bei Ubuntu (für Raspi - welches übrigens auch vom offiziellen Raspi Imager angeboten wird) ist btrfs Support drin, dort ist es tatsächlich die Sache von btrfs-convert und einer kleinen Anpassung in der cmdline.txt.


    Prinzipiell muss Folgendes gemacht werden (das ist jetzt etwas allgemein, ich bin gerade nicht zuhause und kann es nicht testen):

    1) /boot/cmdline.txt bzw. /boot/firmware/cmdline.txt muss angepasst werden:

    - root=... muss angepasst werden, ich empfehle die Benutzung von Labels oder /dev/sdXXX, da UUIDS bei Konvertierungen etc. verloren gehen können; mit Labels würde das z.B. so aussehen: root=LABEL=btrfs-root (ja, ohne Anfrührungszeichen etc.)

    - rootfstype=... muss komplett raus.

    2) initramfs erstellen (um dem Kernel btrfs beim Booten beizubringen), Einbindung - entfällt angeblich nach der Installation von "btrfs-progs" auf einem aktuellen RaspiOS. Auf Ubuntu ist dieser Regentanz auch nicht notwendig.

    3) in der /etc/fstab auf dem root-Filesystem den Eintrag für / von UUIDs auf Labels oder Devices ändern, selbe Methode halt wie bei cmdline.txt.

    Z.B.:

    LABEL=btrfs-root     /       auto    defaults        0       1

    4) das Filesystem muss mit btrfs-convert konvertiert werden. Dazu einen aktuellen Pi nehmen (raspi4 ist jetzt ja schon eine Weile draußen...) und von einer "initialen" Karte booten (mit btrfs-progs logischerweise), dort dann zuerst fsck laufen lassen ("e2fsck -f /dev/sdXN") und danach "btrfs-convert -L /dev/sdXN" ausführen. "-L" steht für "copy labels" und sorgt dafür dass das Label aufs neue System kopiert wird. Es gäbe zwar einen Schalter um UUIDs ebenfalls zu kopieren, aber ich stehe auf dem Standpunkt, dass das "U" in UUID für "Unique" steht.

    Der Vorgang dauert je nach Partitionsgröße sehr lang, und wenn er nicht erfolgreich zu Ende läuft, hat man immer noch das alte Filesystem.

    Danach die "alte" Karte entfernen, die neue aus dem Reader in den TF-Port stecken und booten.

  • Btrfs geht sehr am Standard (beim Raspi) vorbei. Falls jemals das Raspberry Pi OS btrfs als Standard-Filesystem verwenden sollte, könnte der früheste Zeitpunkt sein, darüber nachzudenken, es in raspiBackup einzubauen.

    Vorher erzeugt es nur aufwändigen Support ("Mein Pi läuft nicht mehr." "Wie administriert man btrfs?" usw.). Bei vermutlich nur wenigen Nutzern.

    Hm ... da hast Du Recht. Ich habe aber noch nicht gesagt dass ich es implementieren werde. Erst einmal will ich btrfs kennenlernen und abschätzen wie groß der Aufwand dann werden würde.

    Aber den Supportpunkt habe ich nicht im Auge gehabt. Wenn es keine 0815 Anleitung gibt wie man einfach ein existierendes System umstellt werde ich das Thema wohl nicht angehen. Deshalb ja meine Frage ob es so eine gibt. Ich habe gerade diese Anleitung gefunden aber noch nicht ausprobiert. Aber da wird nicht nur btrfs-convert genutzt sondern auch beschrieben wie man ein initramfs einbindet. Soweit - so gut - aber das bringt mich darauf - was ja simonz schon angemerkt hat - dass bei jeglichem Kernelupdate vermutlich immer ein neues initramfs gebaut werden muss da btrfs nicht offiziell von der Foundation unterstützt wird.

    Da mich das Thema btrfs interessiert werde ich mich mal mit btrfs befassen und ein RaspbianOS gemäß der verlinkten Anleitung auf btrfs umstellen und btrfs evaluieren.

    Sollte ich den Support einbauen werde ich definitiv keinen btrfs Support geben so wie ich auch immer bei allgemeinen Linuxfragen, die auch immer wieder reinkommen, diese nicht beantworte sondern z.B. auf dieses Forum bzw das Foundation Forum verweise.

    Eigentlich ist die Zielgruppe für raspiBackup Linux/Raspberry Beginner. Aber ich stelle immer mehr fest dass es auch von Leuten genutzt wird die sich mit Linux und der Raspberry auskennen. Die lange Zeit die ein Backup dauert ist immer wieder Thema wenn wichtige Services in der Zeit gestoppt werden müssen. Es wäre also schon ein nützliches Feature wenn per btrfs Snapshot schnell ein Systemabzug erstellt werden kann und damit die Downtime von wichtigen Services sehr kurz werden würde. Den gesicherten Stand dann ins Backupverzeichnis zu kopieren kann dann ruhig länger dauern.

    :no_sad: ... Kein raspiBackup - kein Mitleid ... :no_sad:

    Mein Raspberry Zoo

    3 * RPi1B, 2 * RPi3B, 2 * RPI4, 1 * CM4, 1 * RPi5

    Edited once, last by framp: Typos korrigiert (January 7, 2025 at 4:23 PM).

  • Ich hoffe nicht noch mehr Verwirrung zu stiften und hab das hier gefunden

    /etc/initramfs-tools/initramfs.conf change in 2024-11-13 IMG fails in systemd-nspawn · Issue #382 · RPi-Distro/repo
    The 2024-11-13 RasPiOS IMG made a change to /etc/initramfs-tools/initramfs.conf which creates strange breakage. Previously, that file had MODULES=most. With…
    github.com

    Jeder macht was er will, keiner macht was er soll, aber alle machen mit :)

  • Also erstmal kann ich simonz nur aufs Heftigste widersprechen - der "Standard" ist RaspiOS nicht wirklich, außer man ist ein absoluter Fan von gründlich veralterter Software. Als Beispiel: 2019 kam Raspi4 raus, und erst 2022 hat RaspiOS offiziell 64bit unterstützt. Ubuntu tat dies schon 2019. Die Designentscheidung, sich an die Debian-Releasepolitik zu halten, war meiner Meinung nach falsch, weil die Raspi Hardware sich derzeit deutlich schneller entwickelt (und damit verändert) als x86. Klar ist es einfacher, aber inwieweit ist das sinnvoll für die Benutzer?

    Nun zum Thema "wie stelle ich RaspiOS auf btrfs um": die Anleitung von linten.eu habe ich auch gesehen, dort steht schwarz auf weiß "Diese Schritte waren früher notwendig. Die letzte Konvertierung habe ich mit einem 64-Bit Raspberry Pi OS "Bookworm" durchgeführt. Hier werden nach der Installation der btrfs-progs automatisch die initramfs für den Raspberry Pi 4 und den Raspberry Pi 5 aktualisiert. Ein Manuelles Erstellen - wie im Folgenden beschrieben - ist nicht mehr notwendig. Die Einbindung ist ebenfalls bereits standardmäßig konfiguriert."

    Ich habe vor, diese Woche ein Raspi4 auf Raspi5 upzugraden, und kann danach ein bisschen mit RaspiOS auf dem Raspi4 herumspielen, u.a. die obige Anleitung verifizieren.

    Wie bereits erwähnt, unter Ubuntu ist das ein Klacks.

  • Ich habe vor, diese Woche ein Raspi4 auf Raspi5 upzugraden, und kann danach ein bisschen mit RaspiOS auf dem Raspi4 herumspielen, u.a. die obige Anleitung verifizieren.

    Danke. Ich bin schon wieder seit ein paar Stunden am Probieren. Nach der obigen Anleitung auf linten.eu bootet das System leider nicht :-(. Weder ohne noch mit initramfs Generierung.

    Ich habe dieses noch auf Stackexchange gefunden. Gemäß dem letzten EIntrag geht es nicht. Ich probiere noch den davorstehen Update aus. Ansonsten warte ich was DBa herausbekommt. Ich hoffe er hat mehr Erfolg - fingers crossed :green_smile:

    :no_sad: ... Kein raspiBackup - kein Mitleid ... :no_sad:

    Mein Raspberry Zoo

    3 * RPi1B, 2 * RPi3B, 2 * RPI4, 1 * CM4, 1 * RPi5

  • DBa Schön das Du heftigst widersprichst, jetzt aber bitte mal eine Quelle. Das Du eine Distribution nicht magst, ändert ja nix an den Fakten. Die Entscheidung war halt, dass der Raspi 4 nicht genug Arbeitsspeicher hatte, dass sich ein 64-Bit-System gelohnt hätte, weil da am Ende eher weniger Speicher zur Verfügung steht, wenn man ohne Not alle Zeiger doppelt so gross macht, aber gar nicht den RAM hat um die zusätzlichen Bits davon sinnvoll zu nutzen.

    “Politiker muss man nicht achten, man muss auf sie achten.” — Dieter Hildebrandt

  • Ich probiere noch den davorstehen Update aus.

    Damit habe ich jetzt ein RaspbianOS lite mit btrfs als root Filesystem erfolgreich am laufen. Allerdings habe ich jetzt die UUID genommen und nicht mehr die PARTUUID oder ein LABEL. Keine Ahnung ob die andere Anleitung mit der UUID auch funktioniert. Dort wird /dev/<device> genutzt. Aber da RaspbianOS standardmäßig die PARTUUID nutzt habe ich die auch nach der btrfs Konvertierung genutzt.

    So schnell wird das gesamte System mit btrfs Snapshot gesichert:

    Code
    pi@raspberrypi:~ $ time sudo btrfs subvolume snapshot "$(findmnt -n -o TARGET /dev/mmcblk0p2)" "/$(basename "bu5")"
    Create a snapshot of '/' in '//bu5'
    real    0m1.674s
    user    0m0.022s
    sys    0m0.042s

    Natürlich kommt dann noch die Zeit für die Bootpartition dazu die nicht per snapshot gesichert werden kann:

    Code
    pi@raspberrypi:~ $ time sudo tar -czf /boot.tar /boot/firmware/*
    tar: Removing leading `/' from member names
    tar: Removing leading `/' from hard link targets
    
    real	0m15.583s
    user	0m0.028s
    sys	0m0.016s

    Aber in roundabout 30 Sekunden das gesamte System abzuziehen ist schon eine sehr gute Hausnummer :bravo2:

    :no_sad: ... Kein raspiBackup - kein Mitleid ... :no_sad:

    Mein Raspberry Zoo

    3 * RPi1B, 2 * RPi3B, 2 * RPI4, 1 * CM4, 1 * RPi5

  • DBa Schön das Du heftigst widersprichst, jetzt aber bitte mal eine Quelle. Das Du eine Distribution nicht magst, ändert ja nix an den Fakten. Die Entscheidung war halt, dass der Raspi 4 nicht genug Arbeitsspeicher hatte, dass sich ein 64-Bit-System gelohnt hätte, weil da am Ende eher weniger Speicher zur Verfügung steht, wenn man ohne Not alle Zeiger doppelt so gross macht, aber gar nicht den RAM hat um die zusätzlichen Bits davon sinnvoll zu nutzen.

    Quelle für Release der 64bit RaspiOS Version: https://www.raspberrypi.com/news/raspberry-pi-os-64-bit/

    Quelle für Release des Raspi4: https://www.techrepublic.com/article/raspbe…eplace-your-pc/

    Rest sind Überlegungen und meine Meinung, auf die ich nicht weniger Recht habe als Du :)

    Und wenn Du den Vorteil eines Snapshots fürs Backup nicht siehst, dann brauchen wir eh nicht weiter zu diskutieren. Die Backupzeiten eines Raspis, das mehr als eine 16GB KArte drin stecken hat, sind zu groß um die Dienste so lange "unten" zu lassen.

  • Hast Du das jetzt absichtlich falsch verstanden, damit Du irgendwas richtiges sagen kannst? Die Erscheinungsdaten hat niemand in Frage gestellt, Dein Widerspruch ging darum welches OS Standard ist. Und das ist keine Meinung sondern einfach das was zahlenmässig halt installiert wird. Also ein Fakt. Kannst gerne eine eigene Meinung haben, aber eigene Fakten halt nicht.

    Und was soll der letzte Absatz? Wie kommst Du zu der Unterstellung? Dazu habe ich doch überhaupt gar nichts gesagt‽ Das wäre auch komplett orthogonal zu dem Punkt den ich angesprochen habe.

    “Politiker muss man nicht achten, man muss auf sie achten.” — Dieter Hildebrandt

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!