NEWS
S.M.A.R.T info in iobroker - linux-control
-
bezug: https://forum.iobroker.net/post/570076
hi , danke dir, da wäre ich am ende eh gelandet (linux-control).
bei mir gibt es kein
smartctl -a /dev/nvme0 | grep "Percentage Used:" | sed -e "s/[^0-9]/,/g" -e "s/,,*/,/g" -e "s/^,\|,$//g"
Percentage Used - hast du da etwas besonderes gemacht ?
(Data Units Written habe ich auch nicht)wollte noch fragen, wie du da vorgehst
- habe als erstes datenbank upgedated
- dann einen short test gestartet
smartctl -a /dev/sda | grep "Temperature_Celsius" | awk ' {print $10}'
- habe noch nicht kapiert, ob ich die tests brauche ?
eigentlich habe ich ja ein tool gesucht, dass dies alles sammelt in einer oberfläche vereint - wegen z.b den windows rechnern
aber da kann ich auch in einem batch abfragen und an iobroker senden - muss halt anders angezeigt werden -
@liv-in-sky sagte in S.M.A.R.T info in iobroker - linux-control:
bei mir gibt es kein
smartctl -a /dev/nvme0 | grep "Percentage Used:" | sed -e "s/[^0-9]/,/g" -e "s/,,*/,/g" -e "s/^,\|,$//g"
Percentage Used - hast du da etwas besonderes gemacht ?
(Data Units Written habe ich auch nicht)Das hatte ich ja geschrieben. Du musst schauen welche Werte bei dir geliert werden und dann entsprechend
grep
anpassen. Die Werte sind glaub Hersteller spezifisch. Ich hab eine SSD M.2 von WD am laufen.
Am besten malsmartctl -a /dev/MEINE-PLATTE
ausführen und schauen was er liefert.- habe noch nicht kapiert, ob ich die tests brauche ?
Welche Tests?
-
@scrounger moin
anscheinend kann meine m2 das nicht - kam mir gestern auch noch in den sinn
habe gestern einige videos angeschaut - ist nur müll bei smartctl auf youtube
ich verstehe noch nicht ganz , ob da saktuelle werte sind oder ob smartctl daten sammeln muss (über testläufe) , damit dort was "aktuelles" angezeigt wird
ich muss da noch weitersuchen - selbst wenn das die aktuellen werte sind, habe ich noch keine erklärung gefunden (die ich auch verstanden habe), die mir sagen kann, wann ich wegen der platte was machen soll. bisher weiß ich nur das in dieser zeile:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x0032 100 100 050 Old_age Always - 0
der VALUEimmer größer sein muss als THRESH. oder sollte der wert PASSED auch reichen. bzw. PASSED als alarm trigger zu nutzen
da brauch ich wohl noch mehr zeit für
-
@liv-in-sky sagte in S.M.A.R.T info in iobroker - linux-control:
ich verstehe noch nicht ganz , ob da saktuelle werte sind oder ob smartctl daten sammeln muss
wenn es installiert ist, muss es nicht einfach eingeschaltet/aktiviert werden?
https://www.linux-bibel-oesterreich.at/2020/05/24/s-m-a-r-t-zustand-der-festplatten-ssds-unter-linux-pruefen/
https://www.howtoforge.de/anleitung/den-zustand-der-festplatte-mit-smartmontools-debian-ubuntu-uberprufen/ID – Die ID des Tests ATTRIBUTE_NAME – Der Name des Tests FLAG – Die Kennzeichnung des Tests VALUE – Das Ergebnis des Tests, dieser Wert zeigt den aktuellen Zustand der Platte WORST – Der schlechteste aktuelle Wert des aktuellen Zustandes (jeder Test wird mehrmals durchgeführt) THRESH – Diesen Wert sollte der aktuelle Zustand nicht unterschreiten, um funktionsfähig zu sein TYPE – Erklärung durch welchen Grund die Platte bald ausfallen könnte, “Pre-fail” bedeutet baldiger Ausfall durch hohe Temperatur, “Old-age” – durch normale Abnutzung UPDATED – Die Software arbeitet auch ohne manuellen Start, “Always” zeigt, dass der Test immer durchgeführt wird, “Offline” das dieser nur bei manuellen Starts des Tests durchgeführt werden WHEN_FAILED – Gibt es hier Meldungen sollten Sie die Platte so schnell wie möglich austauschen RAW_VALUE – Gibt je nach Test unterschiedliche Werte aus, bei “Current_Pending_Sector” etwa wie viele Sektoren der Festplatte nicht mehr nutzbar sind
-
@liv-in-sky , @crunchip
Ich kann leider nur für meine M.2 (nvme) platte sprechen. Wenn ich das richtig recheriert habe, so liest smart direkt die Werte aus dem Controller der M.2 aus.Unter der Annahme das ich alles korrekt verstanden habe, bewerte ich Daten wie folgt:
Proxmox zeigt mir einen wearout von 8%:
smart liefert mir folgende Werte zurück:
Laut Hersteller hat die Platte einen TBW von 600 TB, d.h. sobald 600TB geschrieben wurden, werden die ersten Zellen der SSD wohl nicht mehr funktionieren. Weiter habe ich gelesen das dieser Wert sehr konservativ ist.
Laut
[]
hat meine Platte aktuell einen TBW von 52,5 TB, der wert passt auch, wenn man das über
Data Units Writtern
*LBA Size
rechnet.Bezogen auf die Hersteller Angabe hat die Platte aktuell einen wearout von 52,5/600 = 8,75%. D.h. der oben dargestellte Wert von Proxmox passt (evtl. Rundungsfehler).
Die Lebensdauer kann man wie folgt berechenen:
Betriebszeit in Jahre:
Power on Hours
/24/365 = 1,13 Jahre. D.h. die aktuelle TBW von 52,5 TB ist in 1,13 Jahren angefallen. Pro Jahr hab ich somit einen TBW von 46TB.Dauraus ergibt sich eine theoretische Lebensdauer von:
TBW lt. Hersteller
/TBW pro Jahr
= 600TB/46TB = 13,04 JahreDie Berechnung läuft bei mir in iob mit den eingelesenen Werten über den linux control adapter.
Somit kann ich das jetzt direkt überwachen. -
@scrounger
Also ich habe nun die smartmontools installiert, den Systeminfo Adapter ebenfalls.
Aber wie bekomme ich dann die Auswertung hin.
Habe schon versucht unter dem Systeminfo Adapter einen neun Befehl einzugeben, aber der liefert mir keine Werte zurück.
Auf der Console funktioniertsudo smartctl -A /dev/sda | grep Total_LBAs_Written | awk {'print $10'} 173148388
Kannst du mir da evtl weiterhelfen, ich würde das gerne irgendwie visuell darstellen und aktualisieren.
Danke -
Da geht mit dem Linuxcontrol Adapter. Deinen Befehl zyklisch ausführen und entsprechend formatieren.
-
@scrounger ich scheitere allerdings bei der Umsetzung.
Unter Meine Befehle kann ich bei HOST nichts anwählen.
Das mit der Formatierung muss ich dann ergoogeln.
-
@sugram
Hast du den Host unter allgemein angelegt?
Steht was in der console F12?
Welche Admin Version? -
@scrounger
Wie geschrieben, kenne ich mich damit noch nicht aus.
Daher hatte ich noch keinen Host unter allgemein angelegt.
Habe ich jetzt getan.
Bekomme allerdings eine Fehlermeldung das er den Befehl smartctl nicht kenntAhh jetzt, hatte das sudo vergessen.
Jetzt bekomme ich den Wert angezeigt.
Jetzt muss ich nur noch die Formatierung hinbekommen.Danke für die Info!!
-
Jetzt nur noch eine Frage.
Ich hab das Script hier gefunden, daß auch perfekt funktioniert.
#!/bin/bash ####################################### # Variables # ####################################### SSD_DEVICE="/dev/sda" ON_TIME_TAG="Power_On_Hours" WEAR_COUNT_TAG="Wear_Leveling_Count" LBAS_WRITTEN_TAG="Total_LBAs_Written" LBA_SIZE=512 # Value in bytes BYTES_PER_MB=1048576 BYTES_PER_GB=1073741824 BYTES_PER_TB=1099511627776 ####################################### # Get total data written... # ####################################### # Get SMART attributes SMART_INFO=$(sudo /usr/sbin/smartctl -A "$SSD_DEVICE") # Extract required attributes ON_TIME=$(echo "$SMART_INFO" | grep "$ON_TIME_TAG" | awk '{print $10}') WEAR_COUNT=$(echo "$SMART_INFO" | grep "$WEAR_COUNT_TAG" | awk '{print $4}' | sed 's/^0*//') LBAS_WRITTEN=$(echo "$SMART_INFO" | grep "$LBAS_WRITTEN_TAG" | awk '{print $10}') # Convert LBAs -> bytes BYTES_WRITTEN=$(echo "$LBAS_WRITTEN * $LBA_SIZE" | bc) MB_WRITTEN=$(echo "scale=3; $BYTES_WRITTEN / $BYTES_PER_MB" | bc) GB_WRITTEN=$(echo "scale=3; $BYTES_WRITTEN / $BYTES_PER_GB" | bc) TB_WRITTEN=$(echo "scale=3; $BYTES_WRITTEN / $BYTES_PER_TB" | bc) # Output results... echo "------------------------------" echo " SSD Status: $SSD_DEVICE" echo "------------------------------" echo " On time: $(echo $ON_TIME | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta') hr" echo "------------------------------" echo " Data written:" echo " MB: $(echo $MB_WRITTEN | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta')" echo " GB: $(echo $GB_WRITTEN | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta')" echo " TB: $(echo $TB_WRITTEN | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta')" echo "------------------------------" echo " Mean write rate:" echo " MB/hr: $(echo "scale=3; $MB_WRITTEN / $ON_TIME" | bc | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta')" echo "------------------------------" echo " Drive health: ${WEAR_COUNT} %" echo "------------------------------"
Allerdings schaffe ich es nicht, daß die Ausgabe auf dem HABPanel dann untereinander angezeigt wird.
Gibt es dafür irgendeine Möglichkeit?