Gfarmファイルシステム

大規模データ時代を支える、日本発の広域分散ファイルシステム

概要

Gfarm(ジーファーム)は、2000年頃から研究開発が続けられている広域分散ファイルシステムです。複数のPCのローカルストレージや、広域に存在する複数のPCクラスタを束ねて、大規模かつ高性能な共有ファイルシステムとして機能します。

利用者は、データが実際にどこに格納されているかを意識することなく、一つの仮想的なディレクトリ階層を通じてデータにアクセスできます。この仕組みにより、物理学、天文学、生命科学といった分野で、テラバイトやペタバイトといった非常に大きなデータセットを効率的に処理・共有するニーズに応えています。

Gfarmは、研究を続けておりソースコードがオープンとなっているため、透明性と安心感が確保されています。NPO法人つくばOSS技術支援センターは、このGfarmファイルシステムを中心とする日本発OSSの技術支援や高度な保守・構築支援、技術情報の共有を推進しています。

Gfarmのシステム構成(3つのホスト)

Gfarmファイルシステムは主に以下の3種類のホスト(コンピュータ)で構成されますが、利用可能なホスト数が限られていれば、同一のホストで複数の役割を果たすことも可能です。

  • クライアント(Client) Gfarmファイルシステムを利用するホストです。
  • ファイルシステムノード(File system node) Gfarmファイルシステムの実データ記憶領域を提供するホスト群です。広域に存在する数千、数万ノードでの構成も想定されており、各ノードでI/Oデーモンであるgfsdが動作します。これらのノードは、通常、Gfarmを利用するクライアントの役割も同時に果たします。
  • メタデータサーバ(Metadata server) Gfarmファイルシステムのメタデータ(どのファイルがどこに格納されているかなどの情報)を管理するホストです。gfmdというメタデータサーバのデーモンと、PostgreSQLなどのバックエンド・データベースが動作します。

特徴・メリット

Gfarmファイルシステムは「どこからでもアクセスできる、巨大で壊れにくいデータ保管庫」のようなものです。大規模データを取り扱う研究者やシステムの安定運用を重視するIT管理者など、多様なターゲットのニーズを満たすために独自の工夫が施されています。

1データが消えない安心

大切なデータは複数の場所に複製され、災害などにも強い。

特徴01 データが消えない安心のアイコン

データは一か所だけに保存されるのではなく、離れた複数の場所に複製されます。例えば、スーパーコンピューター向けの「HPCI共用ストレージ」では、千葉県の柏と兵庫県の神戸という二つの場所に、それぞれ100ペタバイト(非常に大きなデータ量)のファイルを複製して置いています。これにより、仮にどちらか一方の拠点で問題が起きても、もう一方からデータにアクセスし続けることができるため、システムが止まることがありません。

2無限に広がる可能性

データの量が増えても、システムを止めずに拡張できる。

特徴02 無便に広がる可能性のアイコン

システムを止めることなく、ストレージを増減させることができます。これによりデータの保存容量や処理能力を必要に応じて拡大・縮小することができます。また、データの重要性、アクセス頻度に応じてデータの複製数、複製配置場所を自由に設定することができ、データアクセスの集中も回避可能です。

3どこからでも安全にアクセス

世界中どこからでも、まるで自分のパソコンにあるかのようにデータを使える。

特徴03 どこからでもアクセスのアイコン

普通のファイルシステムとは異なり、Gfarmはインターネットを使って、遠く離れた場所からでも安全にファイルにアクセスできるのが最大の特徴です。クラウドストレージのように、どこからでも自分のファイルにアクセスできます。

4データが壊れない保証

目に見えないデータの破損(サイレントデータ障害)を自動で検知し、防ぐことができる。

特徴04 データが壊れない保証のアイコン

データの完全性(データが壊れていないこと)を保証する機能です。これにより、「サイレントデータ障害」という、エラー表示がないのにデータがこっそり壊れてしまうような問題を発見し、防ぐことができます。ユーザーが意図せず壊れたデータにアクセスしてしまうことを防ぎ、システムが自動的にそのような不具合に対応します。

他社との違い

国産のファイルシステムで、ソースコードがオープンとなっており安心です。またHPCI共用ストレージとJLDGにおいて10年以上の稼働実績があり、必要な機能が持続的に開発されているため幅広い要求に対応可能です。サイレントデータ障害に対応し、これまで数多くの破損データの自動検知、自動修復を行ってきました。

活用事例

スーパーコンピューター「富岳」でのデータ活用や、最先端の研究(素粒子、天文学など)で使われています。

技術・開発

Gfarmは安全なOAuth/OIDC認証や小ファイルまとめ転送機能「Gfptar」、Nextcloud対応で利便性を高めています。

導入・設定

Gfarmを導入し、大規模な研究データインフラを構築するには、メタデータサーバやファイルシステムノードなどの設定が必要です。Gfarmファイルシステムは、クライアント、ファイルシステムノード、メタデータサーバといったホスト群から構成されており、詳細は「インストール」 および「セットアップマニュアル」 に記載されています。これらのマニュアルは、NPO法人つくばOSS技術支援センターの関連コミュニティのGitHubリポジトリ等で参照可能です。

設定の基本的な流れ

導入・設定作業は、Gfarmの管理用コマンドや設定ファイルを用いて行います。

1. メタデータサーバの初期設定
  • 管理者のユーザー名を決定し、config-gfarmコマンド(ルート権限)で設定を行います。
  • この設定により、バックエンドDB(例: PostgreSQL)の設定と起動、設定ファイル(/etc/gfarm2.conf, /etc/gfmd.conf)の作成、そしてメタデータサーバgfmdの起動が行われます。
2. 認証方式の設定
ファイルシステムノードの認証のために_gfarmfsユーザを作成し、サーバ証明書を設置します。
3. 自動起動の設定
メタデータサーバ(gfmd)とバックエンドDB(例:gfarm-pgsql)を自動的に起動する設定を行います。

ソースコード

以下のより各種ソースコードを確認することができます。ソースコードの遷移先は「GitHub」になります。

Gfarmファイルシステム
Gfarmファイルシステムのサーバとクライアント
Gfarm2fs
Gfarmファイルシステムをマウントするためのプログラム
Nextcloud-Gfarm
Gfarm外部ストレージをサポートするNextcloudコンテナ
Gfarm-hadoop
HadoopでGfarmを利用するためのプラグイン
Gfarm-samba
WindowsクライアントからGfarmを利用するためのSambaプラグイン
Gfarm-mpiio
MPI-IOでGfarmを利用するためのMPICH, MVAPICH用プラグイン
Gfarm-gridftp-dsi
GridFTPサーバ用プラグイン
Gfarm-zabbix
Gfarmの障害監視のためのZabbixプラグイン

ドキュメント

サポート

Gfarmファイルシステムを中心とする日本発のオープンソースソフトウェア(OSS)の技術支援を行うために発足し、高度な保守・構築支援、技術情報の共有を行っています。詳しくは「入会・サポート」をご確認ください。

よくあるご質問

一般

Gfarmはどんな時に役立ちますか?
大事なデータを安全に保存できます。大量のデータをみんなで共有したいなど様々な要求にこたえます。
個人でも使えますか?
個人で使うこともできますし、小規模、大規模のグループで共有することもできます。また全世界にデータを公開することも可能です。
セキュリティは大丈夫ですか?
ネットワーク転送においてデータは暗号化されるため転送中にデータの中身を見られることはありません。
データの容量はどれくらい増やせますか?
足りなくなったらストレージサーバを追加することにより増やすことができます。
データは壊れませんか?
大量のデータを保存しているとなにもエラーが起こっていないのにデータが壊れてしまっていることがあります。それをサイレントデータ破壊といい大きな問題となってます。Gfarmでは保存されたデータは読出しの時などに壊れていないかどうかチェックされ、壊れていたら壊れていないデータが参照されるためサイレントデータ障害が起こっても壊れたデータを読むことはありません。
サポートはありますか?
NPO法人つくばOSS技術支援センターで導入サポート、質問、障害のサポートを行っています。
オープンソースとはどういう意味ですか?
ソースコードがすべて公開されていることを意味しています。どのような処理を行っているのか調べることができますし、また必要な機能を追加することもできます。
Gfarm のライセンスは何ですか?
修正BSDライセンスです。著作権表示とライセンス表示を行うことなどは求められますが、ソフトウェアの使用、改変、再配布を原則的に自由に行うことのできるライセンスです。
Gfarm とは何ですか?
広域環境で安全にデータを共有するためのソフトウェアです。詳しくは下記のGfarmファイルシステムをご覧ください。
Gfarm はどこからダウンロードできますか?
Gfarmファイルシステムから配布されています。なお、最新のソースコードは以下のコマンドで入手できます。
  • 安定版 : $ git clone https://github.com/oss-tsukuba/gfarm.git
  • Gfarm2fs : $ git clone https://github.com/oss-tsukuba/gfarm2fs.git
メーリングリストはありますか?
リリース情報やコミットログなどはメーリングリストに登録すると知ることができます。

技術情報

gfmd は、どの程度のメモリを消費しますか?
おおよそエントリ(ファイルまたはディレクトリ)当たり500~1,000バイトのメモリ容量が必要です。メタデータサーバのメモリ量が256GBであれば2.5億~5億エントリ管理することができます。それ以上のエントリを管理するためにはよりメタデータサーバのメモリ容量を増やすか、複数のGfarmファイルシステムに分散させる方法があります。複数のGfarmファイルシステムに分散させた場合でも、ユーザはシンボリックリンクで異なるGfarmをシームレスにアクセスすることが可能です。
gfmd を実行するマシンは、どの程度のディスク消費しますか?
gfmd の必要メモリ量の数倍程度です。
gfmd が利用するディスクリプタ数はどの程度を想定すべきですか?
この値は、gfmd.conf の metadb_server_max_descriptors で指定します。設定する値の計算方法は以下の通りです。
  • Nm: メタデータサーバ数の想定最大値
  • Nf: ファイルシステムノード数の想定最大値
  • Nc: 同時利用クライアント・プロセス数の想定最大値
下記の値以上に設定しておく必要があります。
(Nm - 1) * 2 + Nf * (Nf + 1) + Nc * (Nf + 1) + 若干数
ただし、OSの制限値により増加できないことがあります。その時はOSの制限値を増やしてください。

セキュリティ

Gfarm は firewall に守られていない環境で安全に運用できますか?
Gfarm は、sharedsecret、gsi_auth、gsi, sasl_auth, sasl, tls_sharedsecret, tls_client_certificate, kerberos_auth, kerberos の認証方法をサポートしていますが、Internet 環境では、sharedsecret, gsi_auth, kerberos_auth は安全とは言えません。tls_sharedsecret, tls_client_certificate, sasl, gsi, kerberos 認証の利用を推奨します。これについては、次の項目を参照してください。
認証方式の違いは?
  • 「sharedsecret」認証は、共有鍵を用いた認証です。共有鍵は全ホストのユーザのホームディレクトリに設置する必要があります。認証時、共有鍵は通信されませんが、全ての通信は平文で行われます。
  • 「gsi_auth」認証は、認証処理にX.509証明書を用い、認証後は平文で通信します。「gsi」認証は、X.509証明書を用いた認証方法です。通信はGSI (Grid Security Infrastructure)で暗号化されます。
  • 「tls_sharedsecret」認証は、共有鍵を用いた認証ですがTLSで暗号化された通信路を利用します。「tls_client_certificate」認証は、X.509証明書を用いた認証です。TLSで暗号化された通信路を利用します。GSIの代理証明書も利用可能です。
  • 「sasl_auth」認証は、SASL認証を用いた認証です。認証中はTLSで暗号化された通信路を利用しますが、認証後は平文で通信します。「sasl」認証は、SASL 認証を用いた認証です。TLSで暗号化された通信路を利用します。
  • 「kerberos_auth」認証は、Kerberos 認証を用いた認証です。認証後は平文で通信します。「kerberos」認証は、Kerberos 認証を用いた認証です。認証後もデータは暗号化されます。
  • 共有鍵を用いる「sharedsecret」と「tls_sharedsecret」方式では全ホストにユーザのホームディレクトリを作成し、共有鍵を設置する必要がありますが、それ以外の方式ではユーザのホームディレクトリを作成する必要はありません。

トラブル・シューティング

ファイルシステムノード、メタサーバに接続できません。
デフォルトの設定では、ファイルシステムノードは 600/tcp と600/udp を利用し、メタサーバノードは 601/tcp を利用します。特に "gfhost -lv" で、"x.xx/x.xx/x.xx" と表示されるファイルシステムノードは、600/udp での接続に失敗しています。デフォルトのポート番号は、config-gfarm、config-gfsd のオプションで変更することができます。詳細はインストールガイドを参照してください。ホスト名を逆引きした結果が、サーバー証明書のホスト名や gfarm2.conf の auth 行の名前と一致しているかどうか確認してください。/etc/hosts で、ドメイン名のサフィックス部のないホスト名が、サフィックス部のあるホスト名より先に登録されているのが原因で、この問題が発生することがあります。
ファイルアクセス時、ファイル複製作成時などに認証エラーが起きてしまいます。あるいは、no filesystem node というエラーが発生してしまいます。
ファイルシステムノードに対する認証設定が正しくなされていない可能性があります。gfsd のコマンドラインオプションに -dv を追加して起動すると、gfsd がフォアグラウンドで起動し、詳細なメッセージを出力します。メッセージに従いエラーの原因を解決してください。共有鍵認証の場合は、各ファイルシステムノードのホームディレクトリに同一の共有鍵ファイル(~/.gfarm_shared_key) が置かれているか確認してください。
ファイルシステムノードのディスクがクラッシュしてしまいました。どうすればいいでしょうか?
gfncopy コマンドでファイル複製数を2以上に設定している場合は、他のファイルシステムノードに複製が存在するので問題はありません。たまたまクラッシュしたノードのファイルを読み込みアクセスしていた場合は、自動的に network_receive_timeout 秒後に他のファイルシステムノードの複製の読み込みに切り替わり、アプリケーションにもエラーは通知されません。network_receive_timeout はデフォルトでは60秒です。ただし、クラッシュしたノードのファイルを書き込みアクセスしていた場合は、そのアプリケーションに対し、書き込みエラーが返り、更新は失われます。クラッシュすると replica_check_host_down_thresh 秒後に、自動的に指定した複製数の複製が作成されます。デフォルトでは3時間です。ファイル複製数を2以上に設定していない場合は、クラッシュしたファイルシステムノードにしかない複製はアクセスできなくなります。ただし、truncate は可能です。ファイルシステムノードを復旧すると、起動時にメタデータとスプールディレクトリの一貫性チェックが行われ、一貫していない場合は、/lost+found ディレクトリに移動されます。
ファイルの更新時刻がおかしいようです。
ファイルの更新時刻は実際のファイルを作成したファイルシステムノードの更新時刻となります。ファイルシステムノードの時刻が正しく設定されていない場合、そのファイルシステムノードに書き込まれたファイルの更新時刻などがおかしくなってしまいます。NTPなどを利用してファイルシステムノードの時刻を正しく設定してください。
gfmd や gfsd が異常終了した際、どうすればコアファイルを回収できますか?
インストールに設定例を示していますので参考にしてください。
InfiniBand があるのにRDMAができません。
  • configure 時にクライアント、gfsd ともに --with-infiniband を指定してありますか。例えば、以下のコマンドでライブラリが表示されますか。% ldd /usr/local/lib/libgfarm.so |grep libibverbs.so
  • "insufficient memlock size(...), please expand memlock size" のエラーメッセージは出ていませんか。出ていれば資源制限を拡張してください。/etc/security/limits.conf を編集して "* hard memlock unlimited" を指定してみてください。
  • "ibv_.... failed, no memory" のエラーメッセージは出ていませんか。出ていれば資源制限がかかっているか、実際にメモリーロックサイズが大きすぎるためで、有効なRDMA利用はできません。当該プロセスのメモリロックサイズを確認してみてください。% grep VmLck /proc/<pid>/status
矢印アイコン