2007/09/26

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

前回、GFSを利用するには、クラスタメンバ間でブロックデバイスを予め共有しておく必要がある、と述べた。ここでは、GNBDを使うが、他の方法について概説する。

ブロックデバイスについては、ここに解説してある。
ブロックデバイスとは、ブロックサイズの倍数、典型的には 512 か 1024 バイトでのみ読み書きするデバイスである。ブロックデバイスはバッファキャッシュ経由でアクセスされ、ランダムなアクセス、すなわちデバイス上のどこにあるブロックでも読み書きできるアクセス方法が利用されることが多い。ブロックデバイスへのアクセスは、それぞれに対応したデバイススペシャルファイルを経由しても可能であるが、ファイルシステム経由でアクセスするほうがより一般的である。マウントされるファイルシステムをサポートできるのはブロックデバイスだけである。
つまり、ブロックデバイスは、主にディスク等の物理デバイスをデバイスドライバを通してアクセスする仕組みだ。GFSは、ネットワーク越しに共有された物理デバイスをブロックデバイススペシャルファイルを通じてアクセスする。つまり、ブロックデバイスの共有だ。

物理ディスクをブロックデバイスとして共有する方式はいくつかある。いわゆるStorage Area Network (SAN)と呼ばれるものが代表的だ。SANには、ファイバーチャネルを利用するFibre Channel SAN (FC-SAN)や、IPを利用するIP-SANなどがある。

FC-SANは、FCインターフェースを備えた専用ディスク装置、FCスイッチおよびFCインターフェースを備えたコンピュータで構成されるのが一般的だ(FC-SANはお金持ちの道具なので、私は使ったことがない)。FC装置に関する知識が必要で、対応できる技術者が少ないことが問題になる。

IP-SANの代表選手はiSCSIだ。これは、SCSIをIPでカプセル化してネットワーク越しにデバイスを共有する仕組みだ(これと似た仕組みにATA over Ethernet (AoE)というものがあるらしいが、詳しくは知らない)。IP-SANは、Ethernetポートを備えた専用のディスク装置、EthernetスイッチおよびEthernetポートを備えたコンピュータで構成されるのが一般的だ。後の二つは、ごく一般的な機器なので、特殊な知識を必要とせず、FC-SANに比べ導入のハードルが低い。特にiSCSIであれば、専用のディスク装置でなく、PC上でiSCSIサーバを走らせることで代用可能だ。CentOS 5には、Linux上のiSCSI実装の一種であるOpen-iSCSIがRPMで準備されている。パッケージ名はiscsi-initiator-utilsだ。

一方GNBDは、IPネットワーク上でブロックデバイスを共有する仕組みで、通常、クラスタ環境で使用される(が、クラスタ環境は必須ではない。後述)。GNBDは、クライアント=サーバ構成になっており、GNBDサーバ上のブロックデバイスを、複数のGNBDクライアントからアクセス可能にする。この意味では、PC上でiSCSIサーバを動作させる場合に非常によく似ている。ただ、GNBDは、RHCSのfence deviceとしても使えるので、クラスタとの親和性が高い。
なお、上図で、GNBDは、ローカルに接続されたディスクドライブに対するブロックデバイスを共有しているが、FCのポート単価はEthernetに比べて高いことに着目して、FCとGNBDの折衷案も考えられる。FCポート数を減らし、Ethernetポートで置き換えると、性能は多少落ちるが、全体のコストは下がる(これは、RHELのマニュアルでも触れられている)

GNBDは、基本的にクラスタ環境で使用するが、実はiSCSIの様にクラスタと無関係に使うこともできる。GNBDのサーバ側では、gnbd_servというサーバプロセスが動くのだが、起動時に-nというオプションを与えると、クラスタとは無関係に動作する。
ただし、GFSを使う場合は、このオプションを使うことはできないようだ。なぜなら、gnbd_servのマニュアルを見ると、このオプションを使うと、キャッシュ無しのデバイスをエクスポートすることはできない、と書いてあり、gnbd_exportのマニュアルを見ると、GNBD上でGFSを使う場合は、キャッシュを有効にしてはいけない、と書いてある。

さて、GNBDを使えば、クラスタ上でブロックデバイスを共有できることが判った。では、そのデバイスを直接使ってGFSを構成すべきだろうか?

解説: その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 件のコメント: