Warum zerschießt sich ein RPi bei jedem Stromausfall selber?

@BlackMark Danke erstmal für die Lösung!

Ich mache von meinem Pi Backups mit Win32DiskImager, da die SD Karten jedoch sehr groß sind und demnach das Backup auch sehr groß wird, habe ich die Partition auf 4,7 GB verkleinert. Nun habe ich folgende Fragen dazu:

  • Nutzt die SD Karte trotzdem die volle Kapazität (z.B. 16/32/64 GB) zum wear leveling oder nur das was innerhalb der Partition (4,7 GB) frei ist?
  • Gibt es eine bessere Backup/Restore Lösung ohne Sicherung leerer Blöcke?
 
Kurze Zwischenfrage, weshalb machsr du von deinem Pihole Backups? 0.o
Dafür hats doch die Teleporterfunktion für die Listen etc.
 
@Meleager:

Kurze Zwischenfrage:
was nützt Dir die Teleporter-Funktion (Export your Pi-hole lists as downloadable archive), wenn du nach dem Crash (kernel panic) keinen funktionierenden Pihole mehr hast? Wie und wohin willst Du

Code:
Teleporter Import
Import ...
Whitelist
Blacklist (exact)
Regex filters
Audit log
File input
Upload only Pi-hole backup files.

importieren?

Mein PiHole läuft auf einem Raspi Zero W. Ich mache meine Kopien von der Micro-SD-Karte mit PiHole immer mit dem USB Image Tool und bin bisher auch immer gut beraten gewesen.

https://www.alexpage.de/software/usb-image-tool-1-75/

Damit ziehe ich ein Image (Backup) der Micro-SD-Karte und lasse es auf der Festplatte meines PC liegen. Wenn ich es dann mal brauche, starte ich das Tool und mache ein Recovery auf die Micro-SD-Karte, fertig ist die Laube. Es war bisher nach ca. 3 Jahren PiHole etwa dreimal erforderlich . . .

Gut, danach könnte man immer noch die vorher exportierten Daten wieder importieren; exportierst Du die Daten regelmäßig, um immer auf einem aktuellen Stand zu sein?

Der Win32DiskImager hat manchmal Fehler geworfen . . .
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: KI v0.8.2
@omavoss Und was passiert, wenn die neue SD karte kleiner ist in deinem Fall?
Ergänzung ()

@BlackMark
Wenn ich eine Ramdisk für /var/log erstelle, ist die PiHole Weboberfläche nicht mehr erreichbar?

none /var/log tmpfs size=1M,noatime,mode=0755 0 0
Ergänzung ()

@omavoss das USB Image Tool klingt schon mal ganz gut, ist aber wieder nur Windows only.
 
Zuletzt bearbeitet:
@Blendarious:

Gute Fragen gestellt.

die Karte ist doch dieselbe wie vorher:
  • Pihole "kernel panic":
  • Karte aus dem RasPi rausziehen
  • Karte in einen Kartenleser im PC reinschieben
  • Karte formatieren, z.B. mit SD Card Formatter: https://sd-card-formatter.en.uptodown.com/windows
  • mit USB-image-Tool recovery machen
  • Karte in den RasPi reinschieben
  • RasPi mit Pihole starten
Wenn die Karte mal kaputt geht, musst Du halt eine gleichgroße (oder geringfügig größere) Karte wie die kaputte Karte kaufen oder die Garantie für die kaputte Karte geltend machen.

Unter Linux wird es sicherlich etwas äquivalentes geben, da bin ich mir völlig sicher. Kannst ja bitte hier mal eine Lösung vorschlagen . . .
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: KI v0.8.2
Blendarious schrieb:
Nutzt die SD Karte trotzdem die volle Kapazität (z.B. 16/32/64 GB) zum wear leveling oder nur das was innerhalb der Partition (4,7 GB) frei ist?
Wear-leveling passiert in der Firmware der SD-Karte. Wie genau die SD-Karte das macht hängt von der SD-Karte ab, aber du kannst davon ausgehen, dass der gesamte Speicher der SD-Karte verwendet wird. Dem Controller ist nämlich egal was für Daten drauf sind, der hat keine Ahnung vom Filesystem oder den Partitionen, den interessieren nur Adressen und Blöcke.

Blendarious schrieb:
Wenn ich eine Ramdisk für /var/log erstelle, ist die PiHole Weboberfläche nicht mehr erreichbar?
Stimmt. Kann ich reproduzieren. Liegt vermutlich daran, dass PiHole erwartet, dass gewisse Dateien oder Ordner existieren.

Am einfachsten sollte es sein, wenn du wirklich die ganze SD-Karte Read-Only machst. Im neusten Raspbian kannst du das mit raspi-config ganz einfach machen. Dort das overlay-fs einschalten und das sollte es gewesen sein.
Wenn du natürlich persistente Änderungen vornehmen willst, musst du das overlay-fs wieder deaktivieren.

Gruß
BlackMark
 
  • Gefällt mir
Reaktionen: KI v0.8.2
Und wo schreibt dann Pihole seine ganzen Veränderungen hin? Wievele IP- Adressen geblockt, wieviele Zugriffe auf die nicht geblockten DNS? Wo stehen dann die Speedtest-Ergebnisse? Fragen über Fragen . . .
 
Im overlay FS?
Verstehe deinen Einwand nicht. Das overlay FS ist eine Ramdisk die über das normale Filesystem gelegt wird. Gelesen wird von der SD-Karte, geschrieben wird in den RAM.
Beantwortet das deine Fragen?

Gruß
BlackMark
 
  • Gefällt mir
Reaktionen: KI v0.8.2 und omavoss
omavoss schrieb:
Unter Linux wird es sicherlich etwas äquivalentes geben, da bin ich mir völlig sicher. Kannst ja bitte hier mal eine Lösung vorschlagen . . .

Hab noch keine Alternative gefunden, weil dd auch nur die gesamte Partition mit allen leeren Blöcken kopiert.
Ergänzung ()

BlackMark schrieb:
Am einfachsten sollte es sein, wenn du wirklich die ganze SD-Karte Read-Only machst. Im neusten Raspbian kannst du das mit raspi-config ganz einfach machen. Dort das overlay-fs einschalten und das sollte es gewesen sein.

Bin derzeit noch auf Stretch, werde das dann bei einer Neuinstallation mit Buster mal testen. Mit der neuen SD Karte und einem neuen DNS-Server rennt der Pi wieder. Danke für die wirklich gute Hilfe!
Ergänzung ()

BlackMark schrieb:
Wenn du es ganz genau wissen willst, hier steht deine Frage sehr ausführlich beantwortet und auch die Lösung für dein Problem: Single Board Revolution: Preventing Flash Memory Corruption

Der Artikel beinhaltet auch eine echt interessante UPS:
https://hackaday.io/project/9461-lifepo4weredpi
https://hackaday.io/project/18041-lifepo4wered18650

Gibt's zu kaufen auf: https://www.tindie.com/stores/xorbit/
 
Zuletzt bearbeitet:
Blendarious schrieb:
Hab noch keine Alternative gefunden, weil dd auch nur die gesamte Partition mit allen leeren Blöcken kopiert.
Es gibt genug Möglichkeiten auf Linux Backups zu machen. Du kannst dd verwenden, wie du schon gesagt hast, dann bekommst du eine bit-für-bit Kopie. Wenn es dir nur um die Dateien geht, kannst du z.B. rsync verwenden. Wenn du gern etwas mehr Funktionen hättest, wie z.B. inkrementelle Backups und Verschlüsselung, dann gibt es dafür z.B. borg oder restic. Und dann gibt es noch sicherlich dutzende andere Möglichkeiten, die ich nicht kenne.

Anmerkung bezüglich dd: Du kannst mit zerofree die nicht verwendeten Blöcke auf 0 setzen und danach das mit dd erstellte Image zippen, dann kommst du vom Speicherverbrauch deines Backups sehr weit runter, ohne Informationen zu verlieren. Also wenn dich die leeren Blöcke bei dd stören, das kann man ganz leicht lösen.
Mein Standard-Weg für Backups von SD-Karten sieht so aus (angenommen die SD-Karte ist sda und die haupt ext4 Partition ist sda2):
Bash:
sudo zerofree -v /dev/sda2
sudo pv -tpreb /dev/sda | pigz -c -9 > backup.img.gz
Verwendet pv statt dd um eine schöne Progress-Bar zu bekommen und pigz statt gzip, weil dort Multithreading unterstützt wird.

Gruß
BlackMark
 
  • Gefällt mir
Reaktionen: 0-8-15 User und KI v0.8.2
@BlackMark Die lifepo4wered18650 USV hat einen eig. USB Anschluss und versorgt den RPi immer über die 5V GPIO Pins.

Ist es auch möglich den RPi normal über die eigene Micro USB Buchse mit Strom zu versorgen und parallel sowas wie die o. g. USV an die +5V GPIO Pins anzuschließen, sodass die USV übernimmt, wenn z.B. das Kabel abgesteckt wird?
 
Blendarious schrieb:
Ist es auch möglich den RPi normal über die eigene Micro USB Buchse mit Strom zu versorgen und parallel sowas wie die o. g. USV an die +5V GPIO Pins anzuschließen, sodass die USV übernimmt, wenn z.B. das Kabel abgesteckt wird?
Warum willst du das? Was stört dich daran nur die LiFePO4wered/18650 mit Strom zu versorgen?
Zu deiner Frage ob es geht, ja, es würde gehen. Ich kann dir aber nicht sagen, ob es schon etwas fertiges zu kaufen gibt, das genau dieses Verhalten hat. Es reicht auf jeden Fall nicht, den Pi einfach an zwei Stromquellen anzuschließen, das wird vielleicht kurz gut gehen, aber zerstört dir auf dauer vermutlich eine deiner Stromquellen.

Was du aber schon machen kannst, ist den Pi über die Micro-USB Buchse mit Strom von der LiFePO4wered/18650 zu betreiben. Du kannst nämlich einen Female USB-A Header an die LiFePO4wered/18650 löten, dann kannst du dort ganz normal ein USB Kabel anschließen und den Pi damit bespeisen. Das würde ich aber nicht wirklich empfehlen, es macht mehr Sinn den Pi einfach über den GPIO-Header zu betreiben, denn das zusätzliche USB Kabel stellt nur einen unnötigen Leistungsverlust dar, aufgrund des Widerstandes des Kabels.

Gruß
BlackMark
 
Ich kann PiShrink empfehlen, dass dampft das Backup ordentlich ein. Bei Wiederherstellung kann man dann felxibel auf den vorhandenen Platz ausdehnen.
 
  • Gefällt mir
Reaktionen: KI v0.8.2
@BlackMark Genau genommen gibt es ja nur eine Stromquelle mit Pufferspeicher. Eig. dürfte vom Akku der USV gar kein Strom fließen solange an den +5V Pins Strom vom Netzteil anliegt oder sehe ich das falsch?
 
Du musst genauer spezifizieren von was du redest. Welche +5V Pins? Die +5V Pins am GPIO-Header vom Pi? Von was für einem Setup reden wir jetzt?

Wenn du ein LiFePO4wered hast und korrekt anschließt (also USB Netzteil an LiFePO4wered und nicht an den Pi), dann hast du zwei Stromquellen (den Akku der LiFePO4wered und das USB Netzteil) und die Logik des LiFePO4wered monitorisiert die Spannung des USB Netzteils und schaltet automatisch auf den Akku um, sobald diese unter irgend einen Threshold fällt. Ein Akku ist kein Capacitor, den kannst du nicht einfach parallel zu deiner Stromquelle schalten und hoffen, dass alles funktioniert.

Blendarious schrieb:
Eig. dürfte vom Akku der USV gar kein Strom fließen solange an den +5V Pins Strom vom Netzteil anliegt oder sehe ich das falsch?
Das kommt auf die konkrete Schaltung an. Wenn du den Pi direkt anschließt und einen Akku an die +5V GPIO Pins hängst wird definitiv Strom in irgend eine Richtung fließen und das willst du nicht. Im Fall des LiFePO4wered funktioniert das nur, solange du den Pi selbst nicht mit Strom versorgst. Oder in den Worten des Entwicklers:
https://hackaday.io/project/20909-lifepo4weredpi schrieb:
The LiFePO4wered/Pi+ needs control of the Pi power, so it doesn't work if the Pi is powered from its own power input or another GPIO source.

Man kann natürlich eine Schaltung designen, die die Spannung der GPIO +5V Pins des Pi monitorisiert und umschaltet, sobald diese zu niedrig ist. Vielleicht gibt es das auch schon. Aber LiFePO4wered unterstützt das nicht!

Gruß
BlackMark
 
  • Gefällt mir
Reaktionen: KI v0.8.2
@BlackMark :

Ich verwende für meinen PiHole einen Raspi Zero, als Betriebssystem benutze ich DietPi.

Wie kann ich dort das Overlay-FS einschalten? Rudimentäre Linux-Kenntnisse sind vorhanden.
 
DietPi hat scheinbar keine standardmäßige Integration dafür. Dann kann ich auch nur Googlen.
Ich habe das und das gefunden. Ob das mit DietPi funktioniert weiß ich nicht. Musst du probieren, oder selber Googlen.

Gruß
BlackMark
 
Danke @BlackMark, der zweite Link sieht vielversprechend aus. Ich mache jetzt von meiner SD-Karte im Pihole (RaspiZero) auf meine althergebrachte Weise (USB Image Tool) ein Duplikat und versuche das, was in diesem Link beschrieben ist. Ich melde mich mit dem Ergebnis.
 
  • Gefällt mir
Reaktionen: BlackMark
@BlackMark Ich bin ehrlich gesagt auch weg von dem LiFePO4wered Projekt, weil zu teuer und nicht ganz das was ich mir vorstelle.

Grundidee ist den RPi über USB mit Strom zu versorgen und an die GPIO Pins einen Kondensator zu hängen als Überbrückung für <30s. Natürlich mit notwendiger elektronischer Schaltung. Meine Frage war nur, ob das prinzipiell möglich ist. Wenn nicht kann ich mir nämlich die Zeit und den Aufwand sparen.
 
Zurück
Oben