新・闘わないプログラマ No.233

移行失敗


ここ1年以上、古いPCにLinuxを入れて、家庭内サーバとして使っていたのですが、先日PlayStaiton 2のLinuxキットなるものを酔狂で買ってしまいまして、それ以来、PlayStatio 2をサーバに出来ないかなあ、といろいろ試してみていました。
とりあえず、NetNewsとNTPのサーバをPlayStation 2の方に移行して1ヶ月以上使っていたのですが、特に問題もなく動作していましたので、安定性には問題なさそうだなあ、という感触は得ました。
そういうわけで、ここ1ヶ月以上、家庭内サーバとしては、古いPCとPlayStation 2という具合に2台を動かしていたのですが、これははっきり言って無駄以外の何物でもありません。1台で出来ないほどの能力も機能も必要なわけでは無いですし、そもそも常時2台を立ち上げておくと電気代もかかるし、音はうるさいし、これからの時期は発熱も多くて暑くてかなわん、と。
で、ここで考えられる選択肢としては、

というのが考えられます。本当は3番目の「別の機器」として、いま使っているノートPC(IBM ThinkPad 240)をサーバにする、というのが前々からの計画だったのですが、このノートPCの後継として買うのに、なかなか「これ」というような、自分として買いたいノートPCが無くて(買いたくても、そんなお金が無いんじゃなかったの?…という鋭い突っ込みは禁止!)、今のこのノートPCは、あと少なくとも半年は使うことにしたので、この案は却下。別に中古PCを調達する案も考えたのですが、いまさらゴミばかり増やしても仕方ないなあ、と、これも却下。
で、次に1番目の案、今使っているPCをそのまま使う、という案なのですが、一番ラクで問題が無さそうなのですが、CPUがPentium 200MHzと今となってはちょっと遅いなあ、というのと、8GB以上のハードディスクが付かない、というあたりが制約となって、本当はもっといろいろとサーバで動かしたいのに、現状ではそれが出来ないという状況に陥ってしまっています。
いやまあ、当初は「家庭内サーバなんて、どうせ大したことはやらないんだから低スペック・低容量で問題ないよなー」と思っていたのですが、ところがところが、いざ常時稼動のコンピュータがあると、ついついいろいろな用途に使ってしまうんですよね。しかもそれがいわゆるUNIXならなおのこと。寝ている間とか会社に行っている間に、例えば、えっちな画像を収集したりとか、えっちな画像を収集したりとか、はたまた、えっちな画像を収集したりとか、他にも、えっちな画像を収集したりとか。ね、いっぱいやることがあるで…いや、なんでもありません。
というわけで、2番目の案、PlayStaiton 2にPS2 Linuxを入れて、これをサーバにすることにしました。まあ、これはこれでいろいろと問題があることは以前書いたとおりなのですが、発熱はPCよりは少ないだろうということで、夏の暑い間だけでもこれをサーバにして乗り切ろうかなあ、と。秋になって、ノートPCの新製品が出て、欲しい製品があったらそれを買うことにして、今使っているノートPCをサーバにして、PlayStaiton 2のサーバはお役御免、本来のゲーム機能付きDVDプレーヤ(そりゃ逆だ)に復帰する、ということで。

この週末には久しぶりに時間があったので、その移行作業(PC→PlayStation 2)をやりました。
まずメールサーバにするためにsendmailを立てて、fetchmailの設定をして(というか、旧サーバから定義ファイルを持ってきて少しいじっただけですが)、それからWindowsのファイルサーバにするためにsambaを動かして、設定をごちゃごちゃやって、でもって、旧サーバからファイルをコピーしていたら…突然、そのファイルのコピーの処理が止まってしまいました。
「まいったなあ、これはsambaにバグがあるのかなあ。もう一度コピー…あれ? やっぱり出来ないや。しょうがない、sambaを再起動するか。ええと『/etc/rc.d/init.d/smb restart』と。あれ? 再起動できんぞ。ええい面倒だ、こうなったらOSの再起動だ!」
ここで気付くべきでした。OSのシャットダウンすら出来なくなるような事態になっていたことに。
OSを正常にシャットダウンさせなかったために、起動時にfsckが走り、しばらくディスクをゴリゴリやってから、PS2 Linuxは正常に立ち上がりました。「よしよし、fsckで引っかかったファイル、さして重要なファイルじゃなかったし…」
そういう問題ではないのに、そのまま移行作業を続けてしまった私。
OSが正常に立ち上がったので、移行作業を続行。ルータのログを受け取れるようにsyslogの設定を変えたり、逆にルータ側の静的IPマスカレードの設定を変えたり、WindowsのPCが新サーバを見に行くようにあちこち設定を変更したり…。
最後に大量のファイルを旧サーバでいくつかのtarファイルにして、新サーバに転送してそこで展開、ということをやっていたら…「あれ? ファイルの展開が止まってる」。その時の時刻は、日曜の午前1時。完全に移行が終わって旧サーバをシャットダウンしたら寝ようと思っていたのに…。
眠い目をこすりつつよく見ると、tarでファイルの展開を行っているプロセスと、ftpで旧サーバからファイルを取ってきているプロセスがハングしている。「kill -KILL」しようが、何しようが、プロセス自体が死なない。その後、いろいろ調べてみると、/homeのあるパーティションに対して何らかのアクセスすると、そのプロセスがハングしてしまうことが判明。ルートパーティション自体に対するアクセスではハングしないようなので、新たにログインするとこまでは問題ないのですが、そのあと何か/homeにアクセスしようとすると、その時点でハング。
「ううむ、こりゃまずいぞ。とりあえずファイルの内容を救うために、syncしてshutdownと…あれれ? syncでもハングするやん。あ、当たり前か、/homeに対するアクセスは全部ダメなんだもんなあ。ということは、いきなりshutdownしても、内部的にsyncやってるだろうし、やっぱりダメなんだろうなあ」
「これって、やっぱりファイルシステムのあたりのバグだよなあ。この動きからすると、プログラムがシステムコールを出してるけど、それの返事が帰ってきていないって感じだな。プロセスはそれをずっと待っているんで、ハングしているように見える、と」
どうやら、ファイルアクセスが集中するとこの現象が起こるようです。PS2 Linuxの障害情報をいろいろ探ってみたのですが、これという情報は見つかりませんでした。この時点で、日曜の午前3時。
このままでは「PS2 Linuxでサーバ」というわけには行かないので、旧サーバを復活させることに。ああだこうだやって、最終的に終了した頃には外は明るくなっていました。
そういえば、仕事でも似たようなことがあったなあ。結局新たに導入した機器が使えなくて、不眠不休で古い機器に戻したことが…。仕事でもプライベートでもやってることは大して変わらんのね。

というわけで、この週末はいったいなんだろう…というお話でした。
でも、こうやって駄文のネタにすることも出来たし、まあいっか。

[前へ] [次へ]

[Home] [戻る]


mailto:lepton@amy.hi-ho.ne.jp