Pi-hole SD-Card-Schonung


#1

Hi,

habe nun seit einigen Tagen pi-hole auf einem RPi3B und der Fritzbox 7490 im Einsatz.
Bin soweit zufrieden…

Nun weiß ich von anderen Raspberry Pi, dass die permanenten Schreibzugriffe auf die SD-Karte für Logs etc den Flash-Speicher relativ schnell mürbe machen.

Gibt es eine sinnvolle Empfehlung für pi-hole, die Schreibzugriffe zu reduzieren oder ggf. in größeren Abständen schreiben zu lassen ?

Im Internet fand ich folgenden Vorschlag bisher…

Swapping deaktivieren:

sudo dphys-swapfile swapoff

sudo systemctl disable dphys-swapfile

sudo apt-get purge dphys-swapfile


#2

My reply poorly translated by Google Translate: Meine Antwort wurde schlecht von Google Translate übersetzt

Control of the long term database is described here: Die Kontrolle der Langzeitdatenbank wird hier beschrieben:

https://docs.pi-hole.net/ftldns/database/

https://docs.pi-hole.net/ftldns/configfile/

Logging to /var/log/pihole.log is controlled by the Web GUI (Settings > Disable logging): Die Protokollierung in /var/log/pihole.log wird über die Web-GUI gesteuert (Einstellungen> Protokollierung deaktivieren):


#3

Hallo,

Ich benutze auch einen 7490 und ein rpi3b.
aber keine SD-Karte mehr, ein 16gb usb.

Ich habe ein SD-Kartenkopie gebraucht und --> https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md

und jetzt habe ich kein probleme mehr.

Goos

–>Entschuldigung für mein schlechtes Deutsch, bin ein Holländer


#4

I moved a long time ago my /var/log to tmpfs. On boot the saved logs are put back and on shutdown or reboot the are saved to SD.

If you have a crash of the system you loose the last part of the log so there is a trade off in doing it so.


#5

Ich achte da gar nicht drauf. Sd Karte läuft seit 1,5 Jahren. Habe eine neue Sd Karte und ein Backup für den Notfall bereit liegen.
Einzig swapping habe ich jetzt auf einen USB Stick da die 100mb nach 5 Tage voll waren.


#6

Hast du für Letzteres ein extra Skript geschrieben? Würde mich interessieren :grinning:


#7

Seit wann unterscheidet sich der Flashspeicher der SD Karte von dem eines USB Sticks ?
Einzige Unterschiede liegen in der MLC und SLC Technik der Nandgatter.


#8

Bin dadurch jetzt noch nicht schlauer… ich möchte ja nicht sämtliches Logging abschalten. Dachte eher, man kann entweder die Loggingdaten selbst vermindern oder eben sagen, der RPi schreibt nicht sofort jede Information ins Log, sondern gesammelt aus dem RAM nach einer längeren Zeitspanne. Der potentielle Verlust von einer Stunde Loggingdaten bei Steomverlust wäre vernachlässigbar.


#9

You can have look at this page: https://www.a-netz.de/blog/2013/02/ramdisks-for-the-raspberry/

It is a while ago that I have implemented it and I and I have changed the original working:

#!/bin/bash
#
### BEGIN INIT INFO
# Provides:          prepare-log-dirs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Short-Description: Eigen Create needed directories on /var/log/ for tmpfs at startup
# Description:       Eigen Create needed directories on /var/log/ for tmpfs at startup
### END INIT INFO

NAME="prepare-log-dirs"
BACKUPS="/var/log-backups"
LOGFILES="/var/log"
exec >> /var/log/$NAME.log 2>&1
echo -e "\n============================"
date
echo -e "============================\n"
# needed Dirs
DIR[0]=log/apache2
CHOWN[0]="root:adm"
DIR[1]=log/apt
CHOWN[1]="root:root"
DIR[2]=log/fsck
CHOWN[2]="root:root"
DIR[3]=log/letsencrypt
CHOWN[3]="root:root"
DIR[4]=log/mysql
CHOWN[4]="mysql:adm"
DIR[5]=log/ntpstats
CHOWN[5]="ntp:ntp"

start_it()
{

# create directories
 typeset -i i=0 max=${#DIR[*]}
        while (( i < max ))
        do
        if [ ! -d /var/${DIR[$i]} ]; then
                mkdir /var/${DIR[$i]}
                chmod 755 /var/${DIR[$i]}
                echo /var/${DIR[$i]} " created"
        fi

        i=i+1
        done

# terugzetten van huidige logsave (geroteerd) naar /var/log/logsave op een tmpfs 
# restore current logsave (rotated) to /var/log/logsave on the tmpfs

    cp -f -p -R /var/log-backups/* $LOGFILES
	rm -rf /var/log-backups/*
}

stop_it()
{
#save current logs to backup
        rm -rf /var/log-backups/*  
        cp -f -p -R /var/log/* $BACKUPS
	wait 5
}

case "${1:-''}" in
  start)
        start_it
    ;;
  stop)
        stop_it
    ;;
  restart)
        stop_it
        wait 1
        start_it
   ;;
  status)
   ;;
  *)
   echo "Usage: /etc/init.d/$NAME {start|stop|restart|status}" >&2
   exit 2
   ;;
esac

#10

Das ist auch nicht notwendig. Das Log kann getrost deaktiviert werden - es gehen seit Pi-hole v4.0 dadurch keine Statistiken mehr verloren. Wir behalten es nur deswegen weil viele Nutzer gerne selbst dort manchmal noch reinschauen statt die Weboberfläche zu verwenden.
Tatsächlich geschieht hier nun nämlich das was von @Blebbens sich wünscht: Es wird im RAM gesammelt und dann einmal pro Minute alles neue “in einem Rutsch” auf die SD-Karte geschrieben. 60 Schreibaktionen pro Stunde ist extrem wenig, es gibt meines Erachtens keinen Grund das noch weiter zu reduzieren, denn das Betriebssystem wird in der gleichen zeit vermutlich schon einige tausend Schreibaktionen mehr für sich selbst durchgeführt haben. Man muss auch schauen was man wo spart und wie viel das am Ende wirklich ausmacht.

Falls dennoch gewünscht, kann der Intervall, in dem Daten auf die SD-Karte geschrieben werden frei angepasst werden, die @jfb bereits erwähnte (Link).

Swap ist generell auf solchen Geräten zu deaktivieren, ich denke aber auch dass es nach einer neuen Installation auch gar nicht erst aktiviert sein sollte.


#11

Ah, klasse…

Dann macht es Sinn, mit den obigen Befehlen Swaping zu deaktivieren ?
Und anschließend meinst Du, man könne das Logging sowieso anlassen, da es kaum die SD-Karte bei 1 Schreibvorgang je 60 Sekunden beansprucht ? Und dieses Intervall könne man getrost auf beispielsweise 30 Minuten hochsetzen ?

Beides zusammen würde also die SD-Karte schonen ?


#12

Ja

Jein. Pi-hole macht doppelte (Log)Buchführung!

Es gibt die ursprüngliche Logdatei (/var/log/pihole.log) sowie die Long-Term Datenbank (gespeichert in /etc/pihole/pihole-FTL.db). Ersteres Logbuch wird instantan geführt. Dieses kannst Du verlustfrei deaktivieren. Das zweite wird im eingestellten Intervall (wie gesagt, Grundeinstellung ist 1x pro Minute) geführt. 30 Minuten ist sicherlich auch Okay.


#13

Okay, dann unter settings/disable query logging die doppelte Buchführung abstellen und auf Kameralistik zurück ?!


#14

Ja. Swap kann zusätzlich deaktiviert werden wenn es aktiviert ist.


#15

Hallo Gemeinde.
Ich verwende seit wenigen Tagen meinen betagten Raspi (Model B, 512MB RAM (Rev. 2.0)) mit Pi-hole. Läuft soweit auch prima, jedoch bin ich durch’s stöbern im Forum zum Thema SD-Karte unsicher geworden.

Ich habe von Empfehlungen gelesen, manche Verzeichnisse auf einen angeschlossenen USB-Stick auszulagern um die SD-Karte zu schonen. Aber hilft das wirklich? Verwenden moderne SD-Karten nicht auch ein wear-leveling um die Lebenszeit der Speicherzellen zu optimieren?

Wie lautet denn eure Empfehlung zum dauerhaften Betrieb von Pi-hole mit einer SD-Karte als alleiniger Datenträger. In meinem konkreten Fall, habe ich das Logging schonmal abgeschaltet.
Danke für euren Input.


#16

Hallo,

ich benutze außer der SD-Karte keine weiteren (externen) Datenträger zum Speichern.

Wenn ich mich richtig entsinne, habe ich eigentlich nur zwei Änderungen durchgeführt (Pi-hole Logging ist vollständig aktiviert):

1).

/etc/pihole/pihole-FTL.conf

DBINTERVAL=3.0

siehe hier

2).

/etc/fstab

PARTUUID=96bae3f8-02 / ext4 defaults,noatime,commit=30 0 1

noatime und commit hinzugefügt.


#17

Vielen Dank für deine rasche Rückmeldung und die Feintuningvorschläge zum Speicher- und Synchronisierungsintervall.

Ich muss schauen, wie die Parameter sich auf meinen verfügbaren RAM auswirken. Bin jetzt schon dauerhaft im “roten Bereich” bei einer Auslastung von ca. 90 % (+/- 5%). Habe im Raspi B ja nur 512 MB.

Off-Topic: Hilft es hier die Anzahl der geblockten Domains zu reduzieren. Habe derzeit Blocklisten aktiv die ca. 2,7 Millionen Domains berücksichtigen. Ist das zuviel? Overblocking habe ich jedoch noch nicht festgestellt.


#18

Hart an der Grenze für deinen Raspi mit 512MB Ram.
Als Vergleich: Ich habe einen Raspi3 mit 1GB Ram, sowie in Pihole rund 3 Mio Domains. Die Oberfläche zeigt mir 52% und in htop steht bei pihole-FTL rund 483 MB.


#19

Ja, die 512 MB RAM sind recht knapp! Soweit ich irgendwo gelesen habe, ist das aber die zulässige Mindestgröße auf der Pi-hole läuft.
Zur Zeit beobachte ich noch regelmäßig die RAM-Auslastung im Status des Pi-hole. Es scheint sich auf einen konstanten Wert +/- einzupendeln, zumindest steigt der Wert nicht weiter an, das spricht für die Entwickler. :+1:

Eine Reduzierung der Blocklisten auf die sieben Standardlisten hat im Übrigen kaum eine Auswirkung auf den verwendeten RAM gehabt, was mich sehr verwundert hat, da ja alle Domains im RAM vorgehalten werden.
Alles in Allem kann ich eigentlich sagen, das Pi-hole auch auf einem 512 MB-System zuverlässig läuft; die vorhandenen Resourcen werden halt gut ausgenutzt…


#20

Ja, das ist mir auch aufgefallen. Das bleibt konstant. Daumen-hoch für die Entwickler. :slight_smile:

Ich habe das gerade mal getestet. Ergebnis:

2.911.775 Domains
Unter htop: 469M 416M /usr/bin/pihole-FTL
Gesamtspeicherbedarf: 475 MB
lt. Weboberfläche: 51,7% Ram

112.504 Domains (Standardinstallation)
Unter htop: 21M 74M /usr/bin/pihole-FTL
Gesamtspeicherbedarf: 80 MB
lt. Weboberfläche: 7,5% Ram

Nur mehr Domains dürfen bei dir nicht mehr dazukommen.