静かなホームサーバー 

(その6: ハードディスク交換とLinux入れ替え)

2005-10-20 10月

Linuxが古くなる

2002年冬に運用を開始し、2005年で丸3年になります。最初はTurboLinux7で、2003年には8に上げた記憶がありますが、その後2年間はそのままです。さすがに古くなってきました。最新のソフトが動きません。たとえば、FireFoxなど。これは痛い。カーネルも、2.4は新しいと思っていましたが、すでに2.6が出て一年ほどになります。NFSが調子悪いのが困ります。

ディスクの容量も不足気味です。2年間160GBのディスクを使ってきました。トラブルもなく幸せでしたが、だんだん狭くなります。容量を食うのは、写真とCDを読み込んだMP3です。このホームページも10MBから始めて、今では1GBを越えました。

容量よりもこわいのが、ディスクの寿命です。3年も使い続ければ故障する可能性高くなる。特に暑い夏を何回も経験させるのは危険です。バックアップはとってはいますが、万が一故障と言うことになれば一月分くらいの情報が消えてしまいます。

ディスク交換とLinux入れ替え

というわけで、ディスクを新しいものに交換し、ついでにLinuxをupgradeすることにしました。ディスクは、2005年の8月時点では、単位容量あたりの価格が一番お得なのは、250GB前後です。ちょっとだけ奮発して300GBにすることにします。エントリサーバ向けで耐久性の高そうな、maxtor 7L300Rにしました。15,800円くらい。2年前に買った160GBと同じような値段です。インタフェースは、パラレルのATA100です。EPIAのマザーボードには、SATAは付かないのです。

ディスクだけでなく、CPUから何から、全部取り替え、というか新しいセットを買うことも考えました。現有のサーバーがバックアップに使えること、移行に要するシャットダウンタイムをほとんどゼロにできること、CPUの能力向上などが期待できます。しかし、適当な低電力CPUが見つかりませんでした。あいかわらずVIA-EPIA以上のものはありません。Pentium-Mも20W近く消費します。AMDのGeodeは期待できますが、まだ入手できません。というわけで、やはりディスクのアップグレードだけにします。

Linuxのdistributionは、メジャーなところでFedora Core 4にします。別の機械でFC3を使ってみましたが、まあ、よさげです。http://fedora.redhat.com/ に行って、CD5枚分をダウンロードします。5枚目は、レスキュー用で、インストールには不要です。これらをCD-RかCD-RWに焼きます。isoイメージなので、データとして書き込まないよう注意が必要。(やってしまった)

バックアップマシン

インストールには、ほとんど丸一日かかりそうです。FC4を入れるだけでも2時間、その後のhttpdやsmtpのセットアップに時間がかかるに決まってますから。その間、このサイトを見に来た人ががっかりしないよう、代替サーバを建てます。古いPCに今動いているサーバのディスクをつないで立ち上げようとしましたが、さすがにハードウェアが違いすぎてブート失敗。古いLinuxを掘り出すのもばからしいので、まず代替マシンにFC4を入れて練習することにしました。CDドライブが遅いのでたいそう時間がかかりましたが、2,3時間でインストール成功。昔のことを思うと簡単ですね。それぞれのグラフィックカードにあわせてXwindowを動かすだけでも大変でしたから。

代替マシンの10GBほどのディスクに、ネットワーク経由でサーバーのweb関係のコンテンツをコピーします。実は、このEPIAサーバは、NFSがとても不調です。sambaやftpは快調なので、ネットワークが悪いわけではなく、NFSだけ異常に遅く、途中でコピーが止まったりするのです。TurboLinuxというか、カーネル2.4に問題があるのではないかと疑っています。しょうがないので、wwwの下をtarで固めてftpでコピーし、解凍します。

index.htmlに、メインテナンス中と書き込んでapacheを上げる。文字コードが変!httpd.confを見ると、デフォルトの言語がオランダ語(nl)になっている。日本語に直して、静的コンテンツは見られるようになる。そこで、BBルータのNATを代替マシンに切り替えると、サーバーは落としても大丈夫。160GB のディスクを代替サーバに取り付ければ、WWWのコピーなど作らなくとも代替サーバが上がるのですが、やはりそのためにwebサービスが1時間ほどは停止するのと、160GBを300GBディスクに移す手間もあって代替サーバは独立に動くようにしておきました。

EPIAへのFedora Core 4のインストール

サーバーから160GBのディスクをはずし、新しい300GBのディスクを付けてFC4をインストールします。ところが、キーボードの設定をして、Xwindowに切り替わるところで、画面が真っ白になってストップ。webを検索すると、textモードでインストールするとよいと書かれている。でもねぇ、インストール時はテキストでよくても、その後はどうするの、という素朴な疑問。ま、なんとかなるさとテキストモードでインストール開始。日本語を選ぶと、文字化けしてなんだかわからなくなるので、英語で進めるこれはうまく行きました。しかし、直後の起動で、やはりxdmの画面が出ない。当たり前ですわな。

その後、web.で調べると、libvgahw.a のモジュールがまちがっとる、という記事を発見。https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=161242
GCCのバグが疑われるようです。親切な方が、FC3の修正版リリースからlibvgahw.aをftpサイトに置いてくれました。ftp://people.redhat.com/mharris/libvgahw.a
これを、どこに置くのか、サーバーが立ち上がらないのにファイルをどうやって入れ替えるのか、が問題。サーバーが立ち上がらないのではなくて、Xが動かない。run levelをXが走る5まで行かせないようにすればよい。grubローダにaを入れて、ロードのオプションを指定します。singleか、3を末尾に付けてbootさせると、single user mode、あるいはrun level 3で止まります。そこでlibvgahw.aをfindすると、/usr/X11R5/lib/modules/libvgahw.a であることが判明。上のftpサーバから同名のファイルをコピーして、Linuxをブートし直すと、ちゃぁんとxdmが走ってグラフィカルログインが可能になりました。

ログインしてみると、困ったことに、日本語が入力できません。インストール時に英語を選んだせいでしょう。どうにかなるさ?

システム環境の再設定

さて、ここからシステムの再設定が始まります。いろいろありますが、まず古いディスクから何もかもを新しいディスクにコピーしましょう。バックアップサーバからnfsでコピーしてみると、実に速い。やはり、Turbolinux 8には、あるいはカーネル2.4までは、nfsに問題があったようです。ネットワーク経由では時間がかかりそうであれば、ディスクを両方ともサーバーのIDEにつないでコピーします。実際にそれをやりましたが、3.5インチディスクを2台つなぐと、電源が不足するらしく、ディスクが起動せず、一方だけしか認識されませんでした。しょうがないので、片方のディスクには、隣のWindowsマシンから電源を供給してコピーしました。一晩かかりましたよ。

このディレクトリのコピーは、再設定にしょっちゅう登場しますので、次のようなスクリプトをcpdirという名前のコマンドにして使います。tarプロセスを二つフォークして、両者をパイプします。いかにもUnixらしい小技だと思いませんか。

#! /bin/sh
# cpdir -- copy directories preserving subdirectory structure
# Dec/1989 MATSUI.T
#
if (test -w $2)
then echo "tar from $1 to $2"
else echo "'$2' does not exist or is not writeable" ; exit 1
fi
(cd $1; tar cf - .) | (cd $2 ; tar xfBp - )

httpd.confをコピーしようとしましたが、apache 2.0の周辺のモジュールが違うので危険です。FC4に備え付けのhttpd.confに修正を入れます。さっきの言語のところと、Documentroot, virtual hosts、ログファイル, cgi-binのパーミッション、indexのパーミッション、.htaccess を使うディレクトリにはAuthConfig を出す、などをhtmlのディレクトリにあわせて設定。CGIは、wilikiとか動かないモノがあります。fcgiも入れる。postgresqlが動いていない。

次に、samba。Fedoraには、sambaの設定GUIがあります。しかし、SWATに比べるとこれは非力。おや、SWATが入っていない。gnome版samba設定ツールでWindowsからのマウントはすぐにできるようになりました。ところが、日本語ファイル名が文字化けする。code page の設定法が昔と変わっています。UNIXではEUC, WindowsではShift-JISで見せますから、/etc/samba/smb.confには、次のように書き込みます。

dos charset = cp932
unix charset = eucJP-ms

それにしても、SWATが動いていないのは不便。他のマシンから何かしようとすると、telnetが動いていない。ftpも動いていない。Fedoraのシステム設定,、サービスで、これらを探すがないみたい。ftpは、vsftpd (very secure ftpd)というのがあるが、これを起動しようとすると、設定ツールが応答しなくなる。httpd, nfsくらいは走るようにしておこう。

xinetd がない!

telnet, ftpは後回しにして、大事なメールサービスの設定を始める。sendmailをやめてpostfixにしたいという気はある。でも先を急ぐので、とにかくこれまでのsmtp関連ファイルをコピーして動くようにする。メールを読む側、popを設定する。ところが、popがない。xinetd.d の中にエントリがない。それどころか、popサーバがない。qpopperをダウンロードしてtarからmakeしてinstall。

ところが、このqpopperを起動するxinetdがない。qpopperは、daemonにしてinit.dから起動することはできないはずだから、inetd, xinetdなどのsuper daemonが必須のはず。xinetd.dというディレクトリはあって、中にechoなどのエントリはありますが、いたってさっぱりしている。xinetdがない!?頭の中が真っ白に。Fedora Core 3にはありましたよ。FC4でなくなったというのは、FCはクライアント用で、サーバーは、Red Hat Enterprize版を金を払って購入せよ、ということなのでしょう。ちょっとがっかりの方針ですね。

xinetdをダウンロードしてきて、configure, make, make install かと思ったのですが、最近は、自動パッケージインストーラが充実してきているので試してみることにしました。旧Turbo Linux8 では、yumもapt-getも使えなかったのですが、FCはどうでしょうか。apt-getは、コマンドがありません。yumは、あります。yum -y install xinetd とすると、パッケージを調べて1,2分でインストールが終わりました。/etc/init.d の中にはxinetdのエントリが作られています。これは便利。

Gaucheがmakeできない

Wikiの仲間で、wilikiというのを使っています。それは、gaucheという、schemeという、Lispの一種で実装されています。このgauche-0.8.4がmakeできない。goshというlisp shell.ができるのですが、illegal instructionで落ちます。

webで調べると意外な事実が判明しました。gaucheのdistributionには問題なし。gccがいけない、gccとEPIA C3との組み合わせが悪いということです。cpu idが、epiaは、686だがCMOVcc命令は実装されていないことを表明しているのに、gccは、i686と名の付くCPUはすべてCMOVccが実装されていると思いこんでいる。

それで、gaucheのmakeの時に、OPTFLAGS='-march=i586' というようにCPUのグレードを下げてやるか、最適化をかけないことにすると正しく走るようになりました。

その他いろいろ

セキュリティにからむので詳しくは書けませんが、sshやらファイアウォールの設定をします。

postgresqlの移行はあきらめましょうかね。前の版でpgdumpして、新しいDBを再構築しないといけない。たいしたデータも入っていないし。しかし、データベースのような、データの永続性が重要なソフトウェアで、データベースのレポジトリの構造が頻繁に変更され、ユーザーは難解な操作でデータを危険にさらしつつ移行しなければならないというのはどういうもんでしょうか。ファイルメーカでも同じような経験をしました。MS Wordですら、古い文書の読み書きができるのに。。。

ディスクのスピード測定

新しいディスクの速度を、hdparm -t /dev/hda1 などとして測定します。160GBのSeagate ディスクは、24MB/sだったと自分で記録していました。新しい300GBのMaxtorは、14MB/s。あれれ。hda1ではなく、hda8でやると29MB/sになりました。代替機につけた160GB Seagateは、hda1が38MB/s、hda8が48MB/sあります。代替機は、Athlon 1800+なので、CPUというかバス、メモリが全然速いのですが、メモリの速度が隘路になるわけがなく、釈然としません。ちなみに、このAthlon 1800+についているもう一台の28GB Seagateディスク (7200rpm)は、26MB/sです。

VIA EPIA EDEN C3 か、チップセット、メモリ、マザーボードなどが遅いので、ディスクの性能が十分に引き出せないようです。新しいディスクにしたから速くなるのはほとんど期待できないでしょう。ま、10MB/sでも100BaseTを飽和させることはできますし、その先は8Mbps maxのADSLですから、気にしないことにしましょう。

雑感

ディスクは広くなり、ノイズも小さい。常時12Vで0.5A異常を消費し、発熱が大きくなったようです。古いディスクは、バックアップとしてしばらく代替マシンに付けておく。

FC4は、クライアント向けで、サーバーに使うには、xinetd、qpopほかいくつかのパッケージのダウンロードが必要。危険なtelnetもない。sendmailうやpostfixは入っているのに、いびつな関係。パッケージダウンロードには、yumが便利。nfsの性能がよくなった。Firefoxも走るし、gnome terminalも調子よい。httpd, sambaなどの設定ファイルは、昔のものをコピーして使うわけにはいかない。パスワードファイルくらいは使えるが。

メールが届かない、と言うおしかりを受けました。sendmailのポートを外に開いていなかったからです。ごめんなさい。

入れ替えのためサーバを落とすと、webを見に来る人、メールを送ってくる人、それからファイル置き場に使っている人が大迷惑を被る。ちゃんと動くようにするのも大変。また3,4年したら入れ替えるのだろうか。メールが一番やっかいですね。


toshihiro@ matsui.dip.jp