Linuxクラスタに適したファイルシステムの選択

大規模Linuxクラスタを使用する組織は、2種類のファイルシステムの間で選択を迫られている。 ReiserFSXFSEXT3といった標準のローカルファイルシステムとNFS経由の接続ノードを使用するべきだろうか。それとも、Sistina GFS、Polyserve Matrix Server、IBM GPFSADIC StorNextといった共有ファイルシステムを使用するべきだろうか。

ローカルファイルシステム

各ノードでローカルファイルシステムを使用した場合は、そのノードに接続されているディスク上のローカルデータのみを見ることができる。ほとんどの場合は、ローカルファイルシステムの方がクラスタファイルシステムよりも管理は簡単だが、NFSを使って共有するとなると、システムの負荷、管理の複雑さ、データのスループットといった面で大きな問題がいくつか出てくる。

TCP/IPネットワーク上でのNFS経由のデータ転送は、クラスタファイルシステムで行われるFibre Channel上でのSCSI経由のデータ転送よりもはるかに負荷が大きい(SCSIでは、データ転送のために単一のダイレクトメモリアクセスが行われる)。TCP/IPデータ転送の負荷は、TCP/IP処理の負荷を減らす新しいタイプのNICによって軽減できるが、このようなカードを使った場合でも、やはりSCSI入出力の方がCPU負荷は少ない。

数百または数千のプロセッサから成る大規模クラスタの場合は、全ノードの25%をNFSでクロスマウントしただけでも、管理は困難になるだろう。

また、Gigabit Ethernet接続を使用しても、NFSのパフォーマンスは最高で約60MB/秒にしかならない。しかし、2Gb Fibre Channelのパフォーマンスは最高で200MB/秒(全二重)である。つまり、Gigabit Ethernet上のNFSでは、2Gb Fibre Channelのパフォーマンスにはとても及ばない。

それに対して、クラスタファイルシステムでは、ローカルファイルシステムとNFSを使用した場合よりもはるかに高いパフォーマンスを実現できる。アプリケーションはデータを1つのノードに集める必要はなく、すべてのノードから1つのファイルシステムに書き込むことができる。さらに、2Gb Fibre Channel上でのデータ転送はNFSでのデータ転送よりもはるかに高速である。しかし、クラスタファイルシステムは、管理の複雑さ、ハードウェアのコスト、事前のアーキテクチャ計画といった面ではローカルファイルシステムに劣っている。

クラスタファイルシステムの管理は大仕事である。大規模な構成の場合には、多数のHBA、Fibre Channelスイッチポート、RAIDコントローラを扱うことになる。これらのコンポーネント内部またはコンポーネント間の問題を解決するのは困難な作業である。

クラスタファイルシステムを実装するには、ローカルファイルシステムを実装するよりもはるかに大きなコストがかかる。今日では、多くのLinuxベンダ製のマザーボードにFibre Channelのチップセットや接続が組み込まれているので、Fibre Channel接続のためにHBAを別途購入する必要はない。しかし、ボードに組み込まれているにしても、Fibre ChannelはGigabit Ethernetよりもポート当たりのコストが高い。Fibre ChannelスイッチはGigabit Ethernetスイッチよりもポート当たりの単価がはるかに高価であり、無料のLinuxを使用したとしても、クラスタファイルシステムのコストはローカルファイルシステムよりも大きくなる。そのため、これだけのコストをかけてパフォーマンスを向上させる必要性が本当にあるのかを検討しなければならない。

アーキテクチャに関して言えば、クラスタファイルシステムでは、ファイルシステムメタデータのレイアウト、ファイルシステムメタデータのネットワーク(通常はTCP/IPネットワーク上で通信)、ファイルシステムメタデータの可用性について注意を払う必要がある。これらの面をよく考慮しておかないと、パフォーマンス要件やファイルシステムの可用性要件を十分に実現できない可能性がある。

結論

クラスタファイルシステムはローカルファイルシステムに比べてパフォーマンス面で大きなメリットをもたらすが、実際の場面でどちらを使用するかは、アーキテクチャ、管理、コストを考慮して決定する必要がある。ローカルファイルシステムは、大規模な環境でNFSのクロスマウントを行わなければ、概して管理しやすいシステムと言える。しかし、NFSを使用する場合は、パフォーマンスとCPU負荷が大きな問題になってくる。どちらのファイルシステムにするかを決定する前に、現在および将来のアプリケーション入出力要件を把握しておく必要がある。

今日の市場動向を見ると、将来的にはクラスタファイルシステムの方が優勢になると思われる。私はクラスタファイルシステムに長年携わっているが、いまだに取り扱いには苦労している。もっとも、管理に手間ひまはかかるものの、パフォーマンス面でのメリットは絶大である。私はいつも、HBA、スイッチ、RAIDデバイスの入出力のデバッグ/分析にかなりの時間を費やしている。それに加えて、数千のノードのどこにボトルネックがあるかを分析すれば、問題が見えてくる。

数多くのベンダが、この複雑なアーキテクチャのデバッグ、パフォーマンス管理、監視をまとめて行う製品の開発に取り組んでいる。たとえば、EMC SAN Manager、Veritas SANPoint Control、McData SANavigatorなどがある。近い将来、何が起きているかを把握するのにGUIを6つも起動せずに済むような日が来ることを期待している。

Henry Newman ― HPC勤続22年のベテランコンサルタント。主にベンチマークテスト、入出力、ストレージ、システムチューニングに携わる。