Eine häufige Sorge von Raspberry Pi-Benutzern ist die Abnutzung und Zerstörung ihrer SD-Karte (die begrenzte Schreibzyklen aufweist) durch zu viele Schreibvorgänge. Die von den Benutzern gemeldeten Erfahrungen stützen diese Annahme.
Die Protokollierung ist eine Quelle für häufigen Schreibzugriff.
Es stellt sich also die Frage, wie dies bei Raspbian reduziert werden kann.
shutdown now
für SD- Schäden, aber für den Fall, dass ich immer eine und keine SD-Beschädigungen mehr mache .Antworten:
Wenn Sie nicht an den Protokollen interessiert sind, können Sie mithilfe einer Protokollkonfigurationseinstellung viel ausschalten.
Bearbeiten Sie die Datei
/etc/rsyslog.conf
und direkt nach dem Start des AbschnittsFügen Sie die folgende Zeile hinzu.
Wenn Sie feinkörniger sein möchten, müssen Sie die Dateikommentare lesen.
Vergessen Sie nicht, den rsyslog-Daemon neu zu starten:
quelle
Meine Lösung für Raspbian 8.0 (Jessie) basiert auf der Protokollierung im RAM
Hierfür gibt es bereits das Ramlog Debian-Paket und Installationsanweisungen . Dies hat jedoch bei mir nicht funktioniert (Starten von ramlog-tmpfs 2.0.0: Fehler: / var / log wird verwendet ... [fehlgeschlagen]).
Mit habe
iotop -bktoqqq
ich den häufigsten Schreibzugriff herausgefunden. Es stellt sich heraus, dass auch / var / cache / samba / häufig beschrieben wird. Dies muss also zusätzlich zu / var / tmp /, wo sich die neuen Protokolldateien befinden, auch in den Arbeitsspeicher gehen.1. Erstellen Sie die Ramdisk
Also müssen zuerst diese beiden Einträge hinzugefügt werden zu
/etc/fstab
:2. Das log2disk-Skript
Wir müssen dieses Skript speichern, in
/usr/local/bin/log2disk
dem der Inhalt aller Protokolldateien/var/tmp/log/
an die Dateien in angehängt und gelöscht wird/var/log/
.und machen es ausführbar
sudo chmod +x /usr/local/bin/log2disk
.3. Hinzufügen zu crontab
Wir möchten dieses Skript alle 3 Stunden ausführen und diese Zeile dem System hinzufügen
/etc/crontab
(Vergessen Sie nicht eine letzte Zeile, die von crontab benötigt wird.)
4. Installieren Sie den log2disk.service
Wir müssen einen systemd-Dienst erstellen
/lib/systemd/system/log2disk.service
, der dieses Skript vor dem Herunterfahren und Neustarten ausführt, damit der Inhalt der Protokolldatei erhalten bleibt:und installieren Sie es mit
sudo systemctl enable log2disk
.5. Auswahl der Protokolldateien für RAM
Jetzt können wir feststellen,
/etc/rsyslog.conf
welche Protokolldateien im RAM aufbewahrt werden sollen. Diese Dateien sindauth.log, syslog, daemon.log, user.log and messages
und wir ersetzen für jeden ihrer Einträge denlog/
Pfadtmp/log/
wie folgt :Erledigt!
Nach einem Neustart protokolliert das System nun die häufigsten Protokolleinträge bei
/var/tmp/log
und synchronisiert sie alle 3 Stunden und vor dem Herunterfahren wieder.Wir können
iotop
wieder verwenden, um eine deutlich reduzierte Schreibaktivität zu finden. Wir sollten uns jedoch keine Sorgen machen, dass die grüne ACT-LED blinkt . Anscheinend ist dies keine gute Anzeige für den Schreibzugriff.quelle
man journald.conf
und notieren Sie esStorage=volatile
usw. Dann deaktivieren Sie einfach rsyslog (es wird jetzt sowieso von journald gespeist) und presto, RAM-basierte Protokollierung mit vielen Schnickschnack und Anpassungsoptionen. Ohne viel Aufhebens.man journalctl
. Wie ich schon sagte, ich bin ein altmodischer Syslog-Typ, aber ich merke, dass es einen-s --since
Schalter gibt; Dann müssen Sie es nur noch dazu bringen, es auf eine Weise zu sichern, die für die Umleitung in eine Datei geeignet ist (dies ist möglicherweise nicht standardmäßig der Fall ... wenn Sie ein wenig herumspielen, erhalten Sie das Bild).Um dies zu umgehen, installiere ich mein Stammverzeichnis auf einem USB-Stick anstelle der SD-Karte. Ich benutze die SD-Karte nur zum Booten.
Auf diese Weise muss ich mir keine Gedanken über das Schreiben auf meine SD-Karte machen.
Ich benutze Berryboot, um dies zu erreichen.
quelle
Um die Schreibvorgänge für Protokolldateien auf dem RPi zu reduzieren, können Sie einen zentralen Protokollserver mit rsyslog einrichten. Wenn Sie die Einträge behalten möchten, senden Sie die Nachrichten einfach an den Remote-Protokollserver, andernfalls an / dev / null.
quelle
Anstatt die Datei rsyslog.conf zu bearbeiten, können Sie den Dienst einfach beenden, wenn Sie alle Protokolle entfernen möchten.
Dann können Sie es beim Booten deaktivieren:
um es beim Booten wieder zu aktivieren:
quelle
sudo
. Wenn Sie verwendensystemctl
, sollten Sie es auch verwenden, um einen Dienst mit zu stoppensudo systemctl stop rsyslog.service
.