枕草子 (My Favorite Things)

【第206回】 sv2号機更新〜sambaで徹夜(1999年12月16日)

昨日の夕方から,実際のリプレースを開始した。まずsv2号機上で動いている各種メーリングリストに,サーバを置き換えるというメッセージを送り,2時間くらい経ってから最新の状態をftpで手元のWindows2000マシンにダウンロードし,sv2号機をシャットダウンした。手早くディスプレイケーブル,プリンタケーブル,10BaseTケーブル,電源ケーブル,キーボードケーブルを引っこ抜いて本体を取り外し,新sv2号機をそこに設置して元通り配線する。所要時間2分程度であり,我ながら手早さに満足する。

しかし,問題はこれからだった。ネットワークにつないでからでないとできない設定を,できるだけ早くしなくてはいけない。パーミッションの確認も十分ではない。rootになってtarでアーカイヴしてからバックアップしたものを展開しているので,基本的にはパーミッションは保存されているのだが,細かいところでアーカイヴが足りなかったりして難儀したのだ。まあ,基本的にはMLの設定を最優先して進めたので,23:00頃にはML関連は正しく動作するようになった。ただし,いくつかのMLはwebと連動しているので,メールをhtmlに変換するスクリプトが書き出す先のディレクトリのパーミッションも正しく設定する必要があった。その設定を忘れていたためであろうか,青空ML宛の1通がアーカイヴされないという事故が起こってしまった(ごめんなさい>後藤@NPO研究会さん)。

しかし,何よりも誤算だったのは,書評掲示板を10月15日までしか保存していなかったことだ。仕方ないので,今やスタンドアロンとなった旧sv2号からフロッピー経由でbook_bbs.datbook_res.datをもってきて,htmlは再構築しようと決めた。ところが,何の手違いか,book_res.datbook_bbs.datで上書きされてしまったのだ。仕方ないので,bookresディレクトリの中にあるhtmlファイルから一つ一つ情報をカットアンドペーストしてbook_res.datを再構築した。この作業にほぼ1時間半。

この時点で徹夜作業を覚悟した。朦朧としていてもコンピュータの作業はなんとかできる。問題を解消できる可能性を,虱潰しにトライアル&エラーで試してゆく。bindやsendmailを再コンパイルする必要があったことを含め,大方の問題は隣の研究室で忘年会が行われているうちに解消できたが,最後に残った最大の問題はsambaであった。対外的には問題ないとはいえ,sambaが動かないとプリントアウトができないので,来週月曜の生理学と人口学の講義資料を打ち出すのに難儀するので,大いに困るのだ。sv2号置換のタイミングを知っていたかのように来てくれた萩原君と2人で頭を悩ませ,ああでもないこうでもないと,これまで入れてあったバージョンはもちろん,portsの2.0.5aやら最新版の2.0.6までできることは全部試したが,どうしてもsmbdが起動しない。/usr/local/samba/var/log.smbを見ると,2つのエラーがでていたのは,わりと早い時間からわかっていた。

[1999/12/16 08:52:22, 1] smbd/files.c:file_init(216)
  file_init: Information only: requested 10000 open files, 1054 are available.
[1999/12/16 08:52:22, 0] lib/util_sock.c:open_socket_in(853)
  bind failed on port 139 socket_addr=0.0.0.0 (Address already in use)

カーネル設定ファイルのmaxusersを32から512に変更し,ついでにいらないデバイスを切ってカーネルを再構築することで上のエラーが消えたのは,朝になってからのことであった。起動も高速になったし,これは一石二鳥であった(ついでに言っておくと,新sv2号機はIBMのPC300PLというPentium IIIの500 MHzマシンなので,さすがにコンパイルが超高速であり,カーネル再構築にもあまり待ち時間がなくて精神衛生上非常によろしい)。問題は下のエラーである。大和@加速器・筑波大さんのsamba-jpメーリングリスト過去ログ検索ページから,139をキーワードにして似た状況を探しては試してみる。/etc/servicesから139 udpとなっている行をコメントアウトし,inetdから起動するのをやめて/usr/local/samba/bin/startsmbというシェルスクリプトを書いて,このスクリプトを/etc/rcから起動するように変えてみたところ,どうにか/usr/local/samba/bin/smbd -Dがポート139で立ち上がるようにはなった。しかし,相変わらずWindows側からは認識されない。これはもしかするとWindowsを再起動すればよいのだろうか?

再起動しても駄目であった。どうやらlocalhostの名前解決に失敗しているらしい。こうなるとbindも絡んでくるので,ますます泥沼である。さんざん悩んだ挙げ句,bindの設定を直してnslookuplocalhostが引けるようにし(早く気づけよ,と今にして思うが,どつぼにはまっているときは気づけないのである),portsから入れていた2.0.5aを削除して,2.0.5a1JPをソースからコンパイル&インストールしてから,/etc/rc.confnetwork_interfacesが"fxp0 auto"となっていたのを"auto"に変更したら,open_oplock_ipcの"Failed to get local UDP socket for address 100007f. Error was Can't assign requested address"というメッセージは消えたが,open_socket_inが"bind failed on port 139 socket_addr=0.0.0.0 (Address already in use)"というエラーメッセージを出すようになり,あまり進歩していないのであった。とはいえ,smbclient -L localhostを認識するようになったので,localhostの名前解決はできているようなのだが。さてわからん。

ふと,この状態でクライアントたるWindows側を再起動してみたらどうだろう? と思い立って,最後の望みをかけて試してみた。その結果,見事に\\sv2が認識された。認識の順番が問題だったと思われる。

あーあ,sambaの設定で徹夜してしまった。徹夜でsambaとはえらい違いだ。


前【205】(風邪だったらしい(1999年12月15日) ) ▲次【207】(夢を見ているような(1999年12月17日) ) ●枕草子トップへ