Как получить уведомление об ошибках ECC в Linux?
Как получить уведомление, когда машина Linux, оснащенная памятью ECC, распознает сбой памяти? Меня интересуют как исправимые, так и неисправимые ошибки.
- если сообщение пишется в dmesg / syslog, это уже нормально, но я бы хотел знать, что искать
- установка дополнительных демонов (например, smartmontools для жестких дисков) приемлема
- Мониторинг Nagios / Icinga был бы другим путем
- не все машины для мониторинга имеют IPMI
Интересующие системы имеют платы Supermicro (X9SCM-F), что касается микросервера HP N54L. Мне просто любопытно, но меня это не особо волнует. Все системы работают под управлением Debian или Ubuntu Linux.
3 ответа
Ядро Linux поддерживает функции обнаружения и исправления ошибок ( EDAC) некоторых чипсетов. В поддерживаемой системе с ECC статус вашего контроллера памяти доступен через sysfs:
/sys/devices/system/edac/mc
Дерево каталогов в этих местах должно соответствовать вашему оборудованию, например:
/sys/devices/system/edac/mc/mc0/csrow2/power
/sys/devices/system/edac/mc/mc0/csrow0/power
/sys/devices/system/edac/mc/mc0/dimm2/power
/sys/devices/system/edac/mc/mc0/dimm0/power
/sys/devices/system/edac/mc/mc1/power
...
В зависимости от вашего оборудования, вам, возможно, придется явно загрузить нужный драйвер edac, ср.:
find /lib/modules/$(uname -r) -name '*edac*'
edac-utils
Пакет предоставляет интерфейс командной строки и библиотеку для доступа к этим данным, например:
edac-util -rfull
mc0:csrow0:mc#0memory#0:CE:0
mc0:csrow2:mc#0memory#2:CE:0
mc0:noinfo:all:UE:0
mc0:noinfo:all:CE:0
mc1:noinfo:all:UE:0
mc1:noinfo:all:CE:0
Вы можете настроить какую-то работу cron, которая периодически вызывает eac-util
и передает результаты в вашу систему мониторинга, где вы можете настроить некоторые уведомления.
В дополнение к этому, работает mcelog
это вообще хорошая идея. Зависит от системы, но неисправимые / исправимые ошибки ECC, скорее всего, также регистрируются как исключение машинной проверки ( MCE). Я имею в виду, что даже краткие периоды дросселирования процессора из-за более высокой температуры сообщаются как MCE.
Как упоминалось другим автором
mcelog
устарел и заменен на
rasdaemon
. Я написал о том, как установить и настроить его во многих дистрибутивах Linux, включая инструкции по правильной установке меток DIMM.
В
rasdaemon
пакет был создан как замена
edac-tools
, а новые ядра даже не поддерживают
edac-tools
или же
mcelog
.
Обновление драйверов ядра Linux EDAC изменило способ управления счетчиками ошибок памяти в пользовательском пространстве, поэтому
edac-tools
и
mcelog
фактически устарели.
mcelog
будет следить за контроллером памяти и сообщать об ошибках памяти в системный журнал, а в некоторых конфигурациях может отключать плохие страницы памяти. Это, конечно, в дополнение к его обычному использованию для мониторинга исключений проверки компьютера и множества других аппаратных ошибок.
В большинстве дистрибутивов Linux есть служба, настроенная для ее запуска в качестве демона, например, для EL 6:
chkconfig mcelog on
service mcelog start
Это зависит от вашего серверного оборудования. Система Whitebox или Supermicro справится с этим иначе, чем Dell, HP или IBM...
Одна из дополнительных возможностей высокопроизводительных серверов заключается в том, что существует уровень интеграции оборудования и ОС. Более качественные серверы сообщат о том, что вы ищете, в составе агентов управления и / или решения для внеполосного управления (ILO, DRAC, IPMI).
Вы должны использовать инструменты, встроенные в вашу аппаратную платформу.
Выдержка из серверов HP ProLiant под управлением Linux и агентов управления HP:
Trap-ID=6056
ECC Memory Correctable Errors detected.
а также
Trap-ID=6052
Advanced ECC Memory Engaged
или более серьезный
Trap-ID=6029
A correctable memory log entry indicates a memory module needs to be
replaced.
или самое худшее... Игнорирование ошибки в течение 6 дней, пока не произойдет сбой сервера из-за плохой оперативной памяти
0004 Repaired 22:21 12/01/2008 22:21 12/01/2008 0001
LOG: Corrected Memory Error threshold exceeded (Slot 1, Memory Module 1)
0007 Repaired 02:58 12/07/2008 02:58 12/07/2008 0001
LOG: POST Error: 201-Memory Error Single-bit error occured during
memory initialization,
Board 1, DIMM 1. Bank containing DIMM(s) has been disabled.
0008 Repaired 19:31 12/08/2009 19:31 12/08/2009 0001
LOG: ASR Detected by System ROM
Они были зарегистрированы, а также были отправлены SNMP-ловушки и электронные письма.
В общем, вы увидите исключения машинной проверки в кольцевом буфере ядра, так что вы можете проверить dmesg
или запустите mcelog. В моем опыте с Supermicro gear без IPMI, который не ловил все, и у меня все еще были ошибки ОЗУ, проскальзывавшие сквозь трещины и приводившие к сбоям. К сожалению, это привело к устаревшим политикам выгрузки оперативной памяти перед развертыванием системы.