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

23

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

  • если сообщение пишется в dmesg / syslog, это уже нормально, но я бы хотел знать, что искать
  • установка дополнительных демонов (например, smartmontools для жестких дисков) приемлема
  • Мониторинг Nagios / Icinga был бы другим путем
  • не все машины для мониторинга имеют IPMI

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

Йенс Эрат
источник
Пожалуйста, опишите тип и марку / модель сервера, версию дистрибутива ОС и любые другие важные сведения об оборудовании.
ewwhite
2
Я даже не знал, что об этом сообщили ...
Halfgaar
Запуск mcelogво время мониторинга системного журнала, кажется, путь.
Йенс Эрат

Ответы:

6

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.

maxschlepzig
источник
9

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

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

chkconfig mcelog on
service mcelog start
Майкл Хэмптон
источник
Больше не поддерживается Ubuntu. Установка дает ошибки.
ДимиДак
@DimiDak bugs.launchpad.net/ubuntu/+source/mcelog/+bug/1752251
Майкл Хэмптон
Да, спасибо, я видел это, если я не ошибаюсь, он говорит об Ubuntu18, но он также не работает на Ubuntu 14.
ДимиДак
@DimiDak Это другая проблема, и здесь она не актуальна. Вы можете задать новый вопрос об этом, если вам нужна помощь.
Майкл Хэмптон
Парень, который разместил вопрос, говорит: «Все системы работают под управлением Debian или Ubuntu», и ваш ответ на это не работает. Так что это довольно актуально ...
DimiDak
6

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

ewwhite
источник