- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF92:Lm-sensors HOWTO
Материал из Linuxformat.
- Lm-sensors HOWTO Простой способ слежения за состоянием «железа»
Содержание |
Hardware: Следи за работой системы
- Предупрежден – значит, вооружен. Слежение за устройствами – лучший способ предотвратить неожиданный крах системы, утверждает Грэм Моррисон.
Важных причин для отслеживания состояния ваших устройств немало. К примеру, вы «разогнали» свою крутую Linux-машину и должны отслеживать температуру и напряжение на процессоре, чтобы не поджарить его; или втиснули все части компьютера в крошечный корпус, чтобы уместить его под телевизором, и хотите убедиться, что он не сгорит вместе со своим высоким экранным разрешением.
Большинство современных комплектующих, включая центральный процессор, жесткие диски, видеокарты и материнские платы, имеют один-два датчика, и слежение за их показаниями поможет вам создать более стабильную систему – ликвидируя проблемы до их превращения в отказ или утрату данных. Наблюдение за вентилятором позволит превратить замену дорогого устройства в покупку дешевого кулера. Но, пожалуй, самая веская из причин заняться слежкой за устройствами – ведь это же круто! На данном уроке я покажу, как применять продвинутые инструменты для контроля за датчиками вашей материнской платы и других устройств.
Мой первый датчик
За температурой процессора можно следить обычной командой. Дело
в том, что модуль ядра, включенный во многие дистрибутивы Linux,
умеет считывать показания прямо с чипа вашего процессора. Модуль
называется thermal, и при загрузке он добавляет /proc/acpi/thermal_zone в файловую систему /proc. Наберите lsmod |grep thermal
от имени
системного администратора, чтобы узнать, загружен модуль или нет.
Если да, то вы увидите его в списке вместе с модулем processor. Если
нет, попытайтесь набрать modprobe thermal
и загрузить его вручную.
Теперь вы можете смерить температуру вашего процессора, набрав
следующее:
cat /proc/acpi/thermal_zone/THRM/temperature temperature: 40 C
[не во всех дистрибутивах; так, для Mandriva 2007.0 команда будет cat /proc/acpi/thermal_zone/THM/temperature
прим. пер.]
Выведется температура по шкале Цельсия. С тем же успехом вы можете набрать acpi -t
. Проблема обоих этих подходов в том, что они
работают не на всех машинах: модуль thermal может не дружить с
вашим оборудованием, или его поддержка может быть не встроена
в ядро в вашем дистрибутиве. Другая проблема – таким образом вы
узнаете только температуру процессора. А другая информация, вроде температуры материнской платы или насколько быстро вращается вентилятор для предотвращения перегрева, недоступна
[это не совсем так – в каталоге /proc/acpi
есть множество других файлов, доступных при загрузке соответствующих модулей ядра и содержащих, к примеру, степень заряда батареи ноутбука, – прим.ред.].
К счастью, есть решение получше, названное Lm-sensors – монолитный инструмент для слежения практически за всеми датчиками, имеющимися в вашей системе. Это раскидистый набор модулей ядра, файлов конфигурации, GUI для настройки и данных. Не пугайтесь трудных слов: Lm-sensors – настоящая нирвана мониторинга устройств.
Установка Lm-sensors
Ваш дистрибутив должен содержать Lm-sensors в виде установочного пакета. Просто откройте менеджер пакетов и поищите ‘Lm-sensors’. Вы должны увидеть несколько пакетов, включая сам Lm-sensors, отдельную библиотеку (libsensors3) и фоновый демон (sensord), а также несколько графических оболочек для показа сведений, выдаваемых Lm-sensors в виде приборных досок и циферблатов. Но пока просто убедитесь, что необходимый пакет Lm-sensors установлен.
Lm-sensors имеется в менеджере пакетов большинства дистрибутивов; как и демон, протоколирующий показания в фоне.
Все комбинации устройств предусмотреть невозможно, поэтому для работы Lm-sensors требует тщательной настройки. Он должен опросить различные компоненты устройств, проверить сигнатуры доступных датчиков ваших устройств и составить опись оборудования.
Инструмент, точно определяющий, что и где находится, называется sensors-detect. Он запускается из командной строки от имени администратора. Если при его первом запуске (хотя это маловероятно) произойдет ошибка, похожая на ‘No i2c device files found’, поищите на сайте Lm-sensors (http://www.lm-sensors.org) скрипт mkdev.sh. Он создаст недостающие ссылки в вашей файловой системе, потому что Lm-sensors сканирует устройства, только если видит ссылки на них.
Поисковый скрипт задаст пару вопросов, и практически все правильные ответы даны по умолчанию. Например, первый вопрос – хотите ли вы проверять I2C- или Smbus-адаптеры. Это первейшие кандидаты на информацию о датчиках, способные предоставить данные о потреблении энергии и состоянии батарей, если вы используете ноутбук, так что следует ответить «Да». Не беспокойтесь если при первом поиске не выявится ни одного датчика – второй проход выявит недостачу.
На современных компьютерах, весьма вероятно, датчики не обнаружатся, и программе поиска понадобится другой подход. При нем опрашиваются все подключенные к системе устройства, с целью определить, можно ли извлечь какие-либо данные о датчиках из их драйверов. Есть малый шанс краха системы при опросе плохо реализованного драйвера – не забудьте о нем, особенно если ваш свежесозданный в порыве вдохновения шедевр еще не сохранен. Именно по этой причине инструмент поиска датчиков информирует вас о каждом устройстве, которое тестируется в данный момент: если что-то пойдет не так, вы сможете пропустить проблематичное устройство при следующем запуске поискового скрипта. Но как правило, можно без опаски ответить «Да» на все вопросы. Типичный порядок опроса – сначала видеокарта, потом любые датчики на материнской плате, которые могут быть опрошены по шине ISA.
sensors-detect задаст столько вопросов, сколько обнаружит устройств.
По окончании опроса устройств на предмет наличия датчиков, вам будет выдан список найденных датчиков, вместе с модулями, необходимыми Lm-sensors для чтения информации с них. Этот список важен, потому что фрагмент его необходимо перенести в файл конфигурации: там перечислены все драйвера ядра, которые необходимо загрузить до того, как можно будет получать данные с датчиков, и находится он между двумя маркерами #----cut here----. Этот фрагмент нужно вставить в конец вашего файла /etc/modules, чтобы драйвера загружались при запуске вашей машины.
Внесение изменений вполне можно доверить поисковому скрипту, но все же неплохо и проверить файл конфигурации на наличие ошибок. Если у вас не обнаружились заведомо присутствующие датчики, будет полезно обратиться к Интернету. Иногда утилита поиска не распознает ваши датчики, особенно если у вас новые устройства, и вы можете достигнуть большего успеха, скопировав и вставив чьи-то готовые настройки. Почти всегда находится кто-то, уже проторивший для вас дорогу.
Калибровка
В моей тестовой системе по результатам поискового скрипта потребовалось загрузить только три модуля: i2c-viapro, eeprom и it87. Вы можете сделать это вручную (от имени администратора), набрав modprobe и затем имя модуля – то есть опробовать конфигурацию можно без перезагрузки машины. Простейшая команда опроса драйвера называется sensors, и выполнение ее от имени root обычно приводит к выводу одной или двух страниц (см. рисунок). Вывод достаточно сырой: некалиброванный, часто без меток и с ошибками. Но его достаточно, чтобы понять: ваши датчики хоть что-то сообщают.
При корректной настройке Lm-sensors, ввод ‘sensors’ снимет показания со всех аппаратных датчиков вашей системы: обычно на страницу или две.
Файл конфигурации Lm-sensors находится в /etc/sensors.conf. Его следует отредактировать, если вы хотите сделать небрежный вывод команды sensors более точным и читаемым. Но прочесть его не так легко. Чтобы знать, что искать в этом файле, вы сначала должны определить проблемы, способные возникнуть с выводом команды sensors,. Например, температура моей материнской платы и процессора были перепутаны:
M/B Temp: +54°C (low = +15°C, high = +40°C) sensor = thermistor CPU Temp: +41°C (low = +15°C, high = +45°C) sensor = thermistor
Чтобы найти соответствие меток и значений температуры, попытайтесь посмотреть в BIOS’е материнской платы. Большинство современных BIOS выводят список температур многих компонентов, и свя зать температуру от sensors с устройством легко, обнаружив то же число в BIOS. В моем примере BIOS сообщила температуру процессора 54°C, а материнской платы – 41°, ясно показав, что их значения переставлены местами. Вдобавок неправдоподобно, чтобы температура материнской платы была выше температуры процессора, если только плата не полыхает огнем.
Чтобы решить указанную проблему (я не про пожар!), найдите в файле конфигурации место, где датчику присваивается метка CPU Temp. Файл разбит на разделы для каждого поддерживаемого чипсета, и вам следует искать раздел, посвященный модулям и драйверам, кото- рые вы добавили в /etc/modules. На моей машине это означает поиск раздела ‘it87’, а в нем поиск метки CPU Temp. Вот подходящие строки, а далее просто следует поменять местами метки temp1 и temp2:
label temp1 “M/B Temp” label temp2 “CPU Temp”
Если имеются неверно определенные датчики, можете добавить к их записи ‘ignore’, тогда они не будут появляться в результатах, и точно также проигнорировать все неправильно считываемые вентиляторы и напряжения. Для показателя каждого датчика можно установить максимальное и минимальное значения, и при выходе за их пределы система выдаст предупреждение; но это проще настроить в графическом интерфейсе. Покончив с небольшими изменениями, необходимыми для улучшения вывода, сохраните файл и запустите программу sensors вновь, для проверки результата. Вы должны увидеть данные с каждого датчика с правильной меткой и калибровкой. Иногда верные значения можно подобрать только методом проб и ошибок.
Если вместе с Lm-sensors вы установили демон sensord, то, настроив по своему вкусу Lm-sensors, перезапустите его. Воспользуйтесь
инструментом управления службами вашего дистрибутива или наберите /etc/init.d/sensord restart
. Теперь демон будет отслеживать любые
неблагоприятные показания, которые можно найти в файле /var/log/syslog, а обнаруженное слово ‘ALARM’ укажет вам на дурное поведение данного устройства.
SMART жестких дисков
Рано или поздно ваш жесткий диск сломается – вот почему так важно резервировать ваши данные. Но жесткий диск редко ломается мгновенно. Часто в операциях чтения/записи диска число ошибок нарастает в течение нескольких дней или даже недель. ОС автоматически исправляет ошибки, оставляя вас в неведении относительно потенциальных проблем, таящихся в вашей Linux-машине. Поэтому жесткие диски получили индульгенцию на использование инструментов мониторинга, и большинство современных моделей имеют специальные датчики предупреждения неполадок, использующие систему под названием SMART – Self Monitoring, Analysis and Reporting Technology [Технология Самомониторинга, Анализа и Отчета].
Когда SMART пожалуется, что ваш диск сбоит, у вас должно быть достаточно времени на спасение всех важных данных, прежде чем он окончательно выйдет из строя. К сожалению, многие из нас отключают SMART в BIOS после известия, что ее включение приводит к небольшому понижению производительности. Но если вам дороги данные, хранящиеся на диске (а кому нет?), то небольшое снижение производительности – ничто по сравнению с потерями при полном отказе.
SMART хорошо поддерживается в Linux. Вам нужно установить
пакет под названием smartmontools – в нем есть все необходимое для
опроса вашего устройства и сообщения о любых проблемах. После
установки пакета первым делом надо включить SMART на всех совместимых жестких дисках. Для IDE-дисков наберите smartctl -i /dev/hda
, заменив hda файлом-устройством вашего жесткого диска; для
SATA-дисков потребуется добавить -d ata
в каждую используемую
команду smartctl. Если вы не уверены, к какому узлу файловой системы подключено ваше устройство, посмотрите в файле /etc/fstab: там есть список устройств и их точек монтирования.
После ввода команды smartctl вы увидите некую информацию о
вашем устройстве. Две строки будут начинаться со ‘SMART’: первая
показывает, совместим ли ваш диск со SMART, а вторая сообщает,
включен ли SMART. Если включен, можете расслабиться; если нет,
введите smartctl -s on /dev/hda
, чтобы исправить ситуацию.
Вероятно, где-то кто-то имеет почти такое же оборудование, как у вас, так что шансы найти файл конфигурации Lm-sensors для вашего компьютера в Сети весьма велики. Сперва проверьте Lm-sensors wiki: http://www.lm-sensors.org/wiki.
Заведя на вашем диске SMART, разумно выполнить несколько
тестов и убедиться, что он в хорошем состоянии. Наиболее простой
тест – smartctl -H /dev/hda
; в ответ устройство выдает текущий статус
«здоровья». Сообщение ‘Failed’ означает, что велика вероятность кончины вашего диска в ближайшие 24 часа. Но даже если диск прошел
базовый тест, не мешает подвергнуть его испытанию посерьезнее и
убедиться, что все в порядке. SMART имеет мощный арсенал тестов
для проверки работы вашего диска. Прежде всего это короткое самотестирование, по команде smartctl -t short /dev/hda
. После запуска диск начнет самотестирование в фоновом режиме, сообщив приблизительное время завершения в командной строке. Обычно это занимает несколько минут, после чего команда smartctl -l selftest /dev/hda
покажет последние девять результатов. Если все хорошо, вы увидите нечто вроде:
#1 Short offline Completed without error 00% 17825 -
Первая колонка – номер теста, и SMART пытается сохранить как
можно больше результатов тестирования (первыми выводятся самые
недавние). Short offline – тип теста, а следующая колонка показывает
отчет. 00% – это процент оставшегося теста (в данном случае нуль,
поскольку тест завершен), а 17825 – время наработки диска в часах.
Последняя колонка должна содержать первый блок с ошибками,
обнаруженными в тесте. Если вы хотите самотестироваться по максимуму, попробуйте ввести smartctl -t long /dev/hda
. Но знайте: потребуется 95 минут. Если вы не можете столько ждать, введите smartctl -X
,
Утилиты управления SMART сообщат о вашем жестком диске больше, чем прилагаемое к нему тощее руководство.
Естественно, несколько вручную запущенных тестов не способны исчерпывающе проанализировать работу вашего жесткого диска.
Для более практически полезного мониторинга необходимо предусмотреть постоянное слежение за устройством и сообщения обо всех
возникающих ошибках. Это работа демона smartd. Файл его конфигурации называется /etc/smartd.conf, и вам необходимо сначала отредактировать его, чтобы убедиться, что ваш диск правильно настроен.
Синтаксис здесь тот же, что и для утилиты smartctl, и в файле содержится несколько типовых примеров, которые вы можете раскомментировать для себя.
Например, вот исчерпывающая запись для устройства hda:
/dev/hda -a -o on -S on -s (S/../.././02|L/../../6/03)
При этом будут отслеживаться все доступные атрибуты диска и запускаться короткое самотестирование еженощно с 2-х до 3-х и длинный тест каждую субботу с 3-х до 4-х часов ночи. Способ запуска демона зависит от вашего дистрибутива. Большинство систем запускают его автоматически после установки smartctl. Если это не так, можно обычным образом использовать панель настройки ‘Службы’ для запуска smartd или создать соответствующую ссылку в каталоге уровней запуска – наберите runlevel, затем посмотрите в /etc/rc*.d, заменив * вашим уровнем запуска. Любые проблемы автоматически зарегистрируются в вашем файле журнала /var/log/messages, так что придется отслеживать и это – но вы же все равно всегда просматриваете журнал, правда?
Настроив вашу систему слежения за оборудованием, вы можете забыть о нем. И лишь в момент, когда что-то пойдет не так, вы поймете, что усилия, вложенные вами в настройку мониторинга, вознаграждены предупреждением о сбое до потери данных. Пусть даже ничего не сломается, но ведь круто! LXF
Шаг за шагом: Мониторинг датчиков в Gnome
1 Добавим апплет После установки панели датчиков при помощи вашего менеджера пакетов и настройки Lm-sensors, щелкните правой кнопкой на верхней панели Gnome и выберите Добавить на Панель. В разделе System & Hardware [Система & Оборудование] выберите Hardware Sensors Monitor [Монитор датчиков оборудования]. Апплет появится на панели.
2 Иконки по вкусу По умолчанию апплет отображает температуру процессора и материнской платы в виде текста. Это можно изменить, щелкнув правой кнопкой на апплете и выбрав Preferences [Параметры]. Чтобы сменить текст на иконку, используйте опции на вкладке Global Options [Глобальные настройки].
3 Настроим датчики Вкладка Sensors [Датчики] позволит выбрать иконку для каждого датчика, а также подключить другие датчики, настроенные в Lm-sensors. Также можно перекалибровать каждый датчик и настроить оповещение для случаев, когда что-то перегреется или треснет вентилятор.
Создаем свою приборную панель с помощью виджетов
KSensors – прекрасный инструмент KDE для создания собственного приложения-монитора. KSensors использует Lm-sensors для получения необработанных данных, но позволяет привязать эти данные к выбранным вами виджетам и создать свою собственную приборную панель для имеющихся в вашей системе датчиков. Правый щелчок в исходно пустом окне выведет панель настройки со списком всех распознанных датчиков, и вы сможете выбрать любой из них для добавления на приборную панель или в системный лоток, точно определив его внешний вид. Среди виджетов – вольтметры, копии ЖК-панелей и термометры. Как и в других приложениях-«манометрах», можно перекалибровать значения каждого датчика, а также установить уровни оповещения.
Если вам кажется, что KSensors несколько перегружен, попробуйте SuperKaramba. Здесь имеется несколько встроенных виджетов для слежения за типовыми датчиками, размещаемых на фоне рабочего стола. Настроек не требуется, и места на рабочем столе требуется очень мало.
KSensors – прекрасная графическая оболочка для данных Lm-sensors, позволяющая создавать собственную приборную панель