Gfarm は分散ファイルシステムの一つです。オープンソースで開発されていて、以下で公開されています。
今回は Gfarm の概要を紹介します。
Gfarm の特徴¶
- 多数クライアントからのファイル読み書き処理を負荷分散できる。
- ファイルの複製を作成できる。
- ファイル実体が保管されているホストで読み書きすれば通信しない。
Gfarm の構成¶
マスターメタデータサーバ (gfmd + PostgreSQL) × 1 台
- スレーブメタデータサーバ (gfmd + PostgreSQL) × 任意数
マスターへ昇格 (フェイルオーバ) できる。同期スレーブと非同期スレーブの動作ができる。
- ストレージサーバ (gfsd) × 任意数
ファイル実体を保管する。
クライアント × 任意数
Gfarm の仕様 (バージョン 2.5.8 時点)¶
- クラスタ内だけでなく、各サーバやクライアントをインターネット上に分散して設置できる。
- ファイル実体データ以外の情報は、メタデータサーバで集中管理される。
- ファイル実体は分割されずに、各 gfsd にファイル内容がそのまま保管される。
- gfsd とクライアントが同一ホストで、ファイル実体がそのホストにあれば、通信せず読み書きできる。
- 新規ファイル作成時は、gfsd とクライアントが同一ホストであれば、通信せずに書き込みできる。
- ファイルの複製を、手動または自動で作成できる。
- 複製を作れば、複数クライアントからの同一ファイル読み込みアクセスを負荷分散できる。
- 複製を作っても、クライアント一台に対するファイル読み込み速度は向上しない。
- 複製の配置情報(ファイル実体があるホスト名のリスト)をコマンドで調べることができる。
- 自動複製作成を設定すると、書き込んでからクローズ後に複製が作成される。
- 自動複製作成は、ディレクトリやファイルごとに複製数を設定できる。
- デフォルト複製数は 1 (複製なし)。
- 書き込み中のデータは、ひとつの gfsd だけに存在する。
- 運用中に gfsd をいつでも追加できる。
- gfsd が停止していても、別の gfsd に複製があればそれを読むことができる。
- 読み込み専用で読んでいてネットワークエラーが起きたら、自動的に別の複製を読んで続行することができる。
- 書き込み可能で読み書き中にエラーとなった場合に、自動的に書き込みをリトライ・続行する機能は無い。
- 書き込み中にエラーとなっても、書き込みをやりなおせば、(他の gfsd へ自動的に) 上書き、または新規作成することができる。
- ファイル操作中に、ネットワークエラーが起きたり、gfmd が再起動したり、gfmd がフェイルオーバすると、タイミング次第でファイル操作が成功したりエラーとなる。
- ほとんどのメタデータ情報を gfmd のメモリ上に置く。
- gfarm2fs でマウントすれば、POSIX 規格相当のファイルシステム操作ができる。
- gfarm2fs は FUSE を利用しているので、ユーザごとにマウントして使用する。
- gfarm2fs 上では、Gfarm コマンドに相対パスを指定できる。
- gfarm:///dir/file 形式の Gfarm URL で Gfarm コマンドに絶対パスを指定できる。
- gfarm://ホスト名:ポート番号/dir/file 形式の Gfarm URL を Gfarm のコマンドに指定すれば、他の Gfarm 空間へアクセスすることもできる。
- Gfarm URL に対するシンボリックリンクを作成すると、他の Gfarm 空間へリンクできる。
- gfsd がしばらく停止し、複製数が不足していたら、設定に従って自動的に複製を増やす。(replica check 機能)
- gfsd 起動時に、ファイル実体とメタデータに差異が無いか検査する。(spool check 機能)
- spool check 機能によって見つかった不正なファイルは、gfarm:///lost+found ディレクトリに登録される。
- 複製の配置を自動的に移動して、gfsd ごとに使用量を均等にする機能は無い。(未実装)
- クォータ機能 (使用量制限) 有り。
- ACL 機能 (アクセスコントロールリスト) 有り。
適する用途¶
- 複数クライアントを使い、アプリケーションを並列に実行して読み書きする。
- ファイル複製を作ってアクセス頻度の高いファイルの読み込みを分散させる。
- ファイルをネットワーク経由でコピーせずに、ファイル実体があるホストで高速に読み書きする。
- 多数ユーザが同時に利用する。
- 広域で単一のパス名空間を利用する。
各種クライアント¶
- Gfarm API (libgfarm ライブラリ)
- gfls などの Gfarm 専用コマンド
- gfarm2fs (FUSE の仕組みを利用してマウント)
- Gfarm Samba plug-in
- Gfarm GridFTP DSI
管理ツール¶
- Gfarm Zabbix plug-in
- Ganglia plug-in (性能モニタリング)
セキュリティ¶
- UNIX アカウントとは別に、Gfarm 用のユーザ・グループで管理される。
- 認証方法は、共有鍵認証と公開鍵認証 (Globus Toolkit の GSI 利用) がある。
- 共有鍵認証は、ユーザごとに共有鍵ファイルを用意して利用する。
- 共有鍵認証を利用時は、通信の暗号化をしない。
- 公開鍵認証を利用時は、通信の暗号化有りと無しを選択できる。
- Gfarm を管理するための特権として、gfarmadm 権限と gfarmroot 権限がある。
- gfarmadm 権限は、Gfarm のホストやユーザなどを管理できる。
- gfarmroot 権限は、ファイルのアクセス制御を無視して操作できる。
- ファイルの暗号化機能は無い。
インストール・セットアップについて¶
ここでは手順の概要を説明します。詳細は各マニュアルを参照してください。
- ユーザ認証法を共有鍵認証にするか公開鍵認証 (GSI 認証) にするか決める。
- [任意] GSI 認証利用時: Globus Toolkit をインストールする。
- [任意] GSI 認証利用時: 必要であれば CA を設置する。(SimpleCA のインストール、設定)
- Gfarm 本体ソースパッケージの README.ja を読む。
- 各サーバとクライアントの構成を決める。(OVERVIEW.ja)
- 各マシンに Gfarm をインストールする。(INSTALL.ja など)
- サーバごとにセットアップスクリプトを実行する。(SETUP.ja など)
- Gfarm の FAQ を確認する。(doc/Gfarm-FAQ.ja)
- クライアントに gfarm2fs をインストールする。(別パッケージ) (gfarm2fs の INSTALL)
- [任意] Gfarm Samba plug-in をインストールする。(別パッケージ)
- [任意] Gfarm GridFTP DSI をインストールする。(別パッケージ)
- [任意] Gfarm Ganglia plug-in をインストールする。(doc/iostat-setup.ja)
- [任意] Gfarm Zabbix plug-in をインストールする。(別パッケージ)
Gfarm 本体などのダウンロードは以下から辿れます。
上記の Gfarm 関係のマニュアルは、以下からも参照できます。
Globus Toolkit については、以下にマニュアルがあります。