Linux で kernel panic に備えた設定をしてみるが・・・

結構有名な設定項目なのでご存じの方は多いと思いますが、Linux は /proc/sys/kernel/*** をいぢくることで、実行中のカーネル・パラメーターを変更する事が可能です。「IBM Linuxを即席で管理する - Japan」あたりに解りやすい説明があります。以下引用。

Linuxでは、システムの実行中にカーネルやシステムをリブートすることなく管理者が非常に整然とした方法でカーネルを変更できるようになっています。それには/proc という仮想ファイルシステムが使用されます。
/proc ファイルシステムのごく基本的な機能は、実行中のカーネルの状況を確認することです。この機能を利用することで、パフォーマンスの監視、システム情報の調査、システム構成の確認や変更といったことが可能になります。
このファイルシステムが仮想ファイルシステム と呼ばれるのは、それが本当はファイルシステムでも何でもないからです。それは、カーネルが作成するマップで、通常のファイルシステム構造に結合され、ユーザーがファイルシステム構造にアクセスできるようにします。

ここで重要なポイントはリブート無しで即座に設定が反映されることです。さて、話をタイトルの内容に戻して、Linux ってか、OS なんて所詮フリーズするものと僕は考えています。従って、フリーズ時に如何に瞬時に復旧させるかが重要なサーバの場合は、設定でなんとかなるのなら設定すべきと考えてます。

- スポンサーリンク -

って考えのもとに、一部のサーバに対しては、カーネルパニック時に瞬時にリブートがかかるような設定をしています。

Linux の場合、

/proc/sys/kernel/panic 

ってパラメータでカーネルパニック時の動作を制御することができます。このパラメータは、カーネルパニックに陥ったときにシステムがリブートするまでに待機する秒数を指定することができます。デフォルトの0秒の場合、リブートせずそのまま待機という意味になり、いわゆるフリーズ状態を保つことになります。

なので、ここの値を以下のように変更すれば、5秒後にリブートさせることとかできます。また、起動ファイルにもパラメータ設定を実行するスクリプトを追加して、リブート後も設定を永続化するようにしています。

echo '
if [ -w /proc/sys/kernel/panic ]; then
    echo 5 > /proc/sys/kernel/panic
fi 
' >>  /etc/rc.d/rc.local
echo 5 > /proc/sys/kernel/panic

この設定をすることのデメリットとして、フリーズ時の画面表示メッセージとかが見れなくなることです。ひょっとすると重要なメッセージが表示されているかもしれません。もっとも、/var/log/message に描かれているものとほぼ同じ無いようなはずなので、それほどデメリットというほどでも無いかもしれませんが。。。

これで、概ねのソフト的な障害によるフリーズの障害復旧はかなり時間を短縮できると思います。

が・・・この記事のタイトルの意味するところは、ハードウェア的、もっと言えば、マザーボードやCPUの不良によりフリーズする場合もあります。このときは、core ファイルや /var/log/message に何か書き込む前に完全にフリーズするのでログがない!って状況がほとんどで、非常に障害切り分けが困難です。

こんな場合は、僕の経験上ではログにも何にも残ってないので、ハードウェア交換に行き着きます。


--- さて、ここからはどうでも良い単なる日記 ---


で、ここ10月に入ってから1台のサーバがどうも調子が悪くって、3回もフリーズしてまして本日めでたく?筐体交換となりました。サポート期限超えてましたが、購入してから1年ちょっとなので、結構無理言ってベンダーに初期不良扱いで無償交換してもらいました。

ココまでは良かった。予定では2時間程度で作業が完了するはずだった・・・。

11:30> ベンダーが来る前に、いろいろ下準備。障害でてるサーバを切り離し準備。

12:00> 新しい筐体が届く。外見は全く同じサーバ。中を開けてビックリ! Σ(゚Д゚;エーッ!

DVC00027.JPGDVC00029.JPG

な、なんかチップセット違くないっすか?新バージョンですか?

確認したら、違う型番でした・・・orz

14:00> 取りあえず、現状のサーバから新しい筐体でも流用するパーツだけを取り外す。

DVC00028.JPG

14:30> 目的の筐体が届く。パーツを黙々と新しい筐体へ追加していく。

んっ!? 新しく届いたCPU、なんかバージョンダウンしてるんっすけど・・・Opteron 252 なはずが、250 ・・・orz

15:00> 何故か、発注時に別の発注とてれこになったらしい。ってことは、同じく苦労している人がもう1人いるバズ。

16:00> 今度こそ正しいCPUが届くも、微妙にネジとかだけ形状が変わっていて、元のサーバからいろいろかき集める。

16:30> 組みあがったので電源入れてチェッカーCDをブートするもあえなく撃沈。ってかCD読みに行かない。

17:00> なんとかなってチェッカーかける。20分くらいで問題ないことを確認。

17:30> 復旧したかに見えたが、オンボードの Ether なので、MAC アドレスとか変更になって eth0 とか立ち上がってこない。

シコシコ設定変更。

18:00> 復旧。まぁ冗長化していたので業務上の支障は最小限に抑えることができたと思うのですが・・・


激しく疲れた・・・関係したみなさん、お疲れ様でした。。。

- スポンサーリンク -