GlusterFS

GlusterFSは、スケーラブルなストレージのための汎用分散ファイルシステムの1つ。InfiniBandのRDMAやTCP/IPなどのインターコネクトを使用して複数のホストに分散した各種ストレージを集約し、大規模並列ネットワークファイルシステムを構築できる。GlusterFSはユーザー空間で構築されており、性能を低下させることがない。クラウドコンピューティング、生物医学、超大容量ストレージなど様々な応用がなされている。GlusterFSは、当初Gluster, Inc.によって開発された。2011年のレッドハットによるGluster買収の後はレッドハットにより開発されている。
デザイン.
GlusterFSにはクライアント側コンポーネントとサーバ側コンポーネントがある。サーバは「ストレージブリック (storage brick)」と呼ばれ、その上で glusterfsd デーモンが動作し、ローカルファイルシステムを「ボリューム」としてエクスポートする。そしてクライアント側の glusterfs プロセスがTCP/IP（あるいはInfiniBandやSDP）上の独自プロトコルでサーバと接続し、リモートのボリューム群を"translators"を使ってより大きな1つのボリュームにまとめる。そしてまとめたボリュームをクライアント側でFUSE機構を使ってマウントする。大量のファイルI/Oを行うようなアプリケーションは、libglusterfs というクライアントライブラリを使ってサーバ群に直接アクセスし、その中で"translators"を実行でき、ファイルシステムやFUSEのオーバーヘッドを除去できる。
GlusterFSの機能の大部分は"translators"で実装されており、以下のような機能が含まれる。
GlusterFSサーバは可能な限り単純にしている。既存のファイルシステムをそのままエクスポートし、その構造解釈はクライアント側の"translators"に任せている。クライアント自体はステートレス（状態を持たない）であり、クライアント同士で通信しない。そのため、それぞれの"translators"のコンフィギュレーションの一貫性を保っておく必要がある。さもないとコヒーレンシ問題が発生するが、このような構成であるために一般的な分散ファイルシステムで発生しやすいボトルネックが解消されており、一般的なハードウェアだけでペタバイト以上のスケールのストレージを扱える。
より詳細は解説は Getting started with GlusterFS Architecture にある。