Назад | Перейти на главную страницу

Как я могу получать уведомления об ошибках ECC в Linux?

Как я могу получить уведомление, когда машина Linux, оснащенная памятью ECC, распознает сбой памяти? Меня интересуют как исправимые, так и не исправляемые ошибки.

Интересующие системы имеют платы Supermicro (X9SCM-F), относительно микросервера HP N54L мне просто любопытно, но мне все равно. Все системы работают под управлением Debian или Ubuntu Linux.

mcelog будет контролировать контроллер памяти и сообщать о событиях ошибок памяти в системный журнал, а в некоторых конфигурациях может автономные страницы с плохой памятью. Это, конечно, в дополнение к его обычному использованию для отслеживания исключений проверки машины и множества других аппаратных ошибок.

В большинстве дистрибутивов Linux есть служба, настроенная для запуска в качестве демона, например для EL 6:

chkconfig mcelog on
service mcelog start

Это зависит от вашего серверного оборудования. Белый ящик или система Supermicro справятся с этим иначе, чем Dell, HP или IBM ...

Одна из дополнительных функций высокопроизводительных серверов заключается в том, что существует уровень интеграции оборудования и ОС. Серверы Nicer сообщают, что вы ищете как часть агентов управления и / или решения для внешнего управления (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 без IPMI, он не улавливал все, и у меня все еще возникали ошибки ОЗУ, проскальзывающие через трещины и вызывающие сбои. К сожалению, это привело к архаичные политики выгорания RAM перед развертыванием системы.

В Ядро 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.

В rasdaemon пакет был создан как замена edac-tools, а новые ядра даже не поддерживают edac-tools или mcelog.

Обновление драйверов ядра Linux EDAC изменило способ управления счетчиками ошибок памяти в пользовательском пространстве, поэтому edac-tools и mcelog фактически устарели.

Как упоминалось другим автором mcelog устарел и заменен на rasdaemon. я сделал записать о том, как установить и настроить его во многих дистрибутивах Linux, включая инструкции по правильной установке меток DIMM.