GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Korruptionssicheres SD-Karten-Dateisystem für Embedded Linux?

Den besten Widerstand gegen Korruption auf einer einzelnen SD-Karte bietet BTRFS in RAID1 Modus mit automatischem Schrubblauf alle vordefinierten Zeiträume.

Die Vorteile:

  1. Bewahrung der Fähigkeit, RW zum Dateisystem zu schreiben
  2. modernes, voll funktionsfähiges Dateisystem mit sehr nützlichen Optionen für ein RPi, wie transparente Komprimierung und Snapshots
  3. entworfen (unter anderem) für Flash-Speicher

So geht's:

Ich betreibe meinen RaspberryPi auf ArchARM Linux und meine Karte befindet sich im SD-Lesegerät, also ändern Sie diese Anweisungen entsprechend für andere Distributionen und /dev-Schnittstellen.

Hier ist ein Beispiel für ein Partitionslayout:

/dev/mmcblk0p1: fat32 boot partition
/dev/mmcblk0p2: to be used as btrfs partition
/dev/mmcblk0p3: to be used as btrfs partition (mirrored with the above)
/dev/mmcblk0p4 (optional): swap

Um btrfs in RAID1 zu bekommen, erstellen Sie das Dateisystem wie folgt:

mkfs.btrfs -m raid1 -d raid1 /dev/mmcblk0p2 /dev/mmcblk0p3

Dann rsync -aAXv dazu Ihr zuvor gesichertes System.

Damit es von BTRFS in raid1 bootet, müssen Sie initramfs ändern . Daher müssen Sie Folgendes tun, während Ihr System noch auf Ihrem alten Dateisystem läuft.

Raspberry verwendet mkinitcpio normalerweise nicht, daher müssen Sie es installieren. Dann müssen Sie „btrfs“ zum MODULES-Array in mkinitcpio.conf hinzufügen und initramfs mit

neu erstellen
mkinitcpio -g /boot/initrd -k YOUR_KERNEL_VERSION

Um zu wissen, was Sie anstelle von YOUR_KERNEL_VERSION eingeben müssen, führen Sie

aus
ls /lib/modules

Wenn Sie den Kernel aktualisieren, MÜSSEN Sie initramfs neu erstellen, BEVOR Sie neu starten.

Dann müssen Sie die Boot-Dateien von RPi ändern.

In cmdline.txt müssen Sie

haben
root=/dev/mmcblk0p2 initrd=0x01f00000 rootfstype=btrfs

und in config.txt müssen Sie

hinzufügen
initramfs initrd 0x01f00000

Wenn Sie das alles getan und Ihr btrfs RAID1-System erfolgreich gebootet haben, müssen Sie nur noch das regelmäßige Scrubben (alle 3-7 Tage) entweder mit dem systemd-Timer (bevorzugt) oder cron (dcron) wie folgt einrichten:

btrfs scrub start /

Es wird auf Ihrem Dateisystem ausgeführt, vergleicht die Prüfsummen aller Dateien und repariert sie (ersetzt durch die richtige Kopie), wenn es eine Beschädigung findet.

Die Kombination aus BTRFS RAID1, Single Medium und Raspberry Pi macht dieses ziemlich geheimnisvolle Zeug. Es hat einige Zeit und Arbeit gekostet, alle Teile zusammenzusetzen, aber hier ist es.


Ich würde einen anderen Weg gehen und nur ein schreibgeschütztes Dateisystem verwenden. Ich bekomme meinen Himbeer-Pi nie stabil genug, wenn ich ein Root-Dateisystem mit Lese- und Schreibzugriff auf der SD-Karte verwende. Sie können entweder einfach Ihren Root per Kernel-cmdline (ro) booten oder ein initramfs mit Huckepack verwenden, das Ihr komplettes System enthält.

Beide können mit meinem hausgemachten Build-System OpenADK erstellt werden. (http://www.openadk.org)


Nun, Flash-Speicher ist aus mehreren Gründen wünschenswerter als Magnetspeicher, aber für diese Anwendung sage ich hauptsächlich, weil es keine beweglichen Teile gibt. Abgesehen davon glaube ich nicht, dass es ein "korruptionssicheres" Dateisystem gibt, aber es gibt einige robuste Dateisysteme (ext4 ist eines davon) sowie einige Taktiken, um die Korruption zu mindern.

RAM-Disk

Wenn das Bild des RPi nicht hat zu ändern, und es hört sich so an, als würde dies nicht der Fall sein. Wenn nichts versucht (oder versuchen sollte), auf die Festplatte zu schreiben, versuchen Sie, ein Root-Dateisystem zu verwenden, das zum Entpacken in den RAM erstellt wurde. Die Idee dabei ist, dass Sie beim Booten ein komprimiertes Root-Dateisystem haben, das in den Arbeitsspeicher entpackt wird. Alle Änderungen erfolgen auf der RAM-Disk, sodass praktisch kein Schreiben auf die SD-Karte erfolgt, sondern nur beim Booten gelesen wird. Dies sollte die Lese-/Schreibvorgänge auf Ihrem Laufwerk reduzieren und dessen Lebensdauer erhalten. Dies ähnelt dem, was getan wird, wenn Sie Linux von einer CD booten, und ist eines der ersten Dinge, die passieren, wenn Linux bootet.


Linux
  1. 4 Tools zum Erstellen von eingebetteten Linux-Systemen

  2. Verwenden Sie „pushd“ und „popd“ für eine effiziente Dateisystemnavigation unter Linux

  3. Linux-Unterstützung für die neue externe Sony Vaio Z-Grafikkarte?

  4. Linux – Iommu im Kernel für Grafikkarten-Pass-Through aktivieren?

  5. Wahl des Dateisystems für GNU/Linux auf einer SD-Karte

5 Produktivitäts-Apps für Linux

Eine Einführung in bpftrace für Linux

Auswählen eines Druckers für Linux

Eine schnelle Einführung in das Linux-Dateisystem für Windows-Benutzer.

Zorin OS für Linux-Neulinge

Die 15 besten Linux-Bootloader für Heim- und eingebettete Systeme