Linux - начинающим. Как узнать температуру процессора и накопителей

  • Автор:

Linux-temperature-cpu-hdd-000.pngПришло лето, а вместе с ним и жаркие деньки, но в это время администраторы думают вовсе не о пляже, а о температурном режиме обслуживаемого оборудования. Перегрев может негативно сказываться как на производительности, так и на сроке службы устройств. Как понять, требуется ли дополнительное охлаждение основным компонентам вашего компьютера или сервера если вы работаете под управлением Linux? Очень просто и сегодня мы расскажем о простых и надежных утилитах, позволяющих получить информацию о состоянии оборудования даже если вам доступна только командная строка.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Lm-sensors - получаем информацию с датчиков компьютера

Информацию о температуре, напряжении, оборотах вентилятора и не только можно получить от датчиков компьютера, набор данных, которые можно получить таким образом может достаточно широко варьироваться, в зависимости от наличия самих датчиков и их поддержки со стороны Linux, а поможет нам в этом пакет lm-sensors, для его установки выполните:

apt install lm-sensors

Теперь можно получить данные с доступных датчиков:

sensors

Как мы уже говорили, объем получаемых данных может быть сильно разный, например, такой:

Linux-temperature-cpu-hdd-001.pngИли такой:

Linux-temperature-cpu-hdd-002.pngПоследний вариант, конечно, довольно тоскливый и не сообщает нам ничего лишнего, кроме температуры процессора. Но не будем раньше времени впадать в уныние. Lm-sensors в состоянии "из коробки" поддерживает ограниченный набор датчиков, но знает он гораздо больше. Поэтому выполним поиск доступных датчиков командой:

sensors-detect

Последовательно отвечаем на вопросы и смотрим какие еще датчики обнаружила программа, в нашем случае нашелся Nuvoton NCT6795D:

Linux-temperature-cpu-hdd-003.pngПо завершению поиска будет подведен краткий итог: будут перечислены найденный датчики и указаны имена нужных драйверов, которые будет предложено добавить в /etc/modules для автоматической загрузки при старте системы, с этим следует согласиться.

Linux-temperature-cpu-hdd-004.pngНо перезагрузить систему не всегда представляется возможным, поэтому просто загрузим нужные модули руками, все что нам нужно - точное имя драйвера, на скриншоте мы выделили его желтым, после чего выполним команду:

modprobe nct6775

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

lsmod | grep nct6775

Или еще раз выполните команду

sensors

и убедитесь, что набор информации изменился и стал гораздо богаче.

Linux-temperature-cpu-hdd-005.pngНо не все датчики одинаково полезны, некоторые вместо реальных значений могут показывать температуру на Марсе. Почему так? Потому что единый стандарт на это отсутствует и все зависит от конкретного производителя и модели оборудования, в некоторых случаях для получения реальных значений к полученной информации нужно применять поправки, в других - просто игнорировать.

Температура накопителей через Smartmontools и Hddtemp

Если исходить из применяемых технологий записи и хранения данных накопители можно подразделить на два типа: устройства магнитной записи и твердотельные. Жесткие диски крайне чувствительны к рабочим температурам, высокая температура приводит к повышенному износу механики и ускоренной деградации магнитного покрытия и головок. Большинство производителей не рекомендуют работу при температурах выше 50 градусов, а температуру в 65 градусов считают критической.

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

Классические диски с интерфейсом SATA не умеют непосредственно передавать показания датчиков, для доступа к информации о состоянии диска используется специальная технология S.M.A.R.T., как правило утилита для работы со S.M.A.R.T. бывает установлена, если же нет, то самое время это сделать:

apt install smartmontools

Для получения информации о температуре запросим список атрибутов накопителя и перейдем к атрибуту с номером 194:

smartctl -A /dev/sda

Linux-temperature-cpu-hdd-006.png К сожалению, здесь тоже нет единого стандарта и разные диски по-разному отдают информацию о температуре, smartmontools умеет правильно интерпретировать возможные варианты и показывает реальное значение температуры в градусах Цельсия в колонке RAW_VALUE. Если же вы используете иные инструменты для доступа к S.M.A.R.T., то вам придется обратиться к документации на вашу модель диска для правильной расшифровки результата.

Также может быть различен набор отдаваемой информации, например, Toshiba сообщает не только текущую информацию, но и минимальную и максимальную зафиксированные для этого накопителя (пример на скриншоте выше), другие модели отдают только актуальную температуру. Ряд недорогих китайских SSD может не иметь термодатчика вообще, отдавая в S.M.A.R.T. либо заранее зашитое значение (обычно 40 градусов), либо полную ерунду.

Еще одним ограничением S.M.A.R.T. является округление температуры до целых значений.

Если же вас интересует только температура, то можете поставить специализированную утилиту hddtemp, она не делает ничего нового, точно также читает S.M.A.R.T., но выдает из него единственное значение - температуру диска. Она также есть в репозиториях и для ее установки выполните:

apt install hddtemp

Синтаксис также схожий:

hddtemp /dev/sda

В выводе вы увидите модель диска и его температуру.

Linux-temperature-cpu-hdd-007.pngЧем именно пользоваться? Решайте сами, это Linux, здесь к одной цели может вести множество путей и все из них будут правильными.

Особенности NVMe накопителей

На сегодняшний день SATA интерфейс устарел и применяется только в целях обратной совместимости в бюджетных моделях SSD дисков. Все современные накопители выпускаются с поддержкой NVMe, следует помнить, что NVMе - это протокол, для подключения к ПК такие диски используют шину PCIe, а одним из возможных форм-факторов является разъем M.2.

Подключение через PCIе дает возможность прямого доступа к датчикам таких накопителей и получить значения температуры можно через lm-sensors, при этом все NVMe диски поддерживают технологию S.M.A.R.T. и получать данным с них можно двумя альтернативными путями.

Linux-temperature-cpu-hdd-008.pngКак видим, датчик точнее - он выдает температуру с точностью до десятых градуса и быстрее реагирует на ее изменения, в то время как S.M.A.R.T. показывает ее усредненное и округленное значение. Поэтому если есть возможность использовать датчик, то следует опираться на его показания.

Почему мы сделали оговорку "есть возможность"? Потому что доступ к датчику не является чем-то обязательным, все зависит от модели диска и материнской платы, но такая возможность у NVMe накопителей есть и ее следует иметь ввиду.

Как видим, контролировать значения температуры и не только ее в Linux совсем несложно и консоль не должна вас пугать, в умелых руках это удобный и мощный инструмент, владеть которым должен каждый администратор.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments