FHEM Logs und Backup auf NAS

Begonnen von Matthias1912, 31 März 2018, 01:32:27

Vorheriges Thema - Nächstes Thema

Matthias1912

Hallo Leute,

ich hab mir mal gedacht, dass ich mein funktionierenden FHEM System auf dem Pi3 unter Debian Stretch so umbaue, dass die Logs und Backup Dateien nicht mehr auf der SD Karte gespeichert werden sondern direkt auf der NAS abgelegt werden.

Mit diesem Vorhaben fingen meine Probleme an.

Das System funktioniert eigentlich super, aber ich habe das Problem wenn ich den Pi neustarten muss bzw. ein Stromausfall war, der in letzter Zeit irgendwie häufig in meiner Region war, das das FHEM nicht mehr automatisch startet. Den Fehler hierfür vermute ich im Mounten der Netzwerkordner,  denn ich kann FHEM per SSH über

sudo /etc/init.d/fhem start

starten. Somit glaube ich, dass der Start von FHEM früher passiert, als die gemounteten Netzlaufwerke zur Verfügung stehen.

Folgendes habe ich gemacht:

1) Alle Device Logs werden jetzt auf /opt/fhem_log geschrieben (entsprechende Nutzerrechte wurden gesetzt)
2) Alle Backups werden auf /opt/fhem_backup geschrieben geschrieben (entsprechende Nutzerrechte wurden gesetzt)

Bis dahin habe ich noch ohne Netzlaufwerke getestet und alles lief (auch der automatische FHEM Start nach dem neustarten des RPI)

3) Als nächstes lasse ich die Netzlaufwerke über /etc/fstab mounten:

//192.168.2.3/FHEM/backup    /opt/fhem_backup    cifs    credentials=/opt/fhem/diskstation,uid=999,gid=20,forceuid,forcegid,auto,x-systemd.automount,_netdev    0    0
//192.168.2.3/FHEM/log    /opt/fhem_log    cifs    credentials=/opt/fhem/diskstation,uid=999,gid=20,forceuid,forcegid,auto,x-systemd.automount,_netdev    0    0


Die Netzlaufwerke funktioneren und ich kann in /opt/fhem_log schreiben. Wenn ich FHEM über SSH starte, dann schreibt es auch fleißig die Logs auf die NAS.

Was habe ich falsch gemacht bzw. was muss ich noch machen, das FHEM erst gestartet wird nachdem die Netzlaufwerke gemountet wurden?

Mfg
Matthias

Dr. Boris Neubert

Hallo,

Du musst sicherstellen, dass FHEM nach dem Mounten der Dateisysteme gestartet wird, indem Du die Startreihenfolge entsprechend setzt. GGf. hilft Dir dieses Thema dabei.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Matthias1912

Hi, danke für die Antwort.
Konnte leider erst jetzt Antworten.

Leider hilft mir deine Antwort nicht ganz weiter. Wenn ich das richtig verstanden habe, dann muss ich die Startskripte von Runlevel 2,3,4,5 sowie das in init.d so anpassen, das vor dem Aufruf
perl fhem.pl fhem.cfg
jeweils eine Prüfung auf die gemounteten Ordner/Laufwerke erfolgen muss. Nur wie prüfe ich das? Gibt es da nen Wait Befehl für? Wie ist das mit den Startskripten, werden die "parallel" ausgeführt oder kann ich das OS bei Fehlern zum Hängen / komplett abschießen bringen?

Wie sieht es eigentlich mit dem Wechsel zu systemd aus? Wäre das ne Möglichkeit? Gibt es da Abhängigkeiten die ich dafür nutzen kann?

Mfg
Matthias

Wernieman

Neee ... Du must in den Startscripten dafür sorgen, das diese erst NACH dem Netzwermount gestartet werden.

Jetzt ist die Fragten:
Was für ein Startsystem hast Du (init.d oder systemd) und wie mountest Du die Ordner?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Matthias1912

Hi Wernieman,
siehe 1. Post.

Systemstart über init.d
Netzwerkmount über /etc/fstab

Soll ich auf systemd umstellen? Wie stell ich das denn genau ein, das Fhem erst nach dem Netzwerkmount über fstab ausgeführt wird? Ich seh nirgends wann genau fstab abgearbeitet wird.

Wernieman

Habe nur aktuell kein init.d-Screipt von fhem da ... könntest Du mir bitte Deines Posten?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Matthias1912


#!/bin/sh
# description: Start or stop the fhem server
# Added by Alex Peuchert

### BEGIN INIT INFO
# Provides:             fhem.pl
# Required-Start:       $local_fs $remote_fs
# Required-Stop:        $local_fs $remote_fs
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    FHEM server
### END INIT INFO

set -e
cd /opt/fhem
port=7072

if test "$2" != "noaptmark"; then
  apt-mark hold fhem > /dev/null
fi

case "$1" in
'start')

        echo "Starting fhem..."

# if you need to start hmland for use with
# Homematic, please start the hmland daemon
# like this (please use correct path and port,
# depending on your installation!)
#
#       /opt/hmcfgusb/hmland -d -p 1234 -r 0
#

        perl fhem.pl fhem.cfg

# if you want to use configDB for configuration,
# use this command to start fhem:
#
#       perl fhem.pl configDB
#
# and remove/comment the above line including fhem.cfg

        RETVAL=$?
        ;;
'stop')
        echo "Stopping fhem..."

# if you want to stop hmland during fhem stop:
#       pkill hmland

        pkill -U fhem perl
        RETVAL=$?
        ;;
'status')
        cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l`
        if [ "$cnt" -eq "0" ] ; then
                echo "fhem is not running"
        else
                echo "fhem is running"
        fi
        ;;
*)
        echo "Usage: $0 { start | stop | status }"
        RETVAL=1
        ;;
esac
exit $RETVAL


Wernieman

# Required-Start:       $local_fs $remote_fs
Solltest Du anpassen, kann auktuell nur nicht nacgucken.

Alternativ in /etc/rc.5 den Startlink anpassen

Entweder Du nutzt jetzt google, oder bekommst erst Montag Hilfe ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Matthias1912

Hab mal bei google gelesen, aber noch nicht live getestet da ich erst die Richtigkeit bestätigt wissen möchte bevor ich da rumschreibe. Will das System ja nicht gleich abschießen.  ;)

Also die Datei /etc/init.d/fhem wie folgt ändern:

# Required-Start:       $local_fs $remote_fs $network $time


Muss ich noch die Symlink in /etc/rcX.d mit folgenden Befehl anpassen oder macht das das System beim Reboot selber?

update-rc.d fhem defaults


Wäre das so richtig?

Wernieman

Ups ... ist schon etwas her, das ich das letzte mal ein init.d-System unter der Hand hatte...

Ich würde per update-rc.d den Deamon removen und wieder enablen.... das System an sich machst Du damit nicht kaputt.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

koldomon

Du solltest berücksichtigen, dass dein Netzwerk ausfällt, deine NAS kaputt geht oder sonst irgendwelche Umstände eintreten. Das sollte dann nicht zum Ausfall einer FHEM führen.

Ich hab mich mit dem Problem auch auseinandergesetzt und bin bei folgender Lösung gelandet: Log-Files auf FHEM-Server (Bei mir ein Odroid C1) belassen, aber regelmäßig archivieren. hab mir dazu ein Tool (siehe der Thread unter "Sonstiges") geschrieben, dass die Log-Files auf eine NAS archiviert. Mein Odroid ist mit einer "Powerbank" als USV erstmal halbwegs ausfallsicher.

Das Problem, dass die Schreibzugriffe die Lebensdauer deiner SD-Karte negativ beeinflussen, habe ich bei mir so gelöst, dass ich die commit-time hochgesetzt habe. Durch meine "Spar"-USV kann ich das machen.

cu markus
OdroidC1 -> fhem
CUNO -> FS20
CUL -> HomeMatic
TCM310 -> enOcean
DUOFERN -> rademacher

mark79

Um die Schreibzugriffe zu minimieren und die SD-Karte zu schonen kann ich das hier empfehlen:
https://github.com/azlux/log2ram

Habe das schon seid einigen Monaten auf meinen RPi laufen. Das erzeugt für /var/log eine Ramdisk und die Daten werden nur noch stündig (einstellbar) auf die SD Karte geschrieben.
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

Wernieman

Wobei man das nur machen soll, wenn man gegug RAM frei hat ..... und FHEm mit z.B. vielen presend per ping kann einiges an Speicher brauchen, was der PI wenig hat ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html