LINUX.ORG.RU

Как в Debian 12 принято мониторить температуру HDD?

 , , ,


0

2

Привет.

Раньше была и замечательно работала утилита hddtemp,
сейчас на неё «забили» и она выкинути из Debian 12.
Тем не менее мониторить температуру дисков надо.
Насколько я помню, hddtemp можно было указать сразу несколько дисков, или даже маску.
Сейчас пока остался лишь:

# smartctl -a /dev/sda|grep Temp

Он показывает много мусора:
194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       33 (Min/Max 16/51)

И лишь одно устройство
Для «подчистки» вывода, можно использовать:
# smartctl -A /dev/sda | awk '/Temp/ {print $10}'
Получим просто 33, но я не совсем уверен что это будет всегда верно работать.

Но хотелось бы аналога hddtmpt /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg
Чтобы получить вывод температуры сразу для всех дисков в системе.
Смутно припоминаю, что hddtemp для каждого диска сначала писал его название а потом уже температуру.
Что может порекомендовать глубокоуважаемый Олл?

★★★

Последнее исправление: n0mad (всего исправлений: 1)
Ответ на: комментарий от LongLiveUbuntu

lm-sensors

И как?

# sensors
drivetemp-scsi-0-0
Adapter: SCSI adapter
temp1:        +54.0°C  

acpitz-acpi-0
Adapter: ACPI interface
temp1:        +52.0°C  (crit = +95.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +52.0°C  (high = +105.0°C, crit = +105.0°C)
Core 0:        +52.0°C  (high = +105.0°C, crit = +105.0°C)
Core 1:        +52.0°C  (high = +105.0°C, crit = +105.0°C)

Естественно sensors-detect был давно исполнен.

n0mad ★★★
() автор топика
Ответ на: комментарий от n0mad

вообще-то drivetemp и должен показываться для всех дисков в системе. единственно - неудобно, что инфа идентифицируется только по scsi-адресам.

$ sensors drivetemp-*

drivetemp-scsi-6-0
Adapter: SCSI adapter
temp1:        +36.0°C  (low  = +10.0°C, high = +40.0°C)
                       (crit low =  +5.0°C, crit = +60.0°C)
                       (lowest = +31.0°C, highest = +39.0°C)

drivetemp-scsi-7-0
Adapter: SCSI adapter
temp1:        +39.0°C  (low  =  +0.0°C, high = +60.0°C)
                       (crit low = -40.0°C, crit = +70.0°C)
                       (lowest = +33.0°C, highest = +40.0°C)

drivetemp-scsi-2-0
Adapter: SCSI adapter
temp1:        +37.0°C  (low  =  +0.0°C, high = +70.0°C)
                       (crit low =  +0.0°C, crit = +70.0°C)
                       (lowest = +32.0°C, highest = +41.0°C)

для nvme аналогично (если CONFIG_NVME_HWMON=y включен):

$ sensors nvme-*
nvme-pci-0200
Adapter: PCI adapter
Composite:    +48.9°C  (low  =  -0.1°C, high = +86.8°C)
                       (crit = +88.8°C)

nvme-pci-0c00
Adapter: PCI adapter
Composite:    +32.9°C  (low  = -20.1°C, high = +83.8°C)
                       (crit = +88.8°C)
Sensor 2:     +70.8°C  

nvme-pci-1100
Adapter: PCI adapter
Composite:    +36.9°C  (low  = -20.1°C, high = +83.8°C)
                       (crit = +88.8°C)
Sensor 2:     +70.8°C
anonymous
()
Ответ на: комментарий от anonymous

вообще-то drivetemp и должен показываться для всех дисков в системе. единственно - неудобно, что инфа идентифицируется только по scsi-адресам.

Откуда у меня SCSI? У меня вообще комическая ситуация, весь форум ржал. 7 Винтов (14Т) подключенных по USB3 к МикроПК.

# sensors drivetemp-*
drivetemp-scsi-0-0
Adapter: SCSI adapter
temp1:        +54.0°C  

для nvme аналогично (если CONFIG_NVME_HWMON=y включен):

И nvme у меня нет. В М2 стоит:

=== START OF INFORMATION SECTION ===
Device Model:     KINGSTON SA400M8/120G
Serial Number:    AA9999999999990129
Firmware Version: T0611A0
User Capacity:    128 035 676 160 bytes [128 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic, zeroed
Device is:        Not in smartctl database 7.3/5319
ATA Version is:   ACS-2 T13/2015-D revision 3
SATA Version is:  SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Tue Aug 12 11:20:30 2025 MSK
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Потому: # sensors nvme-*
Specified sensor(s) not found!
Бесит... Не неужели нельзя было поддержать hddtemp? Это же мастхэв! А теперь будем тащить его откуда попало и собирать сами.
Впрочем... Там есть же несколько альтернативных пакетных систем (Всякие flatpak,Snap,Appimage - но никак не выберу на чём остановиться, и никак не освою.)

n0mad ★★★
() автор топика
Последнее исправление: n0mad (всего исправлений: 1)
Ответ на: комментарий от n0mad

Откуда у меня SCSI?

Вот отсюда:

KINGSTON SA400M8/120G

Модуль drivetemp его и показывает. Насчёт USB не знаю, погугли, возможно надо какой-то параметр добавить для модуля.

anonymous
()

Если тебе именно мониторить, то есть метрики писать, то тебе весь стек поднимать нужно, например:

  1. VictoriaMetrics для хранения метрик;
  2. Grafana для отображения;
  3. Grafana Alloy для скрейпинга;
  4. smartctl_exporter для экспозинга метрик.

Докер колхоз тебе в помощь.

pekmop1024 ★★★★★
()
Ответ на: комментарий от n0mad

Впрочем... Там есть же несколько альтернативных пакетных систем (Всякие flatpak,Snap,Appimage - но никак не выберу на чём остановиться, и никак не освою.)

С ходу не нашел hddtemp ни под один из этих пакетных менеджеров и запускалок.

n0mad ★★★
() автор топика
Ответ на: комментарий от anonymous

Для чего тебе вообще температура дисков, ещё и внешних?

Для того чтобы мониторить, удобно.
Сейчас:


# smartctl -A /dev/sda | awk '/Temp/ {print $10}'
54
# smartctl -A /dev/sdb | awk '/Temp/ {print $10}'
34
# smartctl -A /dev/sdc | awk '/Temp/ {print $10}'
36
# smartctl -A /dev/sdd | awk '/Temp/ {print $10}'
38
# smartctl -A /dev/sde | awk '/Temp/ {print $10}'
51
# smartctl -A /dev/sdf | awk '/Temp/ {print $10}'
37
# smartctl -A /dev/sdg | awk '/Temp/ {print $10}'
36
36
# smartctl -A /dev/sdh | awk '/Temp/ {print $10}'
53

sde - Hitachi 4T
sdh - Toshiba 4T

Не совсем удобно соотносить имя устройства и конкретное устройство. Ведь в USB, после перезагрузки они могут поменять имена. При включении у них один порядок подключения, а при перезагрузке - другой.

Вот думаю, 51,53 градуса - это сильно высоко? Или над ними поставить вентиляторы типа тех что в БП стоят?

Ну 54 у M2 SSD думаю пофиг, хотя под ним уже стоит вентилятор.
Стоит то он в МикроПК размером 12*12см. Исходно у него только пассивное охлаждение.

n0mad ★★★
() автор топика
Ответ на: комментарий от n0mad

Для того чтобы мониторить

Чтобы что? Ну, типа, если ты видишь +60°, то доливаешь азот, открываешь окно, начинаешь дуть на диски? Если в твоих условиях устройства не могут реалистично выйти за пределы допусков (см. сайт производителя), то нет смысла тратить на это время.

Про нормальный мониторинг выше написали, но, на мой взгляд, тут нужен не доктор Колхоз, а доктор YAGNI.

anonymous
()
Ответ на: комментарий от n0mad

Да поставь пакет из старой версии Debian. Максимум понадобится сделать юнит для systemd. Пока в ядре жива SCSI-подсистема, оно будет работать.

anonymous
()
Ответ на: комментарий от LongLiveUbuntu

lm-sensors

А вообще.... Если уж говорить о «принято» то «искаропки»:

# journalctl -r|grep SMART
авг 12 12:13:13 0F-BMAX smartd[1787]: Device: /dev/sdf [SAT], SMART Usage Attribute: 194 Temperature_Celsius changed from 166 to 157
авг 12 12:13:10 0F-BMAX smartd[1787]: Device: /dev/sde [SAT], SMART Usage Attribute: 194 Temperature_Celsius changed from 117 to 115
авг 12 11:43:02 0F-BMAX smartd[1787]: Device: /dev/sdc [SAT], SMART Usage Attribute: 194 Temperature_Celsius changed from 64 to 63
авг 12 10:43:15 0F-BMAX smartd[1787]: Device: /dev/sdf [SAT], SMART Usage Attribute: 194 Temperature_Celsius changed from 162 to 166
......

Только не понятно, что за цифры: «194 Temperature_Celsius changed from 162 to 166» - бред какой то.

n0mad ★★★
() автор топика
Ответ на: комментарий от anonymous

Для того чтобы мониторить

Чтобы что? Ну, типа, если ты видишь +60°, то доливаешь азот, открываешь окно, начинаешь дуть на диски? Если в твоих условиях устройства не могут реалистично выйти за пределы допусков (см. сайт производителя), то нет смысла тратить на это время.

Как минимум видеть - всё в порядке, или надо добывать АЗОТ?
Под МикроПК уже поставил вентилятор, процессор до 80+ разогревался. Сейчас 70, когда в браузере... Без браузера на 40 держится...

n0mad ★★★
() автор топика
Последнее исправление: n0mad (всего исправлений: 1)
Ответ на: комментарий от n0mad

да, для USB-шных дисков в hwmon поддержки нет (пока?). так что или парсить вывод SMART, или что-то городить с обращением к udisks через dbus (был какой-то старый плазмоид, который как-то получал температуру USB-дисков таким способом).

anonymous
()
Ответ на: комментарий от anonymous

да, для USB-шных дисков в hwmon поддержки нет (пока?). так что или парсить вывод SMART, или что-то городить с обращением к udisks через dbus (был какой-то старый плазмоид, который как-то получал температуру USB-дисков таким способом).

Ну или тупо, нарыть исходники hddtemp и собрать.

n0mad ★★★
() автор топика

Могу предложить 2 варианта:

  1. conky
  2. Грузишь модуль drivetemp и далее ищешь в /sys/class/hwmon/ температуры.

Но имей в виду, что каждое вычитывание температуры будит диски. У меня они даже головки распарковывали-запарковывали при каждом вычитывании.

u5er ★★★
()
Ответ на: комментарий от u5er

Но имей в виду, что каждое вычитывание температуры будит диски. У меня они даже головки распарковывали-запарковывали при каждом вычитывании.

А я маньяк. Я считаю что лишние старты/стопы - это более серьёзная нагрузка на диски чем их постоянная работа. У меня все постоянно в онлайн. Я грубо говоря - ни разу не видел диска сдохшего во время работы (Нет, ну бэды конечно бывают). Все сдохшие - обнаруживались при очередном включении.

Конечно тут и больше приводили, но:

# smartctl -a /dev/sdc|grep Power
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       84847

В январе как раз будет 10 лет онлайна :)

n0mad ★★★
() автор топика
Последнее исправление: n0mad (всего исправлений: 1)
Ответ на: комментарий от n0mad

Я считаю что лишние старты/стопы - это более серьёзная нагрузка на диски чем их постоянная работа.

Тут уже сам решай. Но я ещё обратил твоё внимание на постоянную перепарковку головок. На десктопе я этого не замечал из-за торрента. На ноуте за это цеплялся слух, когда даже в простое, когда запущены только иксы и коньки, диски постоянно издавали звуки парковки. Я какой-то момент я начал копать и выяснил, что каджое чтение температуры выводит головки из парковки и через пару секунд они паркуются обратно.

u5er ★★★
()
Ответ на: комментарий от pekmop1024

Хм, всегда думал что мониторинг это не пялится на графики а пинанием кого-то (в данном случае службы кто заведует кондиционерами) если параметр не того.

Хватит и smartctl_exporter с прометеем.

mx__ ★★★★★
()
Ответ на: комментарий от mx__

Хм, всегда думал что мониторинг это не пялится на графики а пинанием кого-то (в данном случае службы кто заведует кондиционерами) если параметр не того.

Если нет исторических данных, «тебе показалось, это не алерт».

pekmop1024 ★★★★★
()
Ответ на: комментарий от legolegs

Обращайся через /dev/disk/by-id/ata-...

Плюсую.

дополню лишь что можно посмотреть и другие /dev/disk/by-* в частности если все usb хабы на пути достаточно умнве - там может быть в by-path путь определяемый птследовательностью индексов портов цепочки хабов

GPFault ★★★
()
Ответ на: комментарий от u5er

Тут уже сам решай. Но я ещё обратил твоё внимание на постоянную перепарковку головок. На десктопе я этого не замечал из-за торрента. На ноуте за это цеплялся слух, когда даже в простое, когда запущены только иксы и коньки, диски постоянно издавали звуки парковки. Я какой-то момент я начал копать и выяснил, что каджое чтение температуры выводит головки из парковки и через пару секунд они паркуются обратно.

Вестерн? Много топиков было про ноутбучные вестерны.
в автозагрузку #hdparm -S0 -B254 /dev/sdX

n0mad ★★★
() автор топика
Ответ на: комментарий от n0mad
smartctl -a /dev/sdb | awk '/Device Model/ {print $4} /Temperature_Celsius/ {print $10}'

Но хотелось бы аналога hddtmpt /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg

Заверни в цикл.

for disk in sdb sdc sdd sde; do smartctl -a /dev/$disk | awk '/Device Model/ {print $4} /Temperature_Celsius/ {print $10}'; done
Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 1)
Ответ на: комментарий от Dimez

Заверни в цикл.

К сожалению я некопенгаген, а нагуглить не получилось.
Спасибо за пример скрипта, но я родил нечто более страшное, которое по хорошему - завернуть бы в цикл.

#!/bin/sh
DISKNAME="M2 Kingston 128g ssd:"
DISKID=ata-KINGSTON_SA400M8_120G_AA9999999999990129
echo  \(0\)$DISKNAME `smartctl -a /dev/disk/by-id/$DISKID|awk '/Temp/ {print $10}'`
DISKNAME="3.5 Hitachi 4T:"
DISKID=ata-HGST_HUS726040ALE614_K4JG1DZB
echo  \(1\)$DISKNAME `smartctl -a /dev/disk/by-id/$DISKID|awk '/Temp/ {print $10}'`
DISKNAME="3.5 Toshiba 4T:"
DISKID=ata-TOSHIBA_MG04ACA400E_989QK9BQFJKA
echo  \(2\)$DISKNAME `smartctl -a /dev/disk/by-id/$DISKID|awk '/Temp/ {print $10}'`
DISKNAME="3.5 Samsung 1T:"
DISKID=ata-SAMSUNG_HD105SI_S25GJ9CZ801073
echo  \(3\)$DISKNAME `smartctl -a /dev/disk/by-id/$DISKID|awk '/Temp/ {print $10}'`


Оно даёт мне более удобочитаемое:
(0)M2 Kingston 128g ssd: 53
(1)3.5 Hitachi 4T: 53
(2)3.5 Toshiba 4T: 53
(3)3.5 Samsung 1T: 36
(4)2.5 Hitachi750G: 38
(5)2.5 Toshiba 2T: 35
(6)USB3-2.5 Toshiba 1T: 39
(7)USB3-2.5 Transcend 1T: 41

Но вот как завернуть ID и текстовые описания в списки и цикл - я не знаю.

n0mad ★★★
() автор топика
Последнее исправление: n0mad (всего исправлений: 1)
Ответ на: комментарий от hakavlad

mate-panel, апплет Сенсоры

Есть такое дело, но слишком громоздко для 8 дисков, из которых он видит почему то всего 5. Я вывожу только критическое - температуру ядер. Порой браузеры разгоняют до 75+
Пришлось пристрелить ЯБ, MSEdge и Мозиллу, лишь 3 окошка Хромиума греют всего до 50.

n0mad ★★★
() автор топика
Последнее исправление: n0mad (всего исправлений: 2)
Ответ на: комментарий от n0mad

Я не совсем понял, как из изначального запроса (на который я дал ответ, кстати)

Но хотелось бы аналога hddtmpt /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg

получился вот этот вот ужасный кадавр?

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 1)
Ответ на: комментарий от Dimez

получился вот этот вот ужасный кадавр?

В твоём варианте температура на новой строке, и имя диска не совсем читабельное:

SA400M8/120G
53
HDWL120
34
HD105SI
36
MQ04UBF100
40
HUS726040ALE614
53
HTS541075A9E680
38

42
MG04ACA400E
53


Выдача моего «кадавра» более читабельна и порядок тот который нужен мне, а не тот который получился при инициализации USB.

n0mad ★★★
() автор топика
Ответ на: комментарий от Dimez

Самый простой вариант - скачать http://archive.ubuntu.com/ubuntu/pool/universe/h/hddtemp/hddtemp_0.3-beta15-5... и использовать его.

Спасибо за пруфлинк. Я сначала начал нюхать в сторону Snap,Appimage,Flatpak - но не нашел. Подумал про исходники... Но конечно проще всего качнуть какой нибудь бэкпорт (кажется так оно называется)

n0mad ★★★
() автор топика
Ответ на: комментарий от Dimez

Самый простой вариант - скачать http://archive.ubuntu.com/ubuntu/pool/universe/h/hddtemp/hddtemp_0.3-beta15-5... и использовать его.

Однако...

# hddtemp /dev/sd?
/dev/sda: KINGSTON SA400M8/120G: 54°C
/dev/sdb: JMS578: S.M.A.R.T. недоступен
/dev/sdc: SAMSUNG HD105SI: S.M.A.R.T. недоступен
/dev/sdd: TOSHIBA: S.M.A.R.T. недоступен
/dev/sde: HGST HUS726040ALE614: S.M.A.R.T. недоступен
/dev/sdf: UnionSine USB3.0: S.M.A.R.T. недоступен
/dev/sdg: StoreJetTranscend:  drive supported, but it doesn't have a temperature sensor.
/dev/sdh: TOSHIBA MG04ACA400E: S.M.A.R.T. недоступен

Так что не судьба, пусть будет мой «кадавр».

n0mad ★★★
() автор топика
Ответ на: комментарий от Dimez

А вообще, ты пробовал гуглить?

От гугла идёт кругом голова...

https://github.com/slowpeek/hddtemp

Был я на этой страничке, но «руки не дошли».
Сейчас дошли. Красиво:

./hddtemp-lt
/dev/sda  KINGSTON SA400M8/120G  54
/dev/sdb  TOSHIBA HDWL120        34
/dev/sdc  SAMSUNG HD105SI        36
/dev/sdd  TOSHIBA MQ04UBF100     39
/dev/sde  HGST HUS726040ALE614   52
/dev/sdf  HGST HTS541075A9E680   38
/dev/sdg  ST1000LM035-1RK172     42
/dev/sdh  TOSHIBA MG04ACA400E    53

Но мне мой «кадавр» больше нравится:
# ./dtemp.sh
(-1)Onboard ssd:
(0)M2 Kingston 128g ssd: 54
(1)3.5 Hitachi 4T: 52
(2)3.5 Toshiba 4T: 53
(3)3.5 Samsung 1T: 36
(4)2.5 Hitachi750G: 37
(5)2.5 Toshiba 2T: 34
(6)USB3-2.5 Toshiba 1T: 40
(7)USB3-2.5 Transcend 1T: 42 42

n0mad ★★★
() автор топика
Последнее исправление: n0mad (всего исправлений: 1)
Ответ на: комментарий от n0mad

https://github.com/slowpeek/hddtemp

зобавно, когда чтобы получить пару цыфер труёвые девелоперы сквозь пальцы смотрят на екзек из екзека из шелла парсингом вывода еще одного екзека )

а на молодых мокак которые запускают электроны вокруг браузера чтобы нарисовать текстовое поле смотрят презрительно )))

anonymous
()
Ответ на: комментарий от anonymous

а на молодых мокак которые запускают электроны вокруг браузера чтобы нарисовать текстовое поле смотрят презрительно )))

Мне кажется между Джавой и Шеллом - колоссальная пропасть!

n0mad ★★★
() автор топика
Ответ на: комментарий от anonymous

дело не в объеме памяти, а в подходе )

Где я писал про память?
С моей точки зрения - колоссальная пропасть в другом.
Джава исполняется на клиенте, а шелл скрипт на сервере!

n0mad ★★★
() автор топика
Ответ на: комментарий от n0mad

/dev/sdc: SAMSUNG HD105SI: S.M.A.R.T. недоступен

Однако вспомнил что есть лайфхак:

# hddtemp SATA:/dev/sdc
/dev/sdc: SAMSUNG HD105SI: 36°C

Но он не работает с масками типа /dev/sd?

n0mad ★★★
() автор топика
Последнее исправление: n0mad (всего исправлений: 1)
Ответ на: комментарий от anonymous

Джава исполняется на клиенте,

джава исполняется везде!

Я считаю что в контексте: «а на молодых мокак которые запускают электроны вокруг браузера чтобы нарисовать текстовое поле смотрят презрительно )))» - имеется ввиду именно Джава, или даже Джаваскрипт на клиенте.

а шелл скрипт на сервере!

запущу шелл на клиенте, недорого )

В данном случае он станет сервером.

n0mad ★★★
() автор топика