2006年06月14日

そのメモリ、捨てる前に 〜EDACでECCエラーをキャッチ〜

はてなブックマークに登録

かたちあるものいつかは壊れます。メモリモジュールも例外じゃありません。

DSAS はサーバが200台近くあり、複数枚メモリを積んでいるサーバもあるのでメモリの数はそれ以上です。これだけメモリがあると、どれかが壊れる確率はそれなりに・・・・

と、前回のパクリはこのくらいにしてですね(^^;、ディスクは壊れると非常にわかりやすいログを吐いてくれたり、 SMART で簡単に状態をチェックできたりしますが、メモリが壊れた場合はちとやっかいです。いきなり固まったり電源が落ちたり挙動不審になったりと、全く予測不能な症状を引き起こしてしまいます。このような場合、メモリ不良を疑って BIOS でログを確認するとか、長時間かけて診断ツールかけたりしないとなかなか原因の特定に至らないので、原因不明なまま眠れない日々が続いてしまいます。

Linux でメモリエラーを検出するには、「 NMI 関連のログがでたらメモリを疑ってみる」くらいしか思いつかなかったのですが、Linux Kernel 2.6.14-rc5-mm1EDAC (旧Bluesmoke) が組み込まれたようで、2.6.16 のソースツリーにも含まれているようです。

これは、対応しているメモリコントローラをつかっているマシンにおいて、ECC エラーをハンドリングしてくれるものだそうで、ECC エラーが発生したら強制的にカーネルをパニックさせる等の芸当ができるようです。

まあ、壊れたメモリが手元にないので動作検証しにくいのが難点ですが、ここによるとメモリの12番プレートをマスクすると意図的にビットエラーを起こすことができるっぽいですね。

ということで、実際にやってみたところ、


kernel: MC0: CE page 0x1f405, offset 0x0, grain 4096, syndrome 0xc1, row 0, channel 1, label "": i82875p CE



こんなログが確認できました。

EDAC が対応してるマシンを使っている場合は、有効にしておくと良いかもしれません。
klab_gijutsu2 at 23:01│Comments(0)TrackBack(0)

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
Blog内検索
Archives
このブログについて
DSASとは、KLab が構築し運用しているコンテンツサービス用のLinuxベースのインフラです。現在5ヶ所のデータセンタにて構築し、運用していますが、我々はDSASをより使いやすく、より安全に、そしてより省力で運用できることを目指して、日々改良に勤しんでいます。
このブログでは、そんな DSAS で使っている技術の紹介や、実験してみた結果の報告、トラブルに巻き込まれた時の経験談など、広く深く、色々な話題を織りまぜて紹介していきたいと思います。
最新コメント