Good to Know Database

Ubuntu 9.04: Festplattentemperatur auslesen


Die internen Temperatursensoren einer Festplatte können über S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) abgefragt werden. Dazu benötigen Sie entweder die S.M.A.R.T. Monitoring Tools oder das Programm hddtemp. Ich möchte Ihnen hier beide Möglichkeiten die Festplattentemperatur auszulesen vorstellen.

S.M.A.R.T. Monitoring Tools

Die S.M.A.R.T. Monitoring Tools können Sie mit dem folgenden Befehl installieren.

georg@ubuntu904:~$ sudo apt-get install smartmontools

Nach der Installation können Sie mit dem Befehl smartctl die S.M.A.R.T. Informationen einer Festplatte auslesen.

georg@ubuntu904:~$ sudo smartctl -A /dev/sda
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   100   100   046    Pre-fail  Always       -       255977
  2 Throughput_Performance  0x0005   100   100   030    Pre-fail  Offline      -       19857408
  3 Spin_Up_Time            0x0003   100   100   025    Pre-fail  Always       -       1
  4 Start_Stop_Count        0x0032   099   099   000    Old_age   Always       -       1017
  5 Reallocated_Sector_Ct   0x0033   100   100   024    Pre-fail  Always       -       8589934592000
  7 Seek_Error_Rate         0x000f   100   100   047    Pre-fail  Always       -       3545
  8 Seek_Time_Performance   0x0005   100   100   019    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   099   099   000    Old_age   Always       -       728
 10 Spin_Retry_Count        0x0013   100   100   020    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       608
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       91
193 Load_Cycle_Count        0x0032   099   099   000    Old_age   Always       -       21360
194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       38 (Lifetime Min/Max 18/57)
195 Hardware_ECC_Recovered  0x001a   100   100   000    Old_age   Always       -       1805
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       455016448
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x000f   100   100   060    Pre-fail  Always       -       6826
203 Run_Out_Cancel          0x0002   100   100   000    Old_age   Always       -       433770987357
240 Head_Flying_Hours       0x003e   200   200   000    Old_age   Always       -       0

Die Festplattentemperatur finden Sie unter der ID 194 und beträgt in diesem Fall 38°C. Damit nur die entsprechende Zeile angezeigt wird, können Sie die Ausgabe mit grep filtern.

georg@ubuntu904:~$ sudo smartctl -A /dev/sda | grep Temperature
194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       38 (Lifetime Min/Max 18/57)

Wie Sie der Ausgabe entnehmen können, werden hier auch die minimale und maximale Temperatur der Festplatte während Ihrer bisherigen Benutzung angezeigt.

hddtemp

Das Programm hddtemp liest die aktuelle Temperatur einer Festplatte ebenfalls mit Hilfe von S.M.A.R.T. aus. hddtemp kann die Daten entweder direkt ausgeben, als Syslog-Meldung abspeichern oder als Serverdienst im Netzwerk zur Verfügung stellen.

Die Installation von hddtemp starten Sie mit dem folgenden Befehl.

georg@ubuntu904:~$ sudo apt-get install hddtemp

Während der Installation können Sie bereits den hddtemp-Daemon konfigurieren. Sollten Sie (vorerst) den Daemon nicht verwenden wollen, dann beantworten Sie die Frage Den Hddtemp-Dienst beim Hochfahren des Systems starten? mit Nein.

Die aktuelle Temperatur einer Festplatte lesen Sie zum Beispiel mit dem folgenden Befehl aus.

georg@ubuntu904:~$ sudo hddtemp /dev/sda
/dev/sda: HITACHI HTS722016K9SA00: 37°C

Wenn Sie mehrere Festplatten in Ihrem System verbaut haben, können Sie diese entweder einzeln abfragen oder wie im folgenden Beispiel die regulären Ausdrücke zur Hilfe nehmen.

georg@ubuntu904:~$ sudo hddtemp /dev/sd[a-z]
/dev/sda: HITACHI HTS722016K9SA00: 37°C
/dev/sdb: FUJITSU MHW2080BH PL: 38°C

Sollten Sie sich jetzt entschließend hddtemp als Daemon im Hintergrund laufen zu lassen und die Festplattentemperatur(en) mit Hilfe von Syslog protokollieren und/oder im Netzwerk zur Verfügung stellen wollen, dann können Sie mit dem folgenden Befehl die Konfiguration des Daemon nachholen.

georg@ubuntu904:~$ sudo dpkg-reconfigure hddtemp

Folgen Sie hier einfach dem Konfigurations-Assistenten. Aus Sicherheitsgründen sollten Sie hddtemp aber nicht mit Root-Rechten laufen lassen.

Die Konfiguration von hddtemp finden Sie in der Datei /etc/default/hddtemp und könnte wie folgt aussehen.

# Defaults for hddtemp initscript (/etc/init.d/hddtemp)
# This is a POSIX shell fragment

# [automatically edited by postinst, do not change line format ]

# hddtemp network daemon switch. If set to true, hddtemp will listen
# for incoming connections.
RUN_DAEMON="true"

# List of devices you want to use with hddtemp. If none specified,
# hddtemp will probe standard devices.
#DISKS="/dev/hda"

# List of devices you want to use with hddtemp, but that would not be
# probed for a working sensor.
DISKS_NOPROBE=""

# IP address of the interface on which you want hddtemp to be bound
# on. If none specified, goes to 127.0.0.1. Use 0.0.0.0 to bind hddtemp
# on all interfaces.
INTERFACE="127.0.0.1"

# Port number on which you want hddtemp to listen on. If none specified,
# the port 7634 is used.
PORT="7634"

# Database file to use. If none specified, /etc/hddtemp.db is used.
#DATABASE="/etc/hddtemp.db"

# Separator to use between fields. The default separator is '|'.
#SEPARATOR="|"

# Logging period (in seconds) for the temperatures. If set to a value
# different than 0, hddtemp will run as a daemon periodically logging
# the temperatures through syslog
RUN_SYSLOG="600"

# Other options to pass to hddtemp
OPTIONS=""

Wenn Sie nur bestimmte Festplatten überwachen wollen, können Sie diese entweder mit der Option DISKS angeben oder die uninteressanten Festplatten durch die Option DISKS_NOPROBE ausschließen. Wenn Sie die Festplattentemperatur(en) im Netzwerk zur Verfügung stellen wollen, geben Sie bei der Option INTERFACE die entsprechende Netzerkschnittstelle oder 0.0.0.0 für alle Schnittstellen an. Sollten Sie eine Firewall verwenden, müssen Sie den TCP-Port 7634 öffnen damit Sie vom Netzwerk auf die Temperaturwerte zugreifen können. Durch die Option RUN_SYSLOG legen Sie fest, in welchem Intervall die Temperatur(en) an den Syslog weitergegeben werden sollen.

Nachdem Sie an der Konfigurationsdatei /etc/default/hddtemp Änderungen vorgenommen haben, sollten Sie den hddtemp-Daemon neu starten.

georg@ubuntu904:~$ sudo /etc/init.d/hddtemp restart

Die Festplattentemperaturen werden von Syslog in der Logdatei /var/log/syslog protokolliert.

georg@ubuntu904:~$ tail -f /var/log/syslog
Jun 12 21:49:41 ubuntu hddtemp[7363]: /dev/sda: HITACHI HTS722016K9SA00: 37 C
Jun 12 21:59:42 ubuntu hddtemp[7363]: /dev/sda: HITACHI HTS722016K9SA00: 37 C
Jun 12 22:09:43 ubuntu hddtemp[7363]: /dev/sda: HITACHI HTS722016K9SA00: 37 C
Jun 12 22:19:43 ubuntu hddtemp[7363]: /dev/sda: HITACHI HTS722016K9SA00: 37 C
Jun 12 22:29:44 ubuntu hddtemp[7363]: /dev/sda: HITACHI HTS722016K9SA00: 37 C

Um die Daten von einem entfernten Rechner abzufragen, können Sie zum Beispiel Netcat verwenden.

georg@ubuntu904:~$ nc 192.168.10.1 7634
|/dev/sda|HITACHI HTS722016K9SA00|37|C|


Dieser Eintrag wurde am 13.06.2009 erstellt und zuletzt am 19.05.2012 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_34_643.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer