class: center, middle ![img33r](pinguin-sd-karte01.webp) # Raspberry Pi ### SD-Karten-Backup und F2FS Dateisystem ### Hauke Goos-Habermann #### https://goos-habermann.de --- ### Über mich - Entwickler des
Softwareverteilungssystems m23
- Organisator der
Kieler Open Source und Linux Tage
-
Dienstleister zu m23, Linux und Freier Software
- Softwareentwicklung (PHP, BASH, C/C++, JS, Python und was sonst so gebraucht wird...) - Administration - Schulungen - Support - Beratung - quasi **alles**, *was mit Linux zu tun hat* - Wöchentlicher Livestream *"Jean und Hauke Show"* auf https://www.youtube.com/c/LinuxGuides - *"Nicht der Weisheit letzter Schluß"* mit **beruflichen** oder **privaten Projekten** auf
tube.tchncs.de/c/ndwls
und
youtube.com/@nichtderweisheit
- Verwendet einen Raspberry Pi als Miniserver --- ### SD-Karten ![img33r](pinguin-sd-karte02.webp) Seit ca. **7 Jahren** läuft bei mir fast ununterbrochen ein Raspberry Pi 3B+ mit derselben SD-Karte. Bis vor Kurzen noch ohne Probleme. Vor ein paar Wochen konnte sich dieser nicht mehr per SSH-Schlüssel auf einem anderen Rechner anmelden. Nach Analyse des Problems stellte sich heraus, daß der private **SSH-Schlüssel** und weitere Dateien **beschädigt** waren; Sonderbarerweise allerdings keine Dateien, die für den normalen Betrieb benötigt werden. Das Standard-Dateisystem von RaspBerry Pi OS ist ext4 und nicht auf SD-Karten-Verschleiß hin optimiert. Auf anderen RasPis konnte ich sehr **unterschiedliche Haltbarkeiten** von SD-Karten beobachten, die sich nicht an einem Hersteller festmachen lassen. --- ### Dodger-Tools installieren ![img33l](../../gfx/Dodger-Tools-logo.png) Die Dodger-Tools könnt Ihr (als root) mit
installDT.sh
auf **Debian, Ubuntu, Linux Mint, Raspberry Pi OS** (und wahrscheinlich auch anderen Debian-Derivaten) installieren: ```bash cd /tmp wget https://goos-habermann.de/installDT.sh -O installDT.sh bash installDT.sh ``` Je nach Dodger-Tools-Modul, das Ihr nutzen möchtet, müßt Ihr noch weitere Pakete installieren. Zum Installieren aller Pakete, die vor irgendeinem Modul verwendet werden: ```bash apt-get install -y dodger-tools --install-suggests ``` --- ### SD-Karten sichern & wiederherstellen ![img33r](pinguin-sd-karte03.webp) Üblicherweise werden die Betriebssysteme für den RasPi als **SD-Kartenabbilddatei** zur Verfügung gestellt, bei dem **alle Sektoren** der Originalkarte in eine Datei geschrieben werden. Das Schreiben funktioniert ähnlich wie es im Video "
Drei Wege, um USB-Bootsticks zu erstellen: balenaEtcher, UNetbootin & dd
" zeige. Eine **Sicherung**, die **auf Dateiebene** arbeitet, könnt Ihr **anlegen** mit: ```bash dt_bak_raspiSDBackupTar [/dev/xxx] [Datei] ``` Und wiederherstellen mit: ```bash dt_bak_raspiSDRestoreTar [/dev/xxx]\ [Datei.tar.gz] [f für F2FS] ``` --- ### F2FS? ![img33r](pinguin-sd-karte04.webp) **
F2FS
** ist ein Dateisystem, das speziell für Flash-Medien wie SD-Karten entwickelt wurde. Durch spezielle **Algorithmen zum Aufräumen** und Reservierung von **Reservesektoren** soll die **Lebensdauer erhöht** werden. Klingt nach einem guten **Kandidaten** als **ext4-Ersatz** :-) Raspberry Pi OS 12 bringt alles für die Verwendung von **F2FS** mit :-) Durch Sichern und wiederherstellen (mit "f" als 3. Parameter) auf eine neue SD-Karte läßt sich die Betriebssystempartition **auf F2FS umstellen**. Mal schauen, wie sich F2FS im **Dauertest** behaupten kann... --- ### F2FS-Details ![img33r](pinguin-sd-karte05.webp) F2FS verwendet als **einzige Verwaltungsstruktur** ein **Protokoll** (Log-structured File System/LFS), in das alle **Änderungen sequentiell geschrieben** werden. Hierdurch wird das **Schreiben** und **Wiederherstellen** der Daten **nach einem Absturz beschleunigt**. Das Protokoll enthält einen **Index**, damit Dateien effizient aus dem Protokoll zurückgelesen werden können. Um **große freie Bereiche** für das schnelle Schreiben von Daten zu erhalten, wird das Protokoll in Abschnitte eingeteilt. Ein Routine zum Bereinigen (Segment Cleaner) von Abschnitten wird verwendet, um die Live-Informationen aus **stark fragmentierten Segmenten** zu **komprimieren**. Quelle: https://docs.kernel.org/filesystems/f2fs.html --- ### F2FS-Bereinigung ![img33r](pinguin-sd-karte06.webp) F2FS schreibt Daten **verstreut über alle Blöcke** des Speichermediums, um dieses **gleichmäßig abzunutzen**, wobei die Daten an den **physikalischen Blöcken ausgerichtet** sind. Die Routine zum Bereinigen sorgt für **zusammenhängende freie Bereiche**, um größere Datenmengen zu schreiben: * Auswahl eines Bereiches * Laden der übergeordneten Verwaltungsstruktur * Prüfen der Verwaltungsdaten und ob die Blöcke noch belegt sind * Verschieben von gültigen Daten --- class: center, middle ### Informationen zu mir und meinen Dienstleistungen, m23, ... ### https://goos-habermann.de