NEWS
[gelöst] das leidige Thema "Stromausfall"
-
Ggf. könnte für solche fälle die JSONL-Datenbankvariante interessant sein, die voraussichtlich in Controller v4 Standard wird:
https://forum.iobroker.net/post/732513Die sollte prinzipbedingt (inkrementelles Schreiben, appendonly) einen Totalverlust verhindern und dabei auch noch die SD-Karte schonen.
-
@homoran sagte: ist 5 Minuten der Standard?
Soweit ich mich erinnere, sind 30 s der Standardwert.
-
@homoran sagte: oder muss der grundsätzlich erst angelegt werden?
Ich denke: Ja. Unter "states":
"states": { "type": "file", "typeComment": "Possible values: 'file' - [port 9000], 'redis' - [port 6379].", "host": "127.0.0.1", "port": 9000, "maxQueue": 1000, "writeFileInterval": 300000, "options": { "auth_pass": null, "retry_max_delay": 5000 },
Die Datei objects.json sollte ohnehin nicht häufig geschrieben werden, wenn man davon ausgeht, dass die Objekte quasi statisch sind (sein sollen).
-
Das Risiko der Beschädigung einer Datei oder gar des ganzen System bei Strom weg ist im speziellen bei sd Karten gegeben, da diese im Gegensatz zu ssd Festplatten keine eigenen kondensatoren haben die noch genug Strom haben um zumindest den Cache noch zu schreiben.
Da bei sd/ssd immer größere Blocks geschrieben werden, die auch mal größer wie eine Datei sein kann ist, wenn das nicht abgeschlossen werden kann, die Datei oder das ganze Datei System hinüber. Manchmal kann das repariert werden aber nicht immer.
Wenn du eine sd Karte gegen eine ssd tauschst dann minimierst du das Risiko noch weiter.Ganz ausschließen kann man das Risiko aber bei keinem Speichermedium. Mit einer usv hat man zumindest aber auch noch genügend Strom um eine ganze applikation und das Betriebssystem ordentlich herunterzufahren.
-
@paul53 sagte:
Die Datei objects.json sollte ohnehin nicht häufig geschrieben werden
aber bei allen Fällen, die @Thomas-Braun und ich in der letzten Zeit in den Fingern hatten war nur (noch) die Objects.db hin.
-
@homoran sagte in das leidige Thema "Stromausfall":
war nur (noch) die Objects.db hin.
Dann sollte auch unter "objects" ein ausreichend großer Wert ergänzt werden.
"objects": { "type": "file", "typeComment": "Possible values: 'file' - [port 9001], redis - [port 6379], couch - [port 5984].", "host": "127.0.0.1", "port": 9001, "user": "", "pass": "", "noFileCache": false, "connectTimeout": 2000, "writeFileInterval": 600000, "backup": {
Anschließend ioBroker neu starten.
-
@paul53 Danke!
Vielleicht liegt es aber auch an der Größe der objects.json, die selbst im gepackten Zustand noch gerne im (auch höheren) MB-Bereich liegt
-
@homoran sagte: Vielleicht liegt es aber auch an der Größe der objects.json
Je größer die Datei, desto seltener sollte sie geschrieben werden.
-
@paul53
wenn sie zu groß wird, sollte man auf redis wechseln -
@oliverio sagte: sollte man auf redis wechseln
Redis schreibt in der Standardeinstellung auch alle 5 Minuten.
-
@paul53
ja aber iobroker schreibt ja plumb einfach eine komplette datei was bei größerer Datei dann immer länger dauert.redis kann über direkte datei-operationen nur bestimmte Anteile einer datei anpassen (verwendet die datei sozusagen als eigenes dateisystem) oder es hängt einfach immer nur an und reorganisiert in regelmäßigen abständen dann die daten, wie es datenbanken oft machen. die genaue strategie kenn ich nicht.
-
Hier das gleiche Problem: heute morgen gefühlt 10 Sekunden Stromausfall und der Broker quittiert den Dienst.
pi@raspberrypi:~ $ ls -la /opt/iobroker/iobroker-data/ total 148 drwxrwxr-x+ 7 iobroker iobroker 4096 Jan 5 16:15 . drwxrwxr-x+ 6 iobroker iobroker 4096 Jan 5 15:01 .. drwxrwxr-x+ 2 iobroker iobroker 49152 Jan 5 16:13 backup-objects drwxrwxr-x+ 49 iobroker iobroker 4096 Jan 3 06:54 files drwxrwxr-x+ 260 iobroker iobroker 12288 Jan 5 00:08 history -rw-rwxr--+ 1 iobroker iobroker 4345 Apr 23 2021 iobroker.json drwxrwxr-x+ 3 iobroker iobroker 4096 Apr 23 2021 jarvis -rw-rwxr--+ 1 iobroker iobroker 3 Jan 5 14:11 notifications.json -rw-rwxr--+ 1 iobroker iobroker 27105 Jan 5 14:12 objects.json -rw-rwxr--+ 1 iobroker iobroker 18682 Jan 5 14:11 objects.json.bak -rw-rw-r--+ 1 iobroker iobroker 3070 Jan 5 16:15 states.json -rw-rw-r--+ 1 iobroker iobroker 3070 Jan 5 16:14 states.json.bak -rw-rwxr--+ 1 iobroker iobroker 0 Jan 5 08:00 states.json.broken drwxrwxr-x+ 3 iobroker iobroker 4096 Apr 23 2021 tmp pi@raspberrypi:~ $
Iobroker fix bringt nichts
Auch das fix-Skript bringt nichts.
Wie kann ich eine komplette Neuinstallation umgehen? Und wenn das nicht geht, wie deinstalliere ich vorher sauber? -
@christian-wöhrle sagte: Wie kann ich eine komplette Neuinstallation umgehen?
Im Ordner backup-objects befinden sich Backups von objects.json und states.json von vor dem Stromausfall. Vor dem Rückspielen ioBroker stoppen!
-
-
@christian-wöhrle sagte in das leidige Thema "Stromausfall":
Iobroker fix bringt nichts
Auch das fix-Skript bringt nichts.wie sollte das auch?
diese beiden korrigieren die kaputtgespielten Rechteaber keine defekten Dateien.
Und wenn du schon schreibst@christian-wöhrle sagte in das leidige Thema "Stromausfall":
das gleiche Problem:
dann solltest du dir auch die bisher besprochene gleiche Lösung aus dem ersten Post ansehen!
@heimweh sagte in das leidige Thema "Stromausfall":
Cannot find view "system" for search "host" heißt es dann und ich habe das System immer mit dieser Vorgehensweise (siehe link) wieder zum laufen gekriegt.
Link Text -
Öhm, ich habe mir auch gerade mal in der
/opt/iobroker/iobroker-data/iobroker.json
den "writeFileInterval" angesehen. Und der steht bei mir auf 5000 - was dann alle 5 Sekunden bedeutet?
Mein ioBroker liegt auf einer NVMe, sollte an sich kein Problem sein ... Ich kann mich nicht entsinnen jemals in der Datei etwas eingestellt zu haben.Also höher setzen?
-
@bananajoe sagte: "writeFileInterval" angesehen. Und der steht bei mir auf 5000 - was dann alle 5 Sekunden bedeutet?
Das ist wohl der Standardwert für die objects.json.
-
@paul53 sagte:
Das ist wohl der Standardwert für die objects.json.
Ich habe gerade nach dem Post von @BananaJoe in allen meinen Installationen nachgesehen.
Entweder sehe ich da falsch nach, oder da steht nichts drin.Selbst eine Suche nach write brachte keine Ergebnisse
-
@homoran sagte: Entweder sehe ich da falsch nach, oder da steht nichts drin.
Das hängt wohl mit dem Zeitpunkt der Installation zusammen. Deine ist sicherlich älter. Die Datei wird bei einem Update nicht überschrieben, was bei einer Konfiguration auch kontraproduktiv wäre. Bei mir waren die Einträge auch nicht vorhanden.
-
@thomas-braun Danke, das hat funktioniert! Muss ich mir wohl gleich anpinnen