土曜深夜帰宅すると、作業機がネットに繋がってないもんで、
まーたルータが落ちたかコンチキショーと思ったけどルータさんは健康体。

メインサーバがなにやら見たくもないようなエラーを吐いて固まってる。

image

あーあー。コイツは快調かと思いきやだいたいこんぐらいで固まるな。1~2ヶ月ぐらい。

そして困ったことにこのエラー、コンソールにだけ吐いててmessagesとかに載ってない。
ブロガ泣かせだねぇ。

最近始めたブログなので、せっかくなので頑張ってテキストに起こしてみる。

Oops: 0000
CPU: 0
EIP: 0010:[<c014e8bb>] Tainted: P
EFLAGS: 00010083
eax: dc41a580 略
---数行略---
Process httpd (pid: 21635, stackpage=df5f9000)
Stack: c3296aa0 略
---数行略---
Call Trace : [<c029c384>] 略
---数行略---
Code: 8b 44 81 略
<1> Unable to handle kernel paging request at virtual address 33278be8
printing eip:
c014e8bb
*pde = 00000000

とゆーやつと、

Oops: 0000
CPU: 0
EIP: 0010:[<c014e8bb>] Tainted: P
EFLAGS: 00010083
eax: dc41a580 略
---数行略---
Process httpd (pid: 21635, stackpage=df5f9000)
Stack: c02b5c90 略
---数行略---
CallTrace: [<c02b5b90>] 略
---数行略---
Code: 8b 44 81 18 略
<0>Kernel panic: Aiee, killing interrupt handler!
In interrupt handler - not syncing
<6>keyboard: unkown scancode e0 7a

ふぃ~。よく頑張った俺。エラー全文手打ちした。

「Oops」ってナニ?
ウーーーーープス!
なんだよそれ。

で、よくわからんのでグーグルに助けを求める。

Kernel panic: Aiee, killing interrupt handler!でググる。
一番上は英語なのでとりあえず読まない。
そのほかも、1ページ目にはサクっと満足させてくれるような情報見つけれず。

他の情報を探すため、今度は、Unable to handle kernel paging request at virtual addressでググる。
一番上に出てきたサイトさんを読む。

メモリの2倍のスワップとはどーゆーこったろう?
自動でインストールしたら勝手にメモリと同じサイズになるのにな。
で、今現在の俺の環境はというと、メモリ1.5GBに対して、スワップ2GB。
なんでこんなことになってるのかインストールしたときの記憶が定かじゃないので、全く分からん。

だいたい滅多に確認もしないけど、スワップなんて使ってるのほとんど見たこと無い。
足りなくなっておかしくなるってわけじゃないのかな?
じゃなかったら、俺の負荷の少ない閑古鳥サーバの落ちた原因がスワップ不足なんて考えられないわけだけど。

なのでこれは関係ないんじゃないのかなーと思いつつも、
落ちてたのに何の対策も取らないのは気が引けるので、とりあえず見つけたこれだけはやっておく。

メモリ1.5GBでスワップ用のパーティションが2GBなんだから、あと1GBのスワップファイルがあればいいわけだ。

#dd if=/dev/zero of=/mnt/system_bak/swapfile bs=1024 count=1000k

参考サイトさんと違う点は、
・俺の環境特有の理由だけど、どーしてもhda2よりhdb1の方が入ってるデータが数GB少ないからそっちに作った。
・1000kのkを大文字でKと書いたら怒られたから小文字。
ぐらい。
ddはファイルをブロック単位でコピーするみたいな感じっぽい。
で、/dev/zeroってのはゼロが埋まってるんだ確か。
てことで、このコマンドを実行すると、bs*countバイトのゼロが埋まった(つまりNULLが埋まった)ファイルが、ofで指定されたファイルに書き出されるわけだ。
で、それを
#mkswap -c /mnt/system_bak/swapfile

としてやるわけだけど、
#jman mkswap

によると、
mkswap は Linux のスワップ領域をデバイス上またはファイル上に準備する。
だそうだ。
で、「-c」は、不良ブロックのチェックを行うオプション。

ここまで出来たら、/etc/fstabに、

/mnt/system_bak/swapfile none swap sw 0 0

を付け足してやって、
#swapon -a

を実行して、スワップを有効にする。
# swapon -s
Filename Type Size Used Priority
/dev/hda3 partition 2040244 0 -1
/mnt/system_bak/swapfile file 1048568 0 -2

無事出来た。

で、これに効果があるかどうかの検証方法ってあるんかな?
直前の状態が分からんから再現実験もしようがないし・・・
ま、いいや。
何かいじったってことだけで充分でしょ。
終わり!

そんなこんなとその他諸々でいじくり回したお陰で、今日のサーバ負荷グラフは偉いことになってる。