Linux-Systeme protokollieren gesprächig alle Dienste und Serverprozesse. Der Kernel hat eine Logdatei, der SSH- und Webserver sowieso. Einige Programme schreiben auf eigene Faust Logs, um Standardkomponenten und etablierte Dienste kümmert sich das Syslog-Protokoll. Es handelt sich um eine interne Schnittstelle als Unix-Socket, an die laufende Prozesse, zumeist Serverprozesse, ihre Informationen senden können. Die eigentliche Protokollierung in Logs erledigen dann auf aktuellen Systemen die Systemd-Komponenten Journald und auch noch das traditionelle Rsyslog, das lesbare Logdateien im Textformat pflegt.
Serverprozesse: Logs schlafen nicht

Die aufgezeichneten Daten landen zur Langzeitspeicherung in Form von Logdateien im Verzeichnisses „/var/log“, die in kurzen Zyklen geschrieben werden, damit nichts verloren geht. Wie umfangreich die so geschriebenen Daten sind, ist von der Auslastung des Systems und von der Menge der laufenden Serverprozesse abhängig. Auf einem gut besuchten Webserver können diese Logs um einige hundert Kilobyte pro Minute wachsen. Kontrollieren lässt sich dies mit dem Systemmonitor iotop in der Kommandozeile: Nach dessen Installation über den Standard-Paketmanager über das gleichnamige Paket und dem Aufruf mit
sudo iotop
zeigt die tabellarische Liste der Prozesse mit I/O-Operationen über einen Druck auf „A“ die akkumulierten, geschriebenen Datenmengen an, während dieser Systemmonitor läuft. Diese Schreibzyklen erweisen sich als Manko auf Ein-Platinen-Rechnern wie dem Raspberry Pi, der seine Systempartition üblicherweise auf einer SD-Karte hat: Schreibaktionen sind bei der vergleichsweise schlechten I/O-Leistung von Flashspeichermedien wie SD-Karten generell langsam. Die permanente Art des Loggings ist zudem der Haltbarkeit des eher empfindlichen Flashspeichers von SD-Karten abträglich. Abhilfe schafft die handliche, Script-basierte Lösung Log2Ram , die das Verzeichnis „/var/log“ beim Systemstart in eine Ramdisk verlagert und während des Betriebs in größeren zeitlichen Abständen auf den langsamen Datenträger synchronisiert. Es handelt sich also um einen Puffer im RAM, der rund 40 MB Arbeitsspeicher kostet – eine Investition, die selbst ein Raspberry Pi Zero gut verkraftet.
Lesetipp: Raspberry Pi 4 als Desktop: Alltagstauglich oder nicht?
Log2Ram: Einrichtung und Start

Generell eignet sich Log2Ram für alle Linux-Systeme mit dem Init-System Systemd, also nicht nur für das offizielle Raspberry- Pi-OS, sondern auch für Ubuntu und andere Linux-Distributionen für Platinenrechner. Nicht notwendig ist Log2Ram beim Minimal-Linux Diet Pi , das mit Ramlog von Haus aus eine Logverwaltung für den Arbeitsspeicher mitbringt. Zur Installation auf dem Raspberry Pi sind die Programme git sowie das Backupwerkzeug rsync aus den Standard-Paketquellen Voraussetzung. Auf Raspberry-Pi-OS und allen Debian-Derivaten installiert beides der Befehl
sudo apt install rsync git
und anschließend holt
git clone https://github.com/azlux/log2ram.git
alle Dateien aus dem Github-Repository des Entwicklers in das lokale Verzeichnis „log2ram“. Das dort hinterlegte Installations-Script ruft dann die Eingabe
cd log2ram
sudo ./install.sh
auf. Das Script erstellt die Systemd-Dienste, einen Systemd-Timer für den Schreibzyklus der Logdateien auf den physischen Datenträger und eine Konfigurationsdatei unter „/etc/log2ram.conf“. Danach ist ein Reboot nötig, um Log2Ram zu aktivieren. Nach dem Boot überprüft die Eingabe von
sudo systemctl status log2ram
den korrekten Start von Log2Ram und
df -h
zeigt die Größe sowie den Grad der Auslastung der angelegten Ramdisk namens „log2ram“ an (standardmäßig 40 MB). Ab jetzt arbeitet Log2Ram selbständig und automatisch im Hintergrund. Eine Änderung der Konfiguration ist nur nötig, wenn der Dienst nicht startet oder die Ramdisk zu klein bemessen ist.
Feineinstellungen und Fehlerbehebung

Die Vorgaben von Log2Ram sind für frisch aufgesetzte Raspberry-Pi-Systeme ideal, nicht aber für Serversysteme, die schon länger laufen oder eine hohe Zahl von Serverdiensten beherbergen, sodass die Menge der Logdateien über den eingerichteten 40 MB der Ramdisk liegt. In diesen Szenarien erwartet die Konfiguration von Log2Ram Nacharbeiten und eine Aufräumaktion im Verzeichnis „/var/log“, um die dort gespeicherte Datenmenge in Form existierender Logdateien zu reduzieren.
Ramdisk zu klein? Sollte Log2Ram nicht starten, so zeigt der Befehl
sudo journalctl -t log2ram
den Grund dafür an. Häufig lautet die angezeigte Fehlermeldung „RAM disk for /var/hdd.log/too small“, die schlicht darauf hinweist, dass beim Start des Dienstes die Logfiles aus „/var/log“ nicht in die Ramdisk passen. In diesem Fall empfiehlt es sich, in diesem Verzeichnis aufzuräumen und alte Logfiles zu löschen. Wenn hier Hunderte MB an alten Logs liegen, die niemanden mehr interessieren, so ist das kein gut genutzter Platz. Generell kümmert sich auf den meisten Systemen der Dienst „Logrotate“ um die Logfileverwaltung und archiviert ältere Logs in „Gzip“-gepackte Archive mit der Endung „.log.[Nummer].gz“. Diese älteren Archivdateien kann man auf einem heimischen Server getrost löschen, denn der Erkenntnisgewinn durch die Analyse der alten Daten ist gering. Den aktuellen Platzbedarf der Dateien in diesem Verzeichnis zeigt das Kommando
sudo du -h /var/log
an.
Größere Ramdisk: Sollen mehr Daten auf die Ramdisk passen, so gibt es zwei Möglichkeiten, die Größe über die Konfigurationsdatei „/etc/log2ram.conf“ anzupassen, die mit root-Privilegien oder mittels sudo in einen Texteditor wie Nano geladen wird. Nach den ersten zehn Zeilen Dokumentation legt dort der Wert
SIZE=40M
den Umfang von 40 MB fest. Eine Änderung des Werts und ein Reboot können die Größe der Ramdisk auf den gewünschten Wert ändern. Besonders attraktiv ist das Anlegen einer gepackten Ramdisk, zumal Logdateien gut komprimierbar sind. Diese Einstellung eignet sich ab dem Raspberry Pi 2 , weil sie etwas mehr Rechenleistung verlangt. Zum Einschalten der Kompression mittels des Algorithmus LZ4 ist gegen Ende der Konfigurationsdatei nur die Änderung der Zeile „ZL2R=false“ nach
ZL2R=true
nötig. Dies vergrößert die Kapazität der Ramdisk auf 100 MB, ohne mehr physisches RAM zu belegen.