Mein openHAB Server schreibt nun minütlich Daten auf die SD-Karte vom Embedded Board. Das kann nicht gesund sein. Tatsächlich hab ich schon erste Blockfehler. Irgendwann des Nachts konnte nicht mehr in die rr4dj geschrieben werden, weil irgendwie auf einmal nur noch read only war (mount sagte mir das Gegenteil). Ich denke, es wäre besser die zyklischen Daten in eine Ramdisk zu schreiben. Nun bin ich sicher nicht der erste dem das auffällt. Gibts dafür schon eine Standard-Lösung? Welche Verzeichnisse muss man auf die Ramdisk mounten (außer /opt/openhab/etc/rrd4j) ? Mir ist noch das /opt/openhab/logs Verzeichnis aufgefallen... Allerdings sollte man zum Schutz vor Datenausfall natürlich ab und an (cron-job) die enstandenen Daten auf die SD-Karte sichern. Cronjob? Wie macht ihr das? Zusatzfrage: Da einige Daten nicht in die Datenbank gelangten, kann man eigentlich aus dem openhab.log irgendwie noch Daten extrahieren (lassen)?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Nutzung einer RAMDISK um SD-Karte zu schonen
Einklappen
X
-
Eine SD-Karte in einem embedded-Rechner gehört nicht regelmäßig beschrieben. Egal ob direkt mit rrdj4 (damit schrottet man sie ziemlich schnell, wie du gemerkt hast) oder 'nur' einmal pro Stunde oder Tag (dann dauert das Schrotten lediglich etwas länger).
Irgendwas mit SD-Karte hat bei mir /var/log von vornherein als RAM-Disk. Außerdem boote ich mit systemd und "Storage=volatile" in der journald.conf, aber das ist optional.
Die ganzen persist-Werte schicke ich via MQTT an einen rabbitmq-Broker. Da lauscht ein Pythonskript, das die Daten aufbereitet (also zB das Intervall zwischen ON und OFF berechnet, damit ich die Brenndauer meiner Lampen mitloggen kann) und u.A. an einen rrdcached weiterreicht. Der schreibt RRD-Dateien, und zwar auf eine stinknormale 2.5"-Festplatte (klein wegen Stromverbrauch) (bzw. deren zwei, weil RAID-1).
Und auf ein paar dieser RRDs wiederum guckt ein icinga-Monitor, der Alarm schlägt, wenn sie nicht geupdatet werden.DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben
-
Anleitung: openHAB komplett in der RAM-Disk
Wenn regelmäßig kopieren, dann bitte richtig, d.h. mit so wenig schreibenden Zugriffen wie irgend möglich.
Zum Vorbereiten machen wir das:
Code:[ openHAB stinknormal nach /opt installieren ] cd /opt mv openhab real_openhab mkdir openhab mount -t tmpfs none /opt/openhab cp -a /opt/real_openhab/. /opt/openhab
Code:if ! fgrep -qs /opt/openhab /proc/mounts ; then mount -t tmpfs none /opt/openhab cp -a /opt/real_openhab/. /opt/openhab fi
Code:#!/bin/sh rsync -a --inplace /opt/openhab/. /opt/real_openhab/
Code:chmod +x /etc/cron.daily/openhab_sync
Eine solche Lösung hat noch zwei Nachteile. (A) in der RAM-Disk lungern 42 MBytes Java-Binaries rum, die wir da nicht brauchen, weil sie nie geändert werden. (B) Tut nichts gegen die sonstigen Schreibzugriffe in /var/log.
Aber für den Anfang viel besser, als rrd4j auf der SD-Karte rumrödeln zu lassen.DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben
Kommentar
-
Hallo
Nehmt eine Industrie SSD und gut ist.
Sowas wie diese:
Transcend 16GB SDHC Class10 CARD (MLC), TS16GSDHC10M
Gruß NetFritz
KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
Kommentar
-
Zitat von NetFritz Beitrag anzeigenHallo
Nehmt eine Industrie SSD und gut ist.
Sowas wie diese:
Transcend 16GB SDHC Class10 CARD (MLC), TS16GSDHC10M
Gruß NetFritz
SLC-Speicher halten bezogen auf Schreibzugriffe 10x so lang wie MLC-Speicher, nicht umgekehrt.
Kommentar
-
Hallo, ich will die Persistencen und das Logging-Verzeichnis von Openhab auf eine externe USB-HDD legen.
Dann dürfte ja nichts mehr auf die Karte geschrieben werden. Die normalen Linux-Log-Verzeichnisse sind schon auf einer Ramdisk.
Kann mir jemand erklären, wie ich die beiden Openhab-Verzeichnisse ganz einfach auf die USB-HDD umlenken kann?
Kommentar
-
Zwei Möglichkeiten.
* Konfigdatei bzw. Startskript ändern, OPENHAB_LOG_DIR=/ramdisk/openhab/log
* Symlink.
Code:# openHAB anhalten cp -a /opt/openhab/log /ramdisk/openhab/log_im_ram rm -rf /opt/openhab/log ln -s /ramdisk/openhab/log_im_ram /opt/openhab/log # openHAB wieder starten
… alles natürlich auf eigene Verzeichnisstrukturen angepasst …DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben
Kommentar
Kommentar