ECCメモリを搭載したLinuxマシンがメモリ障害を認識した場合、どのように通知されますか?修正可能なエラーと修正不可能なエラーの両方に興味があります。
興味のあるシステムには、Supermicroボード(X9SCM-F)があります。HPN54Lマイクロサーバーに関しては、私は単なる好奇心ですが、あまり気にしないでください。すべてのシステムでDebianまたはUbuntu Linuxが実行されています。
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として報告されます。
mcelog
はメモリコントローラーを監視し、 メモリエラーイベントを報告 をsyslogに送信します。一部の構成では オフラインの不良メモリページ を実行できます。もちろん、これは、マシンチェックの例外やその他のさまざまなハードウェアエラーを監視するための通常の使用に加えてです。
ほとんどのLinuxディストリビューションには、デーモンとして実行するように設定されたサービスがあります。 EL 6の場合:
chkconfig mcelog on
service mcelog start
これはサーバーのハードウェアに依存します。ホワイトボックスまたは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=バーンインポリシー システム導入前。
rasdaemon
パッケージはedac-tools
の代わりとして作成され、新しいカーネルはedac-tools
またはmcelog
さえサポートしていません。
EDAC Linuxカーネルドライバーの更新により、ユーザー空間でのメモリエラーカウンターの管理方法が変更されたため、edac-tools
およびmcelog
は実質的に非推奨になりました。
別のポスターで言及されているように、mcelog
は非推奨であり、事実上rasdaemon
に置き換えられています。多くのLinuxディストリビューションでDIMMラベルを適切にセットアップする手順を含めて、インストールおよび構成する方法について writeup を作成しました。