OCFS2化失敗

ファイルサーバの動作がどうも気に入らないので、nfsをやめて他の分散ファイルシステムにしようと検討している。その候補でOCFS2(Oracle Cluster FS)を実験したのだが、見事に失敗。

まず現状の問題なのだが、長時間使っていると、どうもnfsの動作がおかしくなって来る。どうおかしくなるかというのは詳しく調査してないのだが、アクセスが遅くなると言うか妙なロックがかかるみたいで、web serverの方でApacheプロセスが大量に滞留する。メモリを増やして、1500プロセスまで動かせるようにし、30分に一度再起動をかけてやっとこさ運用出来るという有様。ファイルサーバを再起動すると正常に動くようになるので、どうも何かサーバにあるらしい。

まぁnfsがあまり激しいアクセスに耐えない、特にロック関係に不安があることは昔から知られたことなので、nfsのチューニングに悩むくらいなら、他のマトモな分散ファイルシステムにした方がいい。

まず、予備実験として、iSCSIを試してみる。iSCSIでブロックデバイスを仮想化して、web serverからちゃんとアクセス出来るか調べる。

実は1年くらい前にも同じことを考えていたのだが、その時はNBD(Network Block Device)を使った。ところが、NBDはちょっと激しくアクセスすると、すぐにハングアップしてしまう。web serverの/homeをcp -aするだけでハングアップしてしまうので、まるっきり使いものにならない。まぁそれ以前に、何らかの共有が可能なファイルシステムを使わないことには意味がないのだけど(試したのはReiserFS)。

iSCSIを軽く設定して、ReiserFSで動かしてみる。「軽く」は本当に軽い設定で、ターゲット側はTarget名とLunの指定だけを行い、イニシエータ側は自動起動の設定だけ。細かいパラメータは何もいじらず。備忘にメモだけ


ターゲット

/etc/ietd.conf

  • Target
    iSCSIネームを決める

    システムユニークなら何でもいいが、慣習的に
    ホストを意味する文字列:空間を意味する文字列
    という形式になる

  • Lun <番号> <空間> fileio
    <番号>はLun番号らしい
    <空間>はiSCSIデバイスになるべき空間。/devでファイルでもいい
    ‘fileio’は多分SCSI diskを意味するのだろう(未確認)

イニシエータ

Debianでの設定

  • /etc/iscsi/* に設定ファイルがある
  • iscsid.confはいじる必要はない
  • nodesの下にnodeの情報がある
  • /etc/iscsi/nodesの下にiSCSI名に対応したディレクトリがあり、その下にnode毎の設定がある
    いじるのは多分、node.startup = を’automatic’にすることくらい(自動起動用)

他のホストで/homeをnfsでmountし、iSCSI経由でReiserFSを動かしてcp -aをしてみると、とりあえずハングアップもなく動く。NBDよりもマトモなようだ。

次にOCFS2を入れて試してみる。

と言っても何も特別なことはなく、まずocfs2-toolsを入れてから、/etc/ocfs2/cluster.confを設定する。内容は特に難しいことはなく、どこからどのポートでアクセスするかを定義するだけ。csfs2-consoleなるツールもあるけれど、これがあるからと言って特別に楽になることもない。

設定したら、o2cbを起動

/etc/init.d/o2cb start

OCFS2領域のmkfsをする。

mkfs.ocfs2 /dev/sdi1

当然mkfsは1度だけ。これでnodeで定義されたホストからiSCSI経由でmount出来るようになる。

ここでiSCSI+ReiserFSと同じように、/homeをcp -aしてやると、コピーが始まる。

というのは良いのだが、しばらくやっていると、サーバごとpanicになる。panicになるのは、

  • サーバ上でiSCSI + OCFS2
  • サーバ上の空間にクラスタ上からiSCSI + OCFS2

という両方のケース。カーネルバージョンはいずれも異なるのだが、CPUはどちらも64bitモード。後者はサーバもクライアント(?)もpanicする。

何が悪いんだろうなぁ。OCFS2って情報少ないんだよなぁ。

PS.

後に知ったのだが、このpanicはどうやら意図的に起こされているものらしい。何でも、クライアントサーバ間の通信に何らかの異常があった場合、ファイルシステムを保護するために強制的に閉塞させるようになっているのだそうだ。つまり、この私の実験環境は通信に問題があったということ。実際、いろいろ実験していると、「ネットが詰まる」ような現象にしばしば遭遇している。だから、OCFS2をちゃんと動かすには、その前提として

ネットワークの安定性の確保

が必要であるということだ。いろいろ調査した結果、私の環境の場合はどうやらNICのドライバあたりに問題があるようだ。nfsや通常の通信で問題がなくても、「だから大丈夫」と言えるものではないので注意が必要だ。