There is a nice utility to monitor hard drive temperature. Most modern x86 computer hard disk comes with S.M.A.R.T (Self-Monitoring, Analysis, and Reporting Technology). It is a monitoring system for computer hard disks to detect and report on various indicators of reliability, in the hope of anticipating failures.
hddtemp utility will give you the temperature of your hard drive by reading data from S.M.A.R.T. on drives that support this feature. Only modern hard drives have a temperature sensor. hddtemp supports reading S.M.A.R.T. information from SCSI drives too. hddtemp can work as simple command line tool or as a daemon to get information from all servers.
Install hddtemp
To install hddtemp under Debian / Ubuntu Linux, enter:$ sudo apt-get install hddtemp
You can also perform source code installation. Download source code tar ball here.$ wget http://download.savannah.nongnu.org/releases/hddtemp/hddtemp-0.3-beta15.tar.bz2
Untar and install hddtemp:$ tar -jxvf hddtemp-0.3-beta15.tar.bz2
$ cd hddtemp-0.3-beta15
$ ./configure
$ make
$ sudo make install
Install hard disk temperature database at /usr/share/misc or /etc directory:$ cd /usr/share/misc
# wget http://download.savannah.nongnu.org/releases/hddtemp/hddtemp.db
How do I monitor hard disk temperature?
To see temperature for /dev/sda, enter the following command:# hddtemp /dev/sda
Output:
/dev/sdb: WDC WD2500YS-01SHB1: 25°C
Above output indicate that my hard disk temperature is 25°C. if temperature is higher than 60°ะก , consider cooling options immediately.
How do I find out remote server temperature?
By default hddtemp bind to TCP/IP port 7634.
You need to run hddtemp in daemon mode. Login on remote box and start it as follows to monitor /dev/sda, /dev/sdb..,/dev/sdd:# hddtemp -d /dev/sd[abcd]
Use telnet or nc / netcat command to to get a temperature from a remote box:$ telnet remotebox 7634
OR$ nc 192.168.1.100 7634
Shutdown Linux computer if temperature >= 55
To power off / shutdown computer, run following command via cron tab file:[ $(hddtemp /dev/sda | awk '{ print $4}' | awk -F '°' '{ print $1}') -ge 55 ] && /sbin/shutdown -h 0 || :
Sample shell script to shutdown box if temperature >= 55°C (download link):
#!/bin/bash
HDDS="/dev/sda /dev/sdb /dev/sdc"
HDT=/usr/sbin/hddtemp
LOG=/usr/bin/logger
DOWN=/sbin/shutdown
ALERT_LEVEL=55
for disk in $HDDS
do
if [ -b $disk ]; then
HDTEMP=$($HDT $disk | awk '{ print $4}' | awk -F '°' '{ print $1}')
if [ $HDTEMP -ge $ALERT_LEVEL ]; then
$LOG "System going down as hard disk : $disk temperature $HDTEMP°C crossed its limit"
sync;sync
$DOWN -h 0
fi
fi
done
smartctl utility
If you have smartctl utility installed, try it as follows:# smartctl -d ata -A /dev/sda | grep -i temperature
Output:
194 Temperature_Celsius 0x0022 122 095 000 Old_age Always - 28
Set ALERT_LEVEL as per your requirements. Please refer to your hard disk manual for working temperature guideline. Here is general temperature guideline (extracted from Seagate SV35.2 Series Hard Drives Web Page):
Operating | 0 to 60 degrees C |
Nonoperating | -40 to 70 degrees C |
Maximum operating temperature change | 20 degrees C per hour |
Maximum nonoperating temperature change | 30 degrees C per hour |
Maximum operating case temperature | 69 degrees C |
A note for Windows XP / Vista / Server users
hddtemp is UNIX / Linux only program. You can download hddtemp trial version here. There is also Dtemp (it is not updated in ages).
0 comments:
Post a Comment