2007/09/25

Red Hat Cluster: GNBD, CLVM and GFS・その1

レッドハットクラスタ(RHCS)を使いこなすべく、調査中。そのメモを残す。

クラスタを構成するには、クラスタのメンバ(クラスタを構成するサーバマシン)が資源を共有する場合が多い。例えば、HTTPサービスをクラスタで提供する場合、少なくとも/var/www/htmlの様なコンテンツ領域を共有する必要があるだろう。ファイル共有であれば、NFSを使うという手もあるのだが、ここはクラスタらしく、GFS(GFS2)を使いたい。

GFS(Global File System)は、ネットワークファイルシステムである。ということは、前出のNFSやCIFS(Widowsのネットワーク共有、SAMBAなど)と同列だ。ただし、NFSやCIFSと決定的に違う点がある。実際にファイルやディレクトリを格納するブロックデバイスを、別途GFSを使うマシン群で共有しておかなければならない、という点だ。
例えばNFSでファイル共有を行う場合、通常NFSサーバ上にブロックデバイス(例えば/dev/sda)が存在し、NFSクライアントからこのブロックデバイスへのアクセスは、NFSプロトコルによってカプセル化される。このためNFSクライアント側では、このブロックデバイスを直接アクセスする必要はまったくない(というより、してはいけない)
一方GFSでは、ブロックデバイスは既にGFSを使うクラスタメンバ(GFSはクライアント=サーバシステムではないので、GFSクライアントと呼ぶのは正しくない)間で共有されていることを前提としている。つまり、クラスタメンバは、実際にファイルやディレクトリを格納するブロックデバイスへのアクセスが必要、ということだ。この意味では、ブロックデバイスの存在を前提としているext3等のローカルファイルシステムと同列と言える。GFSとこれらのローカルファイルシステムの違いは、当然ながら、ネットワーク共有可能か否かにある(この違いは、分散ロック機構と複数ジャーナル機構などから生まれるのだが、ここでは解説しない)
Linuxにおいて、ファイルシステムとは、VFSを通じて呼ぶことのできる記憶装置(/procファイルシステムの様に記憶装置でないファイルシステムもあるが)である。ファイルやディレクトリと言った概念を用いてアクセスできる記憶装置と言い換えることもできるだろう。図を見てもらうと解ると思うが、NFSは、ファイルシステムの上にファイルシステムを架した構成になっている(従って、VFSが二回介在する)ため、オーバヘッドが大きい。
一方、GFSは、ブロックデバイスをネットワーク共有した後でファイルシステムが存在しているだけなので、オーバーヘッドは少ない(ブロックデバイス共有機構の効率にもよるが、一般には、ファイルI/OよりもブロックデバイスI/Oの方が単純なので)

では、GFSの前提となるブロックデバイス共有機構は何を使えばいいのか?この解答の一つがGNBDである。

解説: その1その2その3
kernel-xenにバグか?
その4・CentOS 5.1での注意点
その5・GNBDの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaからの設定
その9・ベンチマーク


追記(2008/2/24):
検証を再開した。
Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる

0 件のコメント: