/var/log/messages(syslog)の出力先がいっぱいになるとクラスタが起動しないby ORACLE
/var/log/messagesのmessageファイルがでかくなりすぎて、ディスクの使用量がいっぱいになりました。
途中まで起動しようとした形跡はあります。
いくつかのクラスタ系プロセスが上がってはいます。
そして、落とすこともできない。
にっちもさっちもいかないとはこのこと。。。
サーバを再起動しても同じでした。
なぜ?
これが、いつまでたっても起動完了にならない。
じーっとしている。
そうこうしている間に、エラーでPSU当てるOPatchautoが死亡。
びびる。
同じコマンドでもう一度PSUを当てるが、エラーが出てダメ。
泣き入る。
最悪、バックアップからリストアかなあ。。。
ふと作業端末を離れ、コンソールからサーバにログインする。
すると、「ディスクいっぱいだよ」というメッセージが。
dfコマンドで確認すると、/var/logのディスクの使用率が100%。
そこに出力されているメッセージファイルが70GByte!
「なにい!?」
これだけ大きいとcatで開けないので、下1000行をtailで見る。
そこには、ノード2からノード1へのインターコネクトを使った通信をDROPするメッセージが大量に。
ノード2のクラスタが上がらなかったのは、インターコネクトの通信がファイアウオールでブロックされていたからか。。。
そして、インターコネクト通信をブロックしたという旨の大量の/var/log(syslog)が出力され、それがディスクを圧迫した。
遂には、容量不足で/var/log(syslog)に書き込むことが出来なくなった。
だが、/var/log(syslog)に書き込むことが出来なければ、起動することはできない。
以下を行えば、クラスタを起動できると予想。
・/var/log(syslog)」を消して空き領域を作る。
・iptablesの要塞化にインターコネクトのACCEPTを追加する。
iptablesの方は、すぐできた。
/var/log(syslog)ほうは、messageファイルを消しても容量が空かない。
messageサービスがmessageファイルを掴んでいるから、ファイルが消えたように見えてるだけで、容量が実際は解放されていないことが分かった。
messageサービスを落とすことで、容量が空いた。
この状態で、ノード2のクラスタを起動!
無事復活。
OPatchautoが途中で死んだから、ちゃんとパッチが当たってるか心配。
だからlsinventoryで確認。
よかった、当たってた。
いやあ、肝を冷やしましたとさ。
しかし、ORACLEの知識だけじゃ対応できないっすね。
こう言うことが起こると。
OSの設定を疑う。
一つずつ冷静に切り分けて行けば、たどり着けるとは思います。
でも、何か起きるとやっぱ慌てる!