Главная | Контакты



Главная > Программы > HDDTemp

Контроль температуры жесткого диска

Когда я установил на сервер новый жесткий диск Seagate ST31500341AS объемом 1,5Тб для хранения личного фото-архива, я обнаружил, что этот диск прилично греется. Давно известно, что продолжительность жизни жестких дисков во многом зависит от температурного режима работы. Для снижения температурной нагрузки я установил на диск дешевый вентилятор Coolcox HD8015-12 за 58 руб. Вопреки моим скептическим ожиданиям это решение значительно снизило температуру жесткого диска, не увеличив при этом общий уровень шума. Осталось только наладить температурный контроль за работой жестких дисков. Для этого в Linux'е есть пакет hddtemp.

Для установки его на Debian Linux необходимо выполнить команду:

apt-get install hddtemp

Использование программы очень простое

hddtemp /dev/sda

Вывод

/dev/sda: ST31500341AS: 32°C

Но у меня два жестких диска и мне бы хотелось вывести эту информацию в Web-интерфейс Умного Дома. Была бы задача, а решение в среде Linux всегда найдется.

При установке hddtemp по умолчанию запускается tcp-сервис hddtemp, доступ к которому осуществляется через порт 7634. Таким образом информацию о температуре дисков можно получить, например, с помощью программы telnet

telnet localhost 7634

Вывод

|/dev/hda|WDC WD800JB-32JJC0|39|C||/dev/sda|ST31500341AS|32|C|

А раз так, то можно написать простенькую программу на PHP для вывода этой информации в табличном HTML виде на Web-сервер.

<?
    $host="localhost";
    $h=fsockopen($host, 7634);

    while(!feof($h) )
    $http_response.=fgets($h, 4096);

    $hdd_list = explode("||", preg_replace("/^|||$/", "", $http_response));

    echo "<table border=1>";
        for ( $i = 0; $i < count($hdd_list); $i++ )
        {
            $hdd_fields = explode("|", $hdd_list[$i]);

            echo "<tr>";
                for ( $j = 0; $j < count($hdd_fields); $j++ )
                echo "<td>$hdd_fields[$j]</td>";

            echo "</tr>";
        }
    echo "</table>";

    fclose($h);
?>

В результате получаем что-то вроде этого...

Нетрудно модифицировать скрипт для записи данных в MySQL базу с последующим построением графиков или создания контролирующих программ, уведомляющих тем или иным способом о перегреве.

Контроль температуры процессора и системной платы

Важно иметь представление о температуре жестких дисков, но не менее важно мониторить температуру других частей компьютера, к которым, прежде всего, относятся процессор и чипсет. Для этого нам потребуется пакет lm_sensors.

apt-get install lm-sensors

После установки пакета необходимо произвести поиск поддерживаемого оборудования.

sensors-detect

Для моей материнской платы P4P800 был найден чип Winbond W83627HF, модуль которого был прописан в "автозагрузку" /etc/modules
Но можно вызвать его и в ручном режиме

modprobe w83627hf

Далее нужно только выполнить команду

sensors

Вывод

w83627thf-isa-0290
Adapter: ISA adapter
VCore:       +1.58 V  (min =  +0.00 V, max =  +3.84 V)
+12V:       +12.28 V  (min =  +9.18 V, max =  +7.30 V)   ALARM
+3.3V:       +3.36 V  (min =  +1.18 V, max =  +2.93 V)   ALARM
+5V:         +5.07 V  (min =  +3.41 V, max =  +0.00 V)   ALARM
-12V:        +6.06 V  (min = -14.91 V, max =  -0.11 V)   ALARM
V5SB:        +4.97 V  (min =  +1.72 V, max =  +0.46 V)   ALARM
VBat:        +3.20 V  (min =  +0.27 V, max =  +0.19 V)   ALARM
fan1:          0 RPM  (min =   -1 RPM, div = 128)  ALARM
CPU Fan:    2789 RPM  (min =   -1 RPM, div = 4)  ALARM
fan3:          0 RPM  (min =  251 RPM, div = 128)  ALARM
M/B Temp:    +36.0°C  (high = +81.0°C, hyst =  +0.0°C)  sensor = thermistor
CPU Temp:    +44.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = diode
temp3:       -48.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor
cpu0_vid:   +1.525 V
beep_enable:enabled

Вытащить эти данные в Web-интерфейс можно аналогично предыдущему способу. А можно и гораздо проще. Например, таким образом:

<?
    echo "<pre>";

    passthru("sensors");
    echo "</pre>";
?> 

Использован материал с сайта: http://ab-log.ru/smart-house/linux/server_temp_control
Главная > Программы > HDDTemp