« 2007年08月 | メイン | 2007年10月 »

2007年09月28日

netatalkの限界

サーバ移転が成功したにもかかわらず、netatalkが動作しないままであった。本サーバの内向け最重要サービスはMacのデジカメ写真の共有のため、何としても動作させる必要がある。
解決後、友人からWebDAVFSを教えてもらった。将来性を考えると、WebDAVFSに乗り換えるべきかもしれない。
旧サーバではMacがafpd(ファイル共有を行うdaemon)に接続に来た時点でafpdに不正なシグナルが送られ、Mac側では何も起こらなかった。これに対し新サーバでは、Mac側の認証ダイアログ(ユーザ名とパスワードを入力するウィンドウ)は正常に起動するが、パスワードを入れてから何も起こらないという症状だった。

散々試行錯誤を繰り返した(2週間かかってしまった)結果、以下のような結論に達した。
  1. 100Gbyteを越えるBSD label partition(/dev/ad0s4など)をマウントする事はできない。ただしファイルがない状態では一見正常動作するように見える。
  2. 50GbyteのBSD label partitionをマウントする事は可能である。ただしルートディレクトリに日本語(UTF-8)のファイル名があると失敗する(?要確認、後日アップデートの予定)。
この結論より、/homeに100Gbyte確保していたのを、/home, /pubの2つに50Gbyteづつに分ける事でnetatalkが正常に動作するようになった。 またその試行錯誤の中で、気がついた事がある。
  • PowerEdgeSC430のSATA I/Fは、atacontrol detatchを受け付けない。このためhot swapは事実上できないと思った方が良い。取り替える際に一旦電源を落とし、素早く交換することでダウンタイムを縮めるしかない。まったく下らない制限の多いサーバである>SC430
  • その後HPのML115でも同様にatacontrol detatchを受け付けない事が判明した。 高いサーバを売る為には仕方が無いのだろうが、なんとも寒々しい措置である。
  • fdisk partitionを切ったディスクにstandard mbrをインストールすると、起動時に"Invalid partition"というエラーが出て起動しなくなる。Bootmanagerをインストールすれば正しく認識される。
    ∴FreeBSDのSoftware RAIDを使う為には、単一のfdisk partitionでなくてはならない。
今更という内容かもしれないが、ご参考まで。

2007年09月12日

4代目サーバへ移転

3年間頑張ってくれたDell PowerEdge 400SCだが、ハードウェアの故障のため引退させる事になった。
夏をエアコン無しで3回も越したので、こんなものだろう。

最初の症状は、数ヶ月前からnetatalk でファイル共有(afpd)が出来なくなった。 それまでは何ともなかったのに、Macから共有しようとした途端にafpdが落ちてしまう。 デバッガで追ってみた所、select()で通信待ちをしているが、ファイル共有接続要求が 来た時点でいきなりSIGTRAP(本来はデバッガ用のシグナルなので、システムから 送られる物ではない)を食らって落ちている。最初はEthernet I/F(em)の故障かと思ったので、Gigabit Ethernet I/Fを2種類(vge, re)買ってきて試したが、何も変わらない。 原因不明の為、予備PC(sc430)にFreeBSD 6-STABLE(i386)をインストールし、各I/Fでafpdをチェックした所、オンボードのI/F(bge)や購入したEther I/F(vge, re)でも何も問題ない。
ソフトウェアは全く同じ物なので、これはハードウェアの故障の可能性が高いと判断した。
その後sambaも同じ症状になり、仕舞いにはsshdまで起動しなくなってしまった。
いったいどこが壊れたらこんな挙動になるのやら。ソフトウェアのバグならまだ理解できなくはない。 しかし6-STABLEを使うという事は、バージョンアップのたびにシステムが新しくなっているので、 他のPCでは正常に動いている以上ソフトウェアの可能性はまず無いはずなのだが。
server34.jpg
右が旧サーバ、左が新サーバである。新サーバのHDDケースは玄人志向の玄蔵 GC3.5EZ-SF/CB である。これは写真の通りフロントベゼルの加工なしで収める事ができた。

そういう訳で、サーバを移転しなければならない。4代目のサーバには予備機だったPowerEdgeSC430にメモリとHDDを追加して使う事にした。これのCPUはCeleronDなので、MT64(64bit CPU)付きである。せっかくの機会なので、OSをFreeBSD amd64 に変える事にした。

移転するに当たって、原則を以下の通りとした。
  • OSを変更するので、その上のアプリケーションは同じ物を使う。一度にたくさん変更すると、トラブルが起きても原因究明が大変になってしまうため。
  • 利用するアプリケーションは、一度は事前に動作を確認すること。 64bit codeで動くとは限らないので。実際これでvncの件が楽に済んだ。
  • コピーが必要なディレクトリをあらかじめリストアップしておく事
この原則通りに完璧にやっていたらトラブルは発生しないのだが、やはり以下のような見落としがあった。
syslog-ng
高機能なsyslog
これを忘れたが為に、メール周りのトラブルが発見できなかった。
procmail
到着メールを振り分けるフィルタ
このためメールを受信できず、トラブル解消に時間がかかった。
cronolog
apacheなどのログを日付毎に振り分けるフィルタ
apacheの設定ファイル(httpd.conf)にこれを用いるように設定してあったので、apacheが動作しなかった。なおこれのみportsでインストールが失敗するので、6.2Rのpackageでインストールした。
/var/log
/var/logのコピーを忘れた為、cronologが起動しなかった。

まったくこのブログはサーバ移転ばかりやってますな...orz

現サーバのspec.は以下の通りになった。

機種名 Dell PowerEdge SC430
CPUCelleronD 2.53GHz/533MHz FSB
RAMDDR2-533 SDRAM unbuffered ECC/1.5Gbyte
HDDSeagate ST3320620AS(Barracuda 7200.10 SATA) 320Gbyte x 2
RAID I/F無し(software RAID1)
EthernetBroadCom BCM5750 Gigabit Ethernet (onboard)
サーバ本体

OSFreeBSD amd64 6-STABLEvnc以外では特に問題無し。
DNSbind-9.xsecondaryは友人にお願いしている。
mailpostfixfmlで内輪MLをいくつか運用中。
webapache-2.0.xxname-based virtualhostで、いくつかのサイトを収容している。そろそろ2.2.xに移転したいが、今回は見合わせた。
ftp  なし  認証でパスワードが暗号化されない物はすべて停止している。
telnet
rsh, rlogin
remote loginopensshBrute Force Attack、キーロガー、shoulder sniffing(肩越しに覗き込む) などの対策のため、UID/PWDでのログインを禁止している
vncRealVNC Free Edition自宅では直接、出先ではsshによるport forwardingで使っている。
ファイル共有sambaWindows用
netatalkMacOS用。「ネタ」Talkではなく、net-atalk(AppleTalk)である。
ソフトウェア、サービスなど

2007年09月02日

困ったときのpackage頼み

6-STABLE (i386/amd64)上でvncserver(/usr/ports/net/vnc)が動かない。 どうやらxorg7.2に移行してしまったために、コンパイルが正常にできていないようである。
ところがメインサーバでは6-STABLE/xorg7.2であるにも関わらず、何も問題なくvncserverが動いている。

これらから推測すると、xorg7.2に移行する前かつportsも古い状態(xorg7.2がportsに導入される前)で vncをインストールすれば良いはずである。ところがアップグレードしてしまった以上、元に戻すことはできない。6.2-Releaseを再インストールしても、portsのバージョンが古いためソースをダウンロードできない。
これを解決するために、6.2-Releaseのpackageを利用することにした。 packageはReleaseされた時点でコンパイルされているので、バージョン問題も起こさないはずである。
早速ftpで6.2-RELEASES(i386)のpackageからvnc-4.1.2.tbzをダウンロードし、pkg_addでインストールしようとしたが、必要なモジュールがインストールされていないとエラーが出る。これらは古い情報であるので、 pkg_add -fで強制的にインストールすると、依存関係がインストールできないとエラーがでるが、インストール自体は成功する。依存関係はpkgdb -Fで簡単に直るので、心配御無用。
なお、なぜかamd64上では64bit版のvncserverが動作しない。i386版をインストールしたら使えたので、多少のエラーはあるものの、これで良しとした。 libSM (/usr/ports/x11/libSM) が無いというエラーが出る。このライブラリは、X11のSession Managerであるので、これが無ければ大半のアプリケーションが動かない。 vncserverが正常に動く保証がない。32bit版libSMもpackageからインストールしてみようかと思ったが、pkg_addではamd64版のlibSMと衝突する。この問題を解決するにはFreeBSD amd64上の32bit環境について調べる必要がある。やはり困ったときの神頼みはなかなかうまくいかない物である。

FreeBSD amd64のライブラリは、64bit版は/usr/lib, /usr/local/libにインストールされる。32bit版のライブラリは、/usr/lib32下にある。よって必要なライブラリを6.2Relaseのpackageで入手し、ここにインストールすれば良いと思われる。

1. packageの入手

packageは6.2Releaseを配布しているanonymous ftpサイトから貰ってくる。例えばftp.iij.ad.jpの場合、ftp://ftp.iij.ad.jp/pub/FreeBSD/ports/i386/packages-6.2-release/の下にある。

2. tarでpackageを開く

packageはtar + bzip形式なので、tar で開く事ができる。
% tar xyf libSM-6.0.3.tbz 
% ls -F
+COMMENT        +DESC           include/        libdata/
+CONTENTS       +MTREE_DIRS     lib/            

3. lib以下のファイルを/usr/lib32へコピーする

このうちlibSM.soはシンボリックリンクであるが、コピーで実体(libSM.so)に なってしまうので、/usr/lib32以下で修正する。
% cd lib
% ls -F
libSM.a         libSM.la*       libSM.so@       libSM.so.6*
% ls -l libSM.so
lrwxr-xr-x  1 ftns  ftns  10 Oct 16  2006 libSM.so@ -> libSM.so.6
% sudo cp * /usr/lib32/
% cd /usr/lib32
% ls -F libSM*
libSM.a         libSM.la*       libSM.so*       libSM.so.6*
% sudo rm libSM.so
% sudo ln -s libSM.so.6 libSM.so
% ls -F libSM*
libSM.a         libSM.la*       libSM.so@       libSM.so.6*

ldconfigでライブラリを認識させる

% ldconfig -32 /usr/lib32

上記の方法で、libSM, libICE, libX11, libXextをインストールした所、vncconfigのエラーが "/libexec/ld-elf.so.1: /usr/X11R6/lib/libICE.so.6: unsupported file layout"となったので、 ここまでで終わりとした。vncconfigのウィンドウは表示されないが、特に問題は無いようである。
【注意】amd64については、Dell PowerEdge430上で行った物である。その後HP ML115で同じようにインストールしたが、vncは作動しなかった。