Linux мониторинг температуры жестких дисков с помощью hddtemp

  • Михаил
  • 12 мин. на прочтение
  • 130
  • 07 Aug 2022
  • 07 Aug 2022

Вот отличная небольшая утилита для контроля температуры жесткого диска. Большинство современных жестких дисков компьютеров, включая SSD, поставляются с технологией SMART (технология самоконтроля, анализа и отчетности). Это система мониторинга жестких дисков компьютеров, позволяющая обнаруживать и сообщать о различных показателях надежности в надежде предвидеть сбои.
 

Отслеживание температуры жестких дисков с помощью hddtemp

Утилита hddtemp или smartctl сообщит вам температуру вашего жесткого диска, прочитав данные из SMART на дисках, поддерживающих эту функцию.
Linux Мониторинг температуры жестких дисков с помощью hddtemp
Только современные жесткие диски имеют датчик температуры. hddtemp также поддерживает чтение информации SMART с дисков SCSI. hddtemp может работать как простой инструмент командной строки или как демон для получения информации со всех серверов.

Как установить hddtemp в Linux

Чтобы установить hddtemp на Debian / Ubuntu Linux , используйте команду apt-get / команду apt :
$ sudo apt-get install hddtemp
Примеры результатов:

Чтение списков пакетов... Готово Построение дерева зависимостей       Чтение информации о состоянии... Готово Будут установлены следующие НОВЫЕ пакеты:  hddtemp 0 обновлено, 1 установлено заново, 0 удалено и 0 не обновлено. Нужно получить 47,7 кБ архивов. После этой операции будет использовано 185 КБ дополнительного места на диске. Получите:1 http://in.archive.ubuntu.com/ubuntu bionic/universe amd64 hddtemp amd64 0.3-beta15-53 [47,7 кБ] Получено 47,7 КБ за 0 с (276 КБ/с)   Предварительная настройка пакетов... Выбор ранее невыбранного пакета hddtemp. (Чтение базы данных... На данный момент установлено 166286 файлов и каталогов.) Подготовка к распаковке .../hddtemp_0.3-beta15-53_amd64.deb ... Распаковка hddtemp (0.3-beta15-53)... Настройка hddtemp (0.3-beta15-53)... Обработка триггеров для ureadahead (0.100.0-21) ... Обработка триггеров для systemd (237-3ubuntu10.24)... Обработка триггеров для man-db (2.8.3-2ubuntu0.1)...

Чтобы установить hddtemp в CentOS/RHEL/SL/Oracle Linux , запустите команду yum (сначала включите репозиторий EPEL ):
$ sudo yum install hddtemp
Введите следующую команду pacman, чтобы установить hddtemp в дистрибутиве Arch Linux :
$ sudo pacman -S hddtemp
Введите следующую команду dnf, чтобы установить hddtemp в Fedora. Дистрибутив Linux :
$ sudo dnf install hddtemp
введите следующую команду zypper, чтобы установить hddtemp в дистрибутиве OpenSUSE Linux:
$ sudo zypper install hddtemp

Связанный: Как проверить температуру процессора в OpenSUSE Linux

Примечание об установке исходного кода

Вы также можете выполнить установку исходного кода. Загрузите исходный код tar ball здесь .
$ wget http://download.savannah.nongnu.org/releases/hddtemp/hddtemp-0.3-beta15.tar.bz2
Разархивируйте и установите hddtemp с помощью следующих команд: Установите базу данных температуры жесткого диска в каталог /usr/share/misc или /etc:
$ tar -jxvf hddtemp-0.3-beta15.tar.bz2
$ cd hddtemp-0.3-beta15
$ ./configure
$ make
$ sudo make install


$ cd /usr/share/misc
# wget http://download.savannah.nongnu.org/releases/hddtemp/hddtemp.db
 

Отслеживание температуры жестких дисков с помощью hddtemp

Давайте посмотрим на использование, синтаксис и примеры команды hddtemp. Синтаксис TYPE может быть SATA, PATA или SCSI. Если опущено, hddtemp попытается угадать
hddtemp disk
hddtemp TYPE:disk
hddtemp [options] TYPE:disk
 

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

Чтобы увидеть температуру для /dev/sda, введите следующую команду:
$ hddtemp /dev/sda
Sample outputs

/dev/sda: WDC WD2500YS-01SHB1: 25°C

Приведенный выше вывод указывает, что температура моего жесткого диска составляет 25 ° C. Если температура выше 60°C , немедленно рассмотрите варианты охлаждения.

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

По умолчанию hddtemp привязывается к порту TCP/IP 7634. ??Вам необходимо запустить hddtemp в режиме демона. Войдите на удаленный блок и запустите его следующим образом для мониторинга /dev/sda, /dev/sdb, /dev/sdc и /dev/sdd:
# hddtemp -d /dev/sd[abcd]
Используйте команду telnet или nc / netcat, чтобы получить температуру с удаленного блока:
$ telnet remotebox 7634
ИЛИ
$ nc 192.168.1.100 7634
Примеры выходных данных:

|/dev/sda|Твердотельный накопитель Samsung 850 EVO mSATA 500 ГБ|45|C|

Вы можете отформатировать его следующим образом с помощью команды awk:
nc centos7-box 7634 | awk -F'|' '{print $2 " " $4 $5 "(" $3 ")"}'
Примеры выходных данных:

/dev/sda 45C (Samsung SSD 850 EVO mSATA 500 ГБ)

Выключите компьютер с Linux, если температура >= 55

Чтобы выключить / выключить компьютер, выполните следующую команду через вкладку cron (задание cron) : Пример сценария оболочки для выключения, если температура> = 55 ° C ( ссылка для скачивания ):
t=$(hddtemp /dev/sda --numeric)
[ $t -ge 55 ] && /sbin/shutdown -h 0
 

#!/bin/bash # Цель: Выключить сервер, если температура диска превысила $ALERT_LEVEL # Автор: Vivek Gite {https://www.cyberciti.biz/}, под GPL v.2.x # ------- -------------------------------------------------- -------- HDDS = "/dev/sda /dev/sdb /dev/sdc /dev/sdc /dev/sdd /dev/sde" HDT = / usr / sbin / hddtemp LOG = / usr / bin / logger DOWN = / sbin / shutdown ALERT_LEVEL = 60 для диска в  $HDDS делать  если -b  $диск  ] ; затем        HDTEMP =$ ${HDT}  --numeric  ${disk}  )        if  $HDTEMP  -ge  $ALERT_LEVEL  ] ;        затем           $LOG  "Система отключается, так как температура жесткого диска \" $disk \" ( $HDTEMP ) превысила допустимый предел."           синхронизировать ; синхронизировать           $DOWN  -h  0        fi  fi готово

Вы можете запустить скрипт, используя задание cron в Linux или Unix-подобной системе:
$ sudo crontab -e
Добавьте следующее , чтобы запускать задание cron каждые 10 минут для проверки температуры диска :
*/10 * * * * /root/bin/chk-disk-temp.bash

параметры команды hddtemp

Чтобы увидеть использование, запустите:
$ hddtemp --help
Sample outputs:

  -b --drivebase : отображать содержимое файла базы данных, позволяющее hddtemp                        распознавать поддерживаемые диски.  -D --debug : отображать различные поля SMART и их значения.                        Полезно найти значение, которое кажется соответствующим                        температуру и/или отправить мне отчет.                        ( делается для каждого поставляемого привода ) .  -d --daemon : запустить hddtemp в режиме демона TCP/IP ( по умолчанию порт 7634 ) .  -f --file = ФАЙЛ : указать файл базы данных для использования.  -F --foreground : не демонизировать, оставаться на переднем плане.  -l --listen=addr : слушать на определенном интерфейсе (в режиме демона TCP/IP).  -n --numeric : вывести только температуру.  -p --port=# : порт для прослушивания (в режиме демона TCP/IP).  -s --separator=C : разделитель для использования между полями (в режиме демона TCP/IP).  -S --syslog=s : записывать температуру в системный журнал каждые s секунд.  -u --unit=[C|F] : установить выходную температуру в градусах Цельсия или Фаренгейта.  -q --quiet : не проверять, поддерживается ли диск.  -v --version : показать номер версии hddtemp.  -w --wake-up : разбудить диск, если это необходимо.  -4 : прослушивать только сокеты IPv4.  -6 : прослушивать только сокеты IPv6.

Примечание о nvme ssd

Мы можем использовать команду smartcl или nvme для получения температуры. Например:
sudo smartctl -A /dev/nvme0

smartctl 6.6  2016 -05-31 r4324 [  x86_64-linux- 4.18.0-25 -generic ] ( локальная сборка ) Copyright ( C )  2002–16 , Брюс Аллен, Кристиан Франке, www.smartmontools.org   = == НАЧАЛО РАЗДЕЛА SMART DATA === Информация SMART/Health ( журнал NVMe 0x02, NSID 0xffffffff ) Критическое предупреждение: 0x00 Температура:                         41 по Цельсию Доступные запасные части:                     100 % Доступный запасной порог:           10 % Процент использования:                     0 % Прочитано единиц данных:                     15 889 [  8,13 ГБ ] Записано единиц данных:                  80 845 [  41,3 ГБ ] Команд чтения хоста:                  256 , 531 Команд записи хоста:                 553 , 980 Время занятости контроллера:                3 Циклы питания:                        38 Время включения питания:                      4 Небезопасные завершения работы:                    27 Ошибки целостности носителей и данных:     0 Записи в журнале информации об ошибках:      41 Предупреждение Комп. Температурное время:     0 Критическая комп. Время температуры:     0 Датчик температуры 1 :                41 по Цельсию Датчик температуры 2 :                45 по Цельсию

Другой вариант — попробовать команду nvme для чтения температуры nvme ssd следующим образом:
sudo nvme smart-log /dev/nvme0
Вот что я увидел:

Умный журнал для устройства NVME: идентификатор пространства имен nvme0: ffffffff Critical_warning : 0 температура : 41 C доступный_запасной: 100 % available_spare_threshold : 10 % процент_используемый : 0 % data_units_read : 15 , 889 data_units_writing : 80 , 841 host_read_commands : 2 , 56 , 531 host_write_commands : 5 , 53 , 822 _ _ _ _ _ _ _ _ Предупреждение о температуре Время: 0 Критическая составная температура Время: 0 Температурный датчик 1                 : 41 C Датчик температуры 2                 : 45 °С Управление температурным режимом T1 Trans Count : 0 Управление температурным режимом T2 Trans Count : 0 Управление температурным режимом T1 Общее время : 0 Управление температурным режимом T2 Общее время : 0

Дополнительную информацию см. в разделе « Linux определяет температуру NVMe SSD с помощью командной строки ».

Поздоровайтесь с утилитой smartctl

Если у вас установлена ??утилита smartctl , попробуйте получить данные о температуре следующим образом:
# smartctl -d ata -A /dev/sda | grep -i temperature
# smartctl -A /dev/sdb | grep -i temperature

Команда Linux «Найти температуру жесткого диска»
Установите ALERT_LEVEL в соответствии с вашими требованиями. Пожалуйста, обратитесь к руководству по эксплуатации вашего жесткого диска для получения рекомендаций по рабочей температуре. Вот общие рекомендации по температуре (взято с веб-страницы жестких дисков Seagate серии SV35.2):

Операционная

от 0 до 60 градусов С

Не работает

от -40 до 70 градусов С

Максимальное изменение рабочей температуры

20 градусов С в час

Максимальное изменение температуры в нерабочем состоянии

30 градусов С в час

Максимальная рабочая температура корпуса

69 градусов С

Диски и хранилище на основе графического интерфейса Gnome

Введите следующую команду:
gnome-disks
Нажмите на диск, и он покажет вам температуру диска следующим образом:
Мониторинг температуры жестких дисков с помощью дисков hddtemp и Gnome

Примечание для пользователей MS-Windows XP / Vista / 7 / 10 / Server

Извиняюсь. Программа hddtemp предназначена только для UNIX/Linux.

Вывод

Вы узнали, как контролировать температуру жестких дисков с помощью утилит hddtemp, smartctl и GUI.