アーキテクチャ(1)

基本的な仕組み

複数のストレージノードのローカルファイルシステムを論理的に統合した「ボリューム」を作成して、クライアントからマウント可能にします。GlusterFSのクライアントパッケージを導入した「Nativeクライアント」では、マウントしたボリュームは、通常のファイルシステムとしてアクセス可能になります。

Nativeクライアントは、ファイル名のハッシュ計算に基づいて、実際にファイルを保存する決定して、該当のストレージノードにアクセスを行います。

ブリックの集合としてのボリューム

ボリュームを定義する際は、各ノードのディレクトリを「ブリック」として指定します。1つのボリュームはこれらのブリックの集合として作られます。1つのノードが複数のブリックを提供することも可能です。また、ノードごとに提供するブリック数、ディレクトリ名などを揃える必要はありません。 ボリュームサイズを拡大/縮小する際は、ボリュームに対するブリックの追加/削除を行います。

さまざまなボリュームの構成

ボリュームを定義する際は、「レプリケーション」および「ストライピング」の指定が可能です。

ストライピングは、1つのファイルを一定サイズのチャンクに分割して、それぞれのチャンクを異なるノードに保存します。

レプリケーションは、1つのファイルを複数のノードに冗長保存します。

ストライピングとレプリケーションの組み合わせも可能です。

アクセス方法の違い

Nativeクライアント

Nativeクライアントは、ボリュームをマウントする際に指定されたストレージノードから、該当ボリュームを構成するノード全体の情報を取得します。マウント後は、クライアント自身がファイルを所有するノードを判断して、該当ノードに直接にアクセスします。(この動作は、アプリケーションに対して透過的に行われますので、アプリケーションからは通常のファイルシステムと同様にアクセスが可能です。)

次の例では、node01からボリューム「vol01」の情報を取得して、/mntにマウントします。

# mount -t glusterfs node01:/vol01 /mnt

NFSマウント

NFSクライアントは、GlusterFSデーモンが提供するNFSサーバ機能を利用して、NFSマウントを行います。NFSv3のみに対応していますので、マウント時はv3を指定するオプションが必要です。NFSクライアントからのアクセスは、マウント時に指定したノードを経由して行われます。複数のNFSクライントがある場合は、クライアントごとに異なるノードを経由してアクセスしても構いません。

次の例では、node01をNFSサーバとしてボリューム「vol01」を/mntにマウントします。

# mount -t nfs -o mountvers=3 node01:/vol01 /mnt

※ glusterデーモンが稼働するストレージノードをNFSクライアントして使用することはできません。