Рано или поздно все задаются вопросом какая же температура у моего винчестера? Хорошо бы озаботиться этим вопросом пораньше, а не когда винчестер начнет издавать стрекочущие звуки или при загрузке компьютера вы вдруг увидите SMART ERROR. Знайте, что оптимальная температурой винчестера это примерно до 45°C, а лучше в пределах 40°С и ниже. Температура под 50°С значительно может сократить срок службы винчестера, но это как повезет.
HDDTemp (только в linux).
Самый простой способ узнать температуру, это использовать программу hddtemp. Программа популярная и имеется в каждом репозитарии различных дистрибутивов. Возможно с сайта вам придется только скачать и обновить hddtemp.db – это база данных по жестким дискам для этой программы (файл обычно находиться по пути /etc/hddtemp.db).
Узнать температуру можно командой “hddtemp /dev/имя_устройства”. Команду следует выполнять от пользователя root или через sudo, т.к. информация о температуре берется из SMART состояния диска, а доступ к SMART только от суперпользователя системы.
# hddtemp /dev/sdc1
/dev/sdc1: ST3400832A ─: 43°C
Если вашего диска не будет в базе данных hddtemp, то программа выдаст сначала предупреждение, что информация о диске отсутствует, а потом предполагаемую температуру диска.
# hddtemp /dev/sdc1
ВНИМАНИЕ: Диск /dev/sdc не включен в базу данных поддерживаемых приводов.
ВНИМАНИЕ: Но с использованием распространенных параметров он что-то выдает.
ВНИМАНИЕ: Заметьте, что показанная температура может таковой не являться.
ВНИМАНИЕ: См. опции --help, --debug и --drivebase.
ВНИМАНИЕ: И не забудьте, что можно добавить привод в hddtemp.db
/dev/sdc: ST3400832A ─: 43°C или °F
От вас требуется проверить, верны ли данные о температуре, и если все нормально добавить информацию о своем диске в базу hddtemp.db. А чтобы это узнать, надо самому посмотреть в SMART и увидеть данные температуры там. Но об этом во второй части статьи в разделе smartmontools.
Программа hddtemp может работать в режиме демона и выдавать постоянно информацию через определенный порт. По умолчанию порт 7634.
# hddtemp -d /dev/sdc -p7634
# telnet localhost 7634 Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
|/dev/sdc|ST3400832A ─|43|C|
Connection closed by foreign host
Теперь температуру можно снимать удаленно с любого компьютера сети, а задействуя интерактивные скрипты, можно и автоматизировать этот процесс.
У программы hddtemp есть и другие параметры, их можно посмотреть командой “hddtemp –help”.
Smartmontools
Вот это уже серьезный проект и полные данные о здоровье вашего винчестера. Информацию о проекте можно получить на официальной странице smartmontools. Программа работает под всеми unix системами.
Обновляем ваши порты или репозитарии и ставим этот пакет.
Чтобы посмотреть всю доступную информацию о жестком диске выполняем от root или sudo
# smartctl --all /dev/имя_устройства_hdd
Вывод команды будет впечатляющим показать
Я не буду останавливаться на параметрах, т.к. SMART винчестеров это целая тема. Нас интересует только строка
194 Temperature_Celsius 0x0022 043 052 000 Old_age Always - 43 (0 21 0 0)
Это значит температура диска 43°C. Если немного усложнить команду, то можно сразу получать температуру
# smartctl --all /dev/sda |grep ^194| awk '{print $10}'
43
Функций в команде smartctl очень много. Изучайте маленькую подсказку “smartctl –help” или читайте “man smartctl”.
Например, чтобы не выводить огромное количество данных из SMART, а только часть атрибутов, откуда мы берем температуру, воспользуемся командой
#smartctl -A /dev/sda
smartctl version 5.38 [i486-slackware-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: 10
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 073 063 006 Pre-fail Always - 21663510
3 Spin_Up_Time 0x0003 099 098 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 127
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 079 073 030 Pre-fail Always - 97182772
9 Power_On_Hours 0x0032 081 081 000 Old_age Always - 17206
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 037 020 Old_age Always - 59
184 Unknown_Attribute 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 057 048 045 Old_age Always - 43 (Lifetime Min/Max 34/48)
194 Temperature_Celsius 0x0022 043 052 000 Old_age Always - 43 (0 21 0 0)
195 Hardware_ECC_Recovered 0x001a 056 035 000 Old_age Always - 21663510
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
Если задействовать режим демона smartd и настроить конфиг /etc/smartd.conf, то можно мониторить изменения в SMART жестких дисков, получая изменения данных прямо по электронной почте.
Еще хочется сказать, что с помощью smartctl можно получать температуру с винчестеров, которые находятся в RAID. Самое главное, чтобы контроллеры поддерживали технологию SMART, а иначе никак.
Для составления команды получения SMART придется немного изучить руководство smartmontools, т.к. к жестким дискам, которые находятся на контроллере требуются особые параметры smartctl.
Например у меня есть массив RAID1 на контроллере Adaptec 5805Z. Винчестер в системе видится как sda, хотя вы понимаете, что на самом деле винчестеров два. Показания атрибутов для первого и второго винчестеров получаем через команды
#smartctl -A -d sat /dev/sg1
#smartctl -A -d sat /dev/sg2
Визуальное отображение параметров температуры винчестеров можно получать с помощью таких программ gkrellm или conky. Но об этом как нибудь в другой раз. Все графические программы сами не умеют получать данные о температурах и отображают данные, получаемые через hddtemp или smartmontools.