NEWS
UNSOLVED Linux Software RAID status auslesen
-
Hi zusammen,
hat einer von euch zufällig schon mal den mdadm Status-Output geparst?
Würde mir gern ne Telegram Nachricht schicken lassen, wenn eine HDD ein Problem hat..Gruß
-
Folgendes Skript sollte helfen:
createState('javascript.0.Eigene_Datenpunkte.mDBraid.RefNormalState', '', {type: "string"}); createState('javascript.0.Eigene_Datenpunkte.mDBraid.State', '', {type: "string"}); createState('javascript.0.Eigene_Datenpunkte.mDBraid.isNormal', false, {type: "boolean"}); /* UNCOMMENT NEXT LINE ON INIT WITH WORKING RAID-ARRAY */ //exec('cat /sys/block/md*/md/dev-*/state', function (error, stdout, stderr) {setState('javascript.0.Eigene_Datenpunkte.mDBraid.RefNormalState'/*mDBraid RefNormalState*/,stdout);}); function checkRaidState(){ exec('cat /sys/block/md*/md/dev-*/state', function (error, stdout, stderr) { setState('javascript.0.Eigene_Datenpunkte.mDBraid.State'/*mDBraid State*/,stdout); if (stdout == getState('javascript.0.Eigene_Datenpunkte.mDBraid.RefNormalState'/*mDBraid RefNormalState*/).val){ setState('javascript.0.Eigene_Datenpunkte.mDBraid.isNormal',true); log('Raid-State: normal') }else{ setState('javascript.0.Eigene_Datenpunkte.mDBraid.isNormal',false); log('Raid-State: possibly broken') } }); } schedule('*/60 * * * *', checkRaidState);
Das Skript schreibt den normalen Status des MD-Raids als Referenz in einen String-Datenpunkt (Hinweise beachten) und vergleicht jede Stunde den aktuellen Status mit der Referenz. Das Ergebnis wird als Datenpunkt javascript.0.Eigene_Datenpunkte.mDBraid.isNormal gespeichert, auf dessen Änderung man andere Skripte subscriben kann. Steht der Datenpunkt auf true ist alles normal, bei false sollte man nach seinem RAID schauen.
Hinweise:
- exec-Erlaubnis muss in den Einstellung der Javascript-Instanz aktiviert sein
- Vor dem ersten Start sicherstellen, dass das Array in vollständig normalem Zustand ist. Dann Zeile 6 aktivieren, Skript starten, danach unbedingt wieder Zeile 6 auskommentieren und Skript neu starten.
- Der Ausdruck cat /sys/block/md*/md/dev-*/state sollte universell einsetzbar sein, unabhängig vom RAID-Typ und auch wenn man mehrere RAIDs hat. Das Skript würde dann immer prüfen, ob alle ok sind.
- Die Datenpunktnamen kann man natürlich beliebig ändern, dann aber überall im Skript
Viele Grüße
ceram