SMART-Tool als 3rd-party-apps

Status
Für weitere Antworten geschlossen.

DSL-Hexe

Benutzer
Mitglied seit
01. Apr 2008
Beiträge
692
Punkte für Reaktionen
4
Punkte
44
Ich bekomm das nicht zum laufen habe bei tps folgende Fehlermeldung am Schluss:

Code:
awk: cmd. line:1: Division by zero

Brauche weitere Hilfe

und wo muss das hin?

Code:
/opt/bin/tps >/dev/null
 
Zuletzt bearbeitet:

dathen

Benutzer
Mitglied seit
29. Mai 2007
Beiträge
65
Punkte für Reaktionen
0
Punkte
0
Hi DSL-Hexe!

Ich bekomm das nicht zum laufen habe bei tps folgende Fehlermeldung am Schluss:

Code:
awk: cmd. line:1: Division by zero

Brauche weitere Hilfe

und wo muss das hin?

Code:
/opt/bin/tps >/dev/null

Ich hatte das gleiche Problem. Ich habe allerdings mehrere Änderungen vorgenommen, welche von ihnen nun zur Lösung des Problems beigetragen hat, kann ich aber nur erahnen. Zunächst schien mein akw nicht sauber zu funktionieren, was ich darauf zurückführe, dass ich awk damals wohl nicht von der offiziellen Quelle bezogen habe. Ich hab daher einfach nochmal ein 'ipkg install gawk' durchgeführt. Als Quellen habe ich in der /opt/etc/ipkg.conf folgende Server eingetragen:


Weiterhin ging mein tps davon aus, dass meine Platten unter /dev/hd* liegen, bei der CS407 liegen sie aber unter /dev/sd*. Ausserdem funktioniert der smartctl bei meiner CS407 nur mit der Option "-d marvell". zuletzt fehlte noch ein "/dev/" im Aufruf von smartctl. Ich habe daher die entsprechenden Zeilen in /bin/tps abgeändert (zum besseren Verständnis entsprechend farbig hervorgehoben):

#=================================================================================================
# Releve la temperature des disques
#=================================================================================================
#
cd /dev
nbrdisk=0
for bo in `/bin/ls sd?`
do
t=`/opt/sbin/smartctl -d marvell -iAH /dev/$bo | grep "Temperature_Celsius" | awk '{print $10}'`
if test "$t" != ""
then
h=`/opt/sbin/smartctl -d marvell -iAH /dev/$bo | grep "Power_On_Hours" | awk '{print $10}'`
nbrdisk=`expr $nbrdisk + 1`
temp=$temp" "$t
dure=$dure" disk"$nbrdisk"= "$h" "
fi
done

Das "/opt/bin/tps >/dev/null" mußt Du in Zeile 2 der Datei "/usr/syno/synoman/phpsrc/diskhealth/diskhealth.cgi" schreiben (komplette Zeile ersetzen). Dort ggf. auch noch die weiteren Zeilen an Deine Bedürfnisse anpassen, sieht bei mir so aus:

<hr><h3>/dev/sda</h3>
<pre>$(/opt/sbin/smartctl -d marvell -iAH /dev/sda|sed '1,3d')</pre>

Ich hoffe, das hilft Dir, DSL-Hexe!

@itari: Mit diesen Anpassungen bekomme ich zwar nun die aktuellen SMART-Infos als Text angezeigt, aber irgendwie scheitert tps bzw. rrdtool noch an der Erzeugung des Diagramms. rrdtool wird gestartet, aber unter top kann man sehen, dass es die CPU voll auslastet (90% +/- 5% CPU Usage). Irgendeine Idee? tps ist mit "tps start" eingeschaltet...

Schöne Grüße, dathen
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
danke dathen,

besser hätte ich es auch nicht erklären können. In der Tat muss man bei smartctl (wohl bei den meisten DS-Typen???) den Parameter -d marvell einfügen. Der ursprüngliche awk scheint es zu tun - muss man wohl nicht verändern.

Also im /opt/sbin/tps ändern:

Rich (BBCode):
#=============================================================================================
# Releve la temperature des disques
#=============================================================================================
#
cd /dev
nbrdisk=0
for bo in `/bin/ls hd?`
do
t=`/opt/sbin/smartctl -d marvell -A $bo | grep "Temperature_Celsius" | awk '{print $10}'`
 if test "$t" != ""
 then
 h=`/opt/sbin/smartctl -d marvell -A $bo | grep "Power_On_Hours" | awk '{print $10}'`

Also mehr musste ich nicht machen, damit das tps läuft.
 

DSL-Hexe

Benutzer
Mitglied seit
01. Apr 2008
Beiträge
692
Punkte für Reaktionen
4
Punkte
44
Da tps bei mir laut Anleitung gearbeitet habe nicht in /opt/bin liegt sondern in /bin müsste dann nicht diese Zeile "/opt/bin/tps >/dev/null" nicht so lauten "/bin/tps >/dev/null"??

tps läuft jetzt ohne Fehlermeldung. Danke dathen.:)
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Da tps bei mir laut Anleitung gearbeitet habe nicht in /opt/bin liegt sondern in /bin müsste dann nicht diese Zeile "/opt/bin/tps >/dev/null" nicht so lauten "/bin/tps >/dev/null"??

ja klar :)

Tipp: Kopier die Datei tps wieder nach /opt/bin und ändere die Pfade ab, sonst ist sie möglicherweise nach dem nächsten Firmware-Update weg ;)
 

DSL-Hexe

Benutzer
Mitglied seit
01. Apr 2008
Beiträge
692
Punkte für Reaktionen
4
Punkte
44
Die Fehlermeldung ist jetzt weg von tps jetzt wird kein Bild erzeugt in /volume1/web auch steht nichts in /etc/tps.conf
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Hast umkopiert? Dann mach die Konfiguration noch mal: tps config (eventuell /opt/bin/tps config) ;)
 

DSL-Hexe

Benutzer
Mitglied seit
01. Apr 2008
Beiträge
692
Punkte für Reaktionen
4
Punkte
44
Auch dann nicht tps.conf bleibt leer und es wird kein Bild erzeugt.

Ok OK

habe jetzt in /etc die files tps.conf, tps.log und tps.rrd gelöscht und jetzt funktioniert es.

Aber warum wird nur die Temperatur von 1 Festplatte angezeigt?

Die Daten werden aber von beiden Festplatten angezeigt.
 
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
@hexe, schön das es jetzt läuft :)
 

DSL-Hexe

Benutzer
Mitglied seit
01. Apr 2008
Beiträge
692
Punkte für Reaktionen
4
Punkte
44
Ja Danke für die Hilfe.

Wie bekomme ich hin das beide Platten angezeigt werden?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
@hexe,

im tps-Skript wird ein Mittelwert über alle Platten errechnet.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
hab gerade eine Page gefunden, in der ganz gut erklärt wird, was die SMART-Werte im Einzelnen bedeuten.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
@hexe,

hab noch mal in das tps-Skript reingeschaut. Die verschiedenen Disk-Temperaturen kann man anzeigen und auch nur die aktuellen Werte, allerdings nicht grafisch - dazu hab ich im Moment keinen Bock.

Editor und tps-Datei aufgemacht.

Zuerst mal alle CS-406 - Text gegen zum Beispiel "DS207+" ersetzen (also gegen den Wert der bei dir auch in der /etc/synoinfo.conf steht.

Dann die Zeile 223 bearbeiten:

dure=$dure" disk"$nbrdisk"= "$h"h/"$t"? "

Dann die Zeilen 290 und folgende ändern in:

GPRINT:deltad:AVERAGE:"Max Diff. %2.1lf?" \
COMMENT:"\n" \
COMMENT:" \n" \
COMMENT:"Time-Counter/Temp $dure"
#


Und schon sieht es so aus:
 

Anhänge

  • diskhealth.jpg
    diskhealth.jpg
    32,6 KB · Aufrufe: 178

dathen

Benutzer
Mitglied seit
29. Mai 2007
Beiträge
65
Punkte für Reaktionen
0
Punkte
0
Hi itari,

hast Du evtl. noch einen Tip, weshalb bei mir kein Diagramm angezeigt wird? Ich habe es auch nochmal versucht mit tps.rrd löschen, hab sie mittels touch auch neu angelegt, habe testweise allen Usern Schreibrechte erteilt (tps hat die Datenbank dann auch mit dem nächsten Aufruf neu initialisiert). Aber ein Diagramm wird bei mir immer noch nicht angezeigt. Ein Blick in /tmp/ (dort soll das Diagramm abgelegt werden) ergibt: kein Bild vorhanden. rrdtool läuft sich scheinbar zu Tode (zumindest wird ein entsprechender Prozess in top angezeigt, der Prozess verleibt sich ca. 90-95% CPU-Usage ein).

Was die Handhabung der Messwerte durch tps betrifft, so halte ich diese Mittelwertberechnung für suboptimal. Mag sein, dass in einer CS sowieso alle Platten übereinander hängen und damit alle ungefähr die gleichen Temperaturen abkriegen. Aber das muss ggf. auch nicht sein (wenn man tps auf andere Systeme anwendet, wo nicht alle Platten zusammen in einem Plattenkäfig hängen). Außerdem stelle ich mir noch das Szenario vor, die SMART-Werte einer über USB angeschlossenen Platte auszulesen, da wären die Temperaturverhältnisse definitiv unterschiedlich und sollten auch getrennt dargestellt werden. Also wenn sich da nochmal jemand dran machen würde... ;)

In diesem Zusammenhang: Wißt Ihr, ob sich die SMART-Werte auch von USB-Platten auslesen lassen? Die Platte in meinem USB-Gehäuse ist das gleiche Modell, wie in meiner CS (siehe Sig.), insofern müßte sie zumindest an sich erstmal SMART unterstützen. Mal sehen, werde ich vielleicht heute Abend mal ausprobieren und hier berichten.

Gruß, dathen
 

DSL-Hexe

Benutzer
Mitglied seit
01. Apr 2008
Beiträge
692
Punkte für Reaktionen
4
Punkte
44
Ich habe es auch nochmal versucht mit tps.rrd löschen, hab sie mittels touch auch neu angelegt,

Diese Datei nicht neu anlegen!! Diese Datei wird von tps selbst angelegt.

TPS stoppen
Code:
/opt/bin/tps stop

in /etc die files tps.conf, tps.log und tps.rrd löschen

Code:
rm /etc/tps.conf
rm /etc/tps.log
rm /etc/tps.rrd

Die gelöschten Dateien werden von tps selbst wieder hergestellt. TPS starten:
Code:
/opt/bin/tps
es kommen die Config Abfragen
Code:
/opt/bin/tps
tps.rrd wird erstellt
Code:
/opt/bin/tps
Grafik wird erzeugt

So ging das bei mir.


Danke Itari für deine Hilfe. :)
 
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
@dathen,

wenn der Tipp vom Hexchen nicht schon geholfen hat, dann fällt mit nur ein, die tps config noch mal zu machen.

USB geht net - sATA geht!

Ansonsten sind die Entwickler von tps glaub ich Franzosen (oder Belgier oder doch Schweizer? - wer hats erfunden? :D) Da kann dich ja mal beschweren. Ich glaube auch, der Schwerpunkt liegt eher auf dem Mail-Teil. Die hatten halt das Problem, überdurchschnittliche Temperaturwerte wahrzunehmen, deshalb haben sie halt Mittelwerte gebildet :D. Aber das tps-PHP-Skript ist ja nicht allzu komplex, da kann sich ja mal jemand dran üben, die Werte für Platten einzeln darzustellen. Ich komm da leider in den nächsten beiden Wochen nicht zu.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Anmerkung zu tps:

tps schreibt alle 5 Minuten die Temperatur in eine Datei, um später die grafische Darstellung daraus zu berechen. Diese Aktivität verhindert den Spin-down der Platten (hibernation)!
 

dathen

Benutzer
Mitglied seit
29. Mai 2007
Beiträge
65
Punkte für Reaktionen
0
Punkte
0
Hallo Hexe und itary,

ich komme hier keinen Schritt weiter. :( Ich bin der Beschreibung von Hexe genau gefolgt, aber das Ergebnis ist das gleiche (zumal es zwischendurch Probleme beim Erzeugen der /etc/tps.conf gab; erst nachdem ich in /etc/ Schreibrechte für alle erzeugt habe, war die tps.conf überhaupt mal mit Inhalt befüllt [angelegt wurde die Datei auch vorher, aber eben leer] *wunder*). :(

Die tps.conf ist nun also (wieder) befüllt, die tps.log ist leer und die tps.rrd initialisiert. rrdtool hingegen spielt immer noch CPU-Zeit-Fresser, bremst die CS aus, ohne auch nur die geringste Anstalt zu machen, ein Diagramm zu erzeugen. Ich hab rddtool auch nochmal neu installiert (ipkg remove rddtool; ipkg install rddtool) - keine Änderung. :(

Was über USB angeschlossene Platten betrifft, hast Du scheinbar Recht, itari: smartctl kommt damit nicht zurecht. Schade, aber jetzt auch nicht das große Drama...

Und bevor ich mich daran mache, tps grundlegend zu überarbeiten, will ich das kleine Monster erstmal zum Laufen kriegen... ;)

Also falls Ihr noch Ideen habt...

Gruß, dathen
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
hi dathen,

also ich habe keine wirklichen Installationsprobleme damit gehabt. *glück* Kannst denn mit dem smartcrl die Wärmedaten der Platten auslesen? Den Befehl musst dann auch so ins tps-Skript übernehmen, sonst kann er ja keine Daten sammeln.

Ich experimentiere gerade damit herum, eine Version zu härten, die den spin-down nicht provoziert. Ansatz: beim Systemstart werden alles Teile (tps + tps-files + smartctl ins Verzeichnis /tmp (tempfs gleich RAM) kopiert und zur Laufzeit wird auch nur dort was gelesen und geschrieben. Damit braucht man also keine Plattenaktivitätsauslösung mehr befürchten. Immer bevor die Grafik erzeugt werden soll, wird eine Kopie der tps-Daten in einen Plattenbereich gemacht; das ist ja nicht schlimm, weil die Grafik eh nur mit Plattenaktivitäten einhergeht. Das Skript in der crontab kann man ersetzen durch was ganz kleines, wie das hier zum Beispiel:

Rich (BBCode):
[ -f /tmp/smartctl ] || cp /opt/sbin/smartctl /tmp/smartctl
[ -f /tmp/rrdtool  ] || cp /opt/bin/rrdtool /tmp/rrdtool
[ -f /tmp/tps.rrd  ] || cp /etc/tps.rrd /tmp/tps.rrd
T1=$(/tmp/smartctl -d marvell -A /dev/hda | grep "Temperature_Celsius" | awk '{print $10}')
T2=$(/tmp/smartctl -d marvell -A /dev/hdb | grep "Temperature_Celsius" | awk '{print $10}')
/tmp/rrdtool update /tmp/tps.rrd N:$T1:$T2

Vielleicht erahnst du schon, wohin bei mir der Hase läuft. Ich versuche die Temperaturen für jedes der beiden Laufwerk separat auszuzeichnen um nachher pro Laufwerk ein Grafik zu haben.

Die Bildchen lasse ich auch in die /tmp hinein generieren, dann sind sie beim Anzeigen wie der Blitz da.

Im Moment muss ich noch ein wenig Erfahrung sammeln, weil ich noch zu wenig Daten aufgezeichnet habe... aber ich denke bis zum Wochenende wird es reif werden.

Zu sehen sind auch schon die spin-downs der Platten an den kleinen Temperatureinbrüchen in der Grafik.

Schon mal so als Vorgeschmack, wie es bei mir aussieht:
 

Anhänge

  • diskhealth2.jpg
    diskhealth2.jpg
    59 KB · Aufrufe: 164

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Das tps-Skript (egal in welcher Form), welches in der crontab steht, unterbricht bei seiner Ausführung den spin-down-Zustand (hibernate) der Platten!

Bei genauer Analyse habe ich festgestellt, dass der crond in der vorliegenden Implementation (es gibt auch andere cronds) auf Grund des 6. Feldes (Benutzer unter dem dann das 7. Feld ausgeführt wird) jedesmal in die Benutzerdatei (/etc/passwd) schaut, um sich die Benutzer-ID herauszuholen (einfach mal auf der Kommandozeile id eingeben). Dieses Herauslesen unterbricht den spin-down-Zustand leider.

Das heißt,
(1) entweder man stoppt das Skript für die Zeiten, in denen man gerne den Ruhemodus haben möchte oder
(2) nimmt in Kauf, dass die Platten immer 5 Minuten nach Erreichen des Ruhezustands wieder aufgeweckt werden oder
(3) muss eine andere Lösung ohne crontab-Eintrag dafür suchen

Ich denke nur (3) ist sinnvoll. Ich werden das SMART-Werte-Auslesen mal mit einem Skript lösen, dass nicht vom crond gesteuert wird und melde mich hier wieder, wenn es geht ;)
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat