解決策 1:
mcelog
メモリ コントローラを監視し、メモリ エラー イベントを syslog に報告します。一部の構成では、不良メモリ ページをオフラインにすることができます。もちろん、これは、マシン チェックの例外やその他のさまざまなハードウェア エラーを監視するための通常の使用に加えて使用されます。
ほとんどの Linux ディストリビューションには、デーモンとして実行するように設定されたサービスがあります。 EL 6 の場合:
chkconfig mcelog on
service mcelog start
解決策 2:
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 として報告されます。
解決策 3:
これは、サーバー ハードウェアによって異なります。ホワイトボックスまたは 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 トラップと電子メールが送信されました。
一般に、カーネル リング バッファーに Machine Check Exceptions が表示されるため、dmesg
を確認できます。 または mcelog を実行します。 IPMI なしの Supermicro ギアでの私の経験では、すべてを捉えることはできませんでした。それでも、RAM エラーが亀裂をすり抜けて機能停止を引き起こすことがありました。残念ながら、これはシステム展開前の時代遅れの RAM バーンイン ポリシーにつながりました。
解決策 4:
rasdaemon
パッケージは edac-tools
の代替として作成されました 、そして新しいカーネルは edac-tools
さえサポートしていません または mcelog
.
EDAC Linux カーネル ドライバーの更新により、ユーザー空間でのメモリ エラー カウンターの管理方法が変更されたため、edac-tools
そして mcelog