Speichermedium defekt

Defekte SD-Karte/USB-Stick/...

Ausgangssituation: influxdb wurde beendet bzw. kann nicht mehr gestartet werden.

Folgende Fehlermeldung erhaltet ihr wenn ihr genau dann versucht das Plugin erneut zu installieren bzw. eine neue Version aufzuspielen:

Die log-files unter dem Plugin sind alle grün:

Request startinfluxdb
[COLOR=black][B]INFO:[/B] LoxBerry Version 2.2.1.2 ( is_raspberry.cfg )[/COLOR]
[COLOR=black][B]INFO:[/B] Stats4Lox Version 0.9.7[/COLOR]
[COLOR=black][B]INFO:[/B] Loglevel: 7[/COLOR]
[COLOR=green][B]OK:[/B][/COLOR] Parameters ok - responding with HTTP 200
Request servicestatus
[COLOR=black][B]INFO:[/B] LoxBerry Version 2.2.1.2 ( is_raspberry.cfg )[/COLOR]
[COLOR=black][B]INFO:[/B] Stats4Lox Version 0.9.7[/COLOR]
[COLOR=black][B]INFO:[/B] Loglevel: 7[/COLOR]
[COLOR=green][B]OK:[/B][/COLOR] Parameters ok - responding with HTTP 200

Ursache: Der USB-Stick auf dem sich die Influx-Daten befinden ist nicht mehr gemounted.

Mein USB-Stick war mit ext4 formatiert und konnte nicht mal mehr als read-only gemounted werden.

mount /dev/sda1 /media/usb
mount: /dev/sda1 is write-protected, mounting read-only
mont: cannot mount /dev/sda1 read-only

Ein weiteres Indiz ist wenn ihr in der Konsole diesen Befehl ausführt

su -
sudo -u influxdb -g influxdb /usr/bin/influxd -config /etc/influxdb/influxdb.conf

und eine ähnliche Rückmeldung erhaltet:

loxberry@loxberry:~# su -
root@loxberry:~# sudo -u influxdb -g influxdb /usr/bin/influxd -config /etc/influxdb/influxdb.conf

 8888888           .d888 888                   8888888b.  888888b.
   888            d88P"  888                   888  "Y88b 888  "88b
   888            888    888                   888    888 888  .88P
   888   88888b.  888888 888 888  888 888  888 888    888 8888888K.
   888   888 "88b 888    888 888  888  Y8bd8P' 888    888 888  "Y88b
   888   888  888 888    888 888  888   X88K   888    888 888    888
   888   888  888 888    888 Y88b 888 .d8""8b. 888  .d88P 888   d88P
 8888888 888  888 888    888  "Y88888 888  888 8888888P"  8888888P"

2022-10-30T11:18:33.403219Z     info    InfluxDB starting       {"log_id": "0dr9g4jl000", "version": "1.8.10", "branch": "1.8", "commit": "688e697c51fd"}
2022-10-30T11:18:33.403320Z     info    Go runtime      {"log_id": "0dr9g4jl000", "version": "go1.13.8", "maxprocs": 4}
2022-10-30T11:18:33.506631Z     info    Using data dir  {"log_id": "0dr9g4jl000", "service": "store", "path": "/opt/loxberry/system/storage/usb/Stick8GB/influxdb/data"}
2022-10-30T11:18:33.506801Z     info    Compaction settings     {"log_id": "0dr9g4jl000", "service": "store", "max_concurrent_compactions": 1, "throughput_bytes_per_second": 50331648, "throughput_bytes_per_second_burst": 50331648}
2022-10-30T11:18:33.506890Z     info    Open store (start)      {"log_id": "0dr9g4jl000", "service": "store", "trace_id": "0dr9g58W000", "op_name": "tsdb_open", "op_event": "start"}
2022-10-30T11:18:33.507665Z     error   Unable to open series file      {"log_id": "0dr9g4jl000", "path": "/opt/loxberry/system/storage/usb/Stick8GB/influxdb/data/_internal/_series", "partition": 0, "error": "open /opt/loxberry/system/storage/usb/Stick8GB/influxdb/data/_internal/_series/00/0000: permission denied"}
2022-10-30T11:18:33.507774Z     info    Open store (end)        {"log_id": "0dr9g4jl000", "service": "store", "trace_id": "0dr9g58W000", "op_name": "tsdb_open", "op_event": "end", "op_elapsed": "0.890ms"}
run: open server: open tsdb store: open /opt/loxberry/system/storage/usb/Stick8GB/influxdb/data/_internal/_series/00/0000: permission denied
root@loxberry:~#

Datenrettung:

Meldet euch über die Konsole (z.B. mit Putty) an eurem LoxBerry an. Wenn ihr auch einen anderen Linux-Rechner oder Raspberry zur Verfügung habt, könnt ihr die folgenden Schritte auch von dort ausführen.

Allse folgenden Schritte müssen als Superuser "root" ausgeführt werden. Ihr könnt zu root werden, indem ihr su - gefolgt von dem Root-Passwort eingebt.

Festestellen wie der Stick eingebunden ist:

lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    1  1.9G  0 disk
└─sda1        8:1    1  1.9G  0 part /media/usb/Stick8GB
mmcblk0     179:0    0 14.9G  0 disk
├─mmcblk0p1 179:1    0 41.5M  0 part /boot
└─mmcblk0p2 179:2    0 14.8G  0 part /
zram0       254:0    0  415M  0 disk /opt/loxberry/log/ramlog

Laufwerk mounten auf dem die Daten gesichert werden sollen:

mount -t cifs -o vers=2.0,username=[user],password=[pwd] //[Server]/[Verzeichnis] /media/Sicherung

Fall noch nicht vorhanden sind diese Pakete noch zu installieren

apt install gddrescue
apt install cifs-utils

Image des fehlerhaften USB-Stick erstellen (sicher ist sicher)

ddrescue --sparse /dev/sda1 /media/Sicherung/sda1.img mapfile

Zugriff auf den USB-Stick herstellen:

mount -o ro,noload /dev/sda1 /media/usb

Versuchen die einzelnen Dateien in das Sicherungs-Laufwerk zu überspielen:

rsync -av /media/usb /media/Sicherung/rettung

Alten USB-Stick abmelden:

umount /dev/sda1

Jetzt könnt ihr den alten USB-Stick vernichten.

Daten neu aufspielen

Neuen USB-Stick einstecken, festestellen wie der Stick eingebunden ist:

lsblk

USB-Stick formatieren:

mkfs.ext4 /dev/sda1

Wenn ihr wollt könnt ihr noch ein Label für euren USB-Stick vergeben:

e2label /dev/sda1 "Stick2GB"

USB-Stick mounten:

mkdir -p /media/usb/tempmount
mount -t ext4 /dev/sda1 /media/usb/tempmount

Jetzt könnt ihr die Dateien vom Sicherungslaufwerk wieder auf den USB-Stick kopieren:

cp -ar /media/Sicherung/rettung/usb/influxdb/ /media/usb/tempmount

Dateirechte anpassen:

chown -R influxdb:influxdb /media/usb/tempmount/influxdb/

Oder wenn ihr auf dem LB unterwegs seid:

chown -R influxdb:influxdb /opt/loxberry/system/storage/usb/Stick2GB/influxdb/

USB-Stick abmelden:

umount /dev/sda1

USB-Stick abziehen und am LoxBerry anstecken. Im USB Widget schauen, ob er erkannt wurde und unter welchem Pfad er eingebunden wurde.

Im Plugin unter “Inputs / Outputs” bei “Influx Database Configuration” die Einstellung anpassen (korrekten neuen Pfad eingeben). Nach “Save and Apply” sollte sich der Dienst wieder starten lassen.

Nachdem alle Schritte durchgeführt wurden solltet eure Ausgabe nun so aussehen

loxberry@loxberry:~# su -
root@loxberry:~# sudo -u influxdb -g influxdb /usr/bin/influxd -config /etc/influxdb/influxdb.conf

 8888888           .d888 888                   8888888b.  888888b.
   888            d88P"  888                   888  "Y88b 888  "88b
   888            888    888                   888    888 888  .88P
   888   88888b.  888888 888 888  888 888  888 888    888 8888888K.
   888   888 "88b 888    888 888  888  Y8bd8P' 888    888 888  "Y88b
   888   888  888 888    888 888  888   X88K   888    888 888    888
   888   888  888 888    888 Y88b 888 .d8""8b. 888  .d88P 888   d88P
 8888888 888  888 888    888  "Y88888 888  888 8888888P"  8888888P"

2022-10-30T17:53:25.710729Z     info    InfluxDB starting       {"log_id": "0drWH8oW000", "version": "1.8.10", "branch": "1.8", "commit": "688e697c51fd"}
2022-10-30T17:53:25.711161Z     info    Go runtime      {"log_id": "0drWH8oW000", "version": "go1.13.8", "maxprocs": 4}
run: open server: listen: listen tcp 127.0.0.1:8088: bind: address already in use
root@loxberry:~#

Ich wünsche euch viel Erfolg!