web-dev-qa-db-ja.com

LinuxでECCエラーを通知するにはどうすればよいですか?

ECCメモリを搭載したLinuxマシンがメモリ障害を認識した場合、どのように通知されますか?修正可能なエラーと修正不可能なエラーの両方に興味があります。

  • メッセージがdmesg/syslogに書き込まれる場合、これはすでに問題ありませんが、何を探すべきか知りたいです
  • 追加のデーモン(ハードドライブのsmartmontoolsなど)のインストールは許容されます
  • Nagios/Icingaモニタリングはもう1つの方法です
  • 監視対象のすべてのマシンにIPMIがあるわけではありません

興味のあるシステムには、Supermicroボード(X9SCM-F)があります。HPN54Lマイクロサーバーに関しては、私は単なる好奇心ですが、あまり気にしないでください。すべてのシステムでDebianまたはUbuntu Linuxが実行されています。

25
Jens Erat

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

定期的にeac-utilを呼び出し、その結果をモニタリングシステムにフィードする何らかのcronジョブを設定して、通知を設定できます。

それに加えて、一般的に mcelog を実行することをお勧めします。システムによって異なりますが、修正不可能なECCエラーは、マシンチェック例外( [〜#〜] mce [〜#〜] )として報告される可能性があります。つまり、高温によるCPUスロットリングの短い期間でさえ、MCEとして報告されます。

6
maxschlepzig

mcelogはメモリコントローラーを監視し、 メモリエラーイベントを報告 をsyslogに送信します。一部の構成では オフラインの不良メモリページ を実行できます。もちろん、これは、マシンチェックの例外やその他のさまざまなハードウェアエラーを監視するための通常の使用に加えてです。

ほとんどのLinuxディストリビューションには、デーモンとして実行するように設定されたサービスがあります。 EL 6の場合:

chkconfig mcelog on
service mcelog start
10
Michael Hampton

これはサーバーのハードウェアに依存します。ホワイトボックスまたはSupermicroシステムは、Dell、HP、またはIBMとは異なる方法でこれを処理します...

ハイエンドサーバーの付加価値機能の1つは、ハードウェア/ OS統合のレベルがあることです。より良いサーバーは、管理エージェントや帯域外管理ソリューション(ILO、DRAC、IPMI)の一部として探しているものを報告します。

ハードウェアプラットフォーム固有のツールを使用する必要があります。

LinuxおよびHP管理エージェントを実行しているHP ProLiantサーバーからの抜粋:

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.

または最悪の場合...不良RAMが原因でサーバーがクラッシュするまで、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 を実行します。 IPMIなしのSupermicroギアでの私の経験では、それはすべてをキャッチしませんでした、そして私はまだRAMエラーが亀裂をすり抜けて停止を引き起こしました。残念ながら、これは archaic = RAM=バーンインポリシー システム導入前。

7
ewwhite

rasdaemonパッケージはedac-toolsの代わりとして作成され、新しいカーネルはedac-toolsまたはmcelogさえサポートしていません。

EDAC Linuxカーネルドライバーの更新により、ユーザー空間でのメモリエラーカウンターの管理方法が変更されたため、edac-toolsおよびmcelogは実質的に非推奨になりました。

3
spaceman spiff

別のポスターで言及されているように、mcelogは非推奨であり、事実上rasdaemonに置き換えられています。多くのLinuxディストリビューションでDIMMラベルを適切にセットアップする手順を含めて、インストールおよび構成する方法について writeup を作成しました。

0
gabriele