## Name

config-gfarm — Gfarmのメタデータサーバのセットアップ

## Synopsis

`config-gfarm` [`オプション`]

## DESCRIPTION

config-gfarmは、 Gfarm ファイルシステムのメタサーバをセットアップするためのユーティリティです。 メタデータサーバのサーバプログラムは'gfmd'と呼ばれています。 Gfarmの開発、評価、またはテストといった 私的な用途でファイルシステムを使用する場合を除き、 config-gfarmを実行するためには、 ルート権限が必要です。

config-gfarmは下記に示した順に処理を実行します。

1. バックエンドDBをセットアップします。

2. Gfarmの設定ファイル `%%SYSCONFDIR%%/gfarm2.conf`や `%%SYSCONFDIR%%/gfsd.conf`を生成します。

3. バックエンドDBや、gfmdと呼ばれる Gfarmメタデータサーバを起動/停止するためのスクリプト(または、設定ファイル)を作成します。

   大抵のOSにおいて、 config-gfarmは、 起動/停止スクリプトgfmdと gfarm-pgsqlを `/etc/init.d`または `/etc/rc.d/init.d`に置きます。 (どちらに置くのかは、OSに依存します。)

   Red Hat Enterprise Linux 7 またはそれ以降のsystemdで動作するLinuxにおいて、 config-gfarmは、 ユニット設定ファイルである`gfmd.service`や `gfarm-pgsql.service`を `/etc/systemd/system`ディレクトリに置きます。 その後、 systemctl enable gfmd.service、 systemctl enable gfarm-pgsql.service を順に実行します。

4. バックエンドDBや、gfmdを起動します。

5. unconfig-gfarm.sh というスクリプトを %%SYSCONFDIR%% 上に作成します。 このスクリプトは、メタデータサーバのセットアップの取り消しを行います。 gfmd とバックエンドDBを停止し、 config-gfarm によって作成されたファイル (unconfig-gfarm.sh スクリプト自身を含む) をすべて消去します。

config-gfarmを使用して メタデータサーバをセットアップする前に、 config-gfarm -tを実行することを推奨します。 `-t`オプションを付けて実行することにより、 セットアップする代わりに全ての設定パラメータを表示します。

    $ config-gfarm -t
    prefix                 [--prefix]:
    metadata backend             [-b]: postgresql
    (available backend: postgresql )
    metadata     directory       [-l]: /var/gfarm-pgsql
    metadata log directory       [-L]: /var/gfarm-pgsql/pg_xlog
    postgresql admin user        [-U]: miles
    postgresql admin password    [-W]: (auto generated)
    postgresql user              [-u]: gfarm
    postgresql password          [-w]: (auto generated)
    postgresql prefix            [-P]: /usr
    postgresql version           [-V]: 9.2
    postgresql XML supported     [-X]: no
    metadata replication         [-r]: no
    metaserver hostname          [-h]: host1.example.org
    matadata admin user          [-A]: miles
    matadata admin dn            [-D]:
    portmaster port              [-p]: 10602
    gfmd port                    [-m]: 601
    auth type                    [-a]: sharedsecret
    rc script for gfmd               : /etc/init.d/gfmd
    rc script for backend            : /etc/init.d/gfarm-pgsql
    gfmd conf file                   : /etc/gfmd.conf
    gfarm client conf file           : /etc/gfarm2.conf
    gfmd pid file                    : /var/run/gfmd.pid
    backend pid file                 : /var/run/postmaster.pid

[ ]で囲まれたオプション名は、 オプションとして指定できることを意味しています。

## OPTIONS

`--prefix` `パス`

  このオプションを与えた場合、 以下に挙げたgfmdとバックエンドDBに関連する 複数のパスが設定されます。 具体的には、以下の通りです。

  - Gfarmのメタデータを置くためのディレクトリ。 バックエンドDBがPostgreSQLである場合は、 `PREFIX/var/gfarm-pgsql`となります。 また、このパスは`-L`オプションによって変更可能です。 `--prefix`と`-l`オプションを同時に指定した場合、 `-l`オプションが優先されます。

  - Gfarmのメタデータに対するログファイルを置くためのディレクトリ。 バックエンドDBがPostgreSQLである場合は、 `PREFIX/var/gfarm-pgsql/pg_xlog`となります。 また、このパスは`-L`オプションによって変更可能です。 `--prefix`と`-L`オプションを同時に指定した場合、 `-L`オプションが優先されます。

  - gfmdのジャーナルファイルを置くためのディレクトリ。 これは、`PREFIX/var/gfarm-metadata/journal`となります。 また、このパスは`-j`オプションによって変更可能です。 `--prefix`と`-j`オプションを同時に指定した場合、 `-j`オプションが優先されます。

  - gfmdとバックエンドDBのPIDファイル を置くためのディレクトリ。 これは、`PREFIX/var/run`となります。

  - 設定ファイルを置くためのディレクトリ。 これは、`PREFIX/etc`となります。

  - gfmdとバックエンドDBの起動/停止スクリプト を置くためのディレクトリ。 これは、`PREFIX/etc/init.d`、または `PREFIX/rc.d/init.d/etc`となります。 (どちらに置くのかは、OSに依存します。)

  - ホスト上でsystemdが起動している場合に、特殊な例外が存在します。 そのホスト上で`--prefix`オプションとして空文字列以外を指定すると、 config-gfarmはsystemdにユニット設定ファイルを置きません。 その代わりに、`PREFIX/etc/init.d`に 旧形式の起動/停止スクリプトを置きます。

  - セットアップの取り消しを行うスクリプト unconfig-gfarm.sh。 これは、PREFIX/etc/unconfig-gfarm.sh となります。

  デフォルトでは""(空文字列)です。

`-b` `バックエンドDB`

  バックエンドDBを指定することができます。 現在、"postgresql" (PostgreSQL) だけがサポートされています。 "ldap" (LDAP) は以前にサポートされていましたが、 サポートは継続されていません。 config-gfarm -tは、 利用可能なバックエンドDBをリスト表示します。

  "postgresql" がリストに存在する場合、PostgreSQLがデフォルトとして選択されます。 利用可能なバックエンドDBがldapのみである場合、 LDAPがデフォルトとして選択されてしまいます。 リストにないバックエンドDBをGfarmにサポートさせたい場合、 Gfarmを再度コンパイルする必要があるため、 注意してください。

`-d` `ダイジェストタイプ`

  チェックサム計算を有効するとともに、チェックサムのダイジェストタイプを 指定します。 引数 `ダイジェストタイプ` には、 ホスト上にインストールされた OpenSSL ライブラリが対応している ダイジェストタイプ名を小文字 (例: "md5") で記します。

`-U` `Gfarmの管理ユーザ名`

  Gfarmファイルシステムの管理ユーザ名を指定することができます。 デフォルト値はOSによって異なるため、 config-gfarm -tを実行し、 ユーザ名を確認してください。

`-u` `ユーザ名`

  このオプションを付与した場合、 セットアップしたgfmdは、 指定したユーザ名でバックエンドDBに接続します。 デフォルトは、"gfarm"です。

`-P` `インストール先のディレクトリ`

  このオプションを付与した場合、 バックエンドDBに対するインストール先のディレクトリ (例えば、/usr/local)を指定することができます。 config-gfarmがバックエンドDBの管理コマンド (例えば、PostgreSQLでのinitdb)を実行する際、 指定したディレクトリの下にこのコマンドが インストールされていることを前提としています。 このオプションを省略した場合、 config-gfarmは、 環境変数`PATH`のリストからそのコマンドへのディレクトリを 探し出します。

`-V` `バージョン`

  config-gfarmに対するバックエンドDBの バージョンを表示することができます。 多くの場合、config-gfarmは、 正しいバージョン番号を検出することができます。 そのため、config-gfarmが バージョン番号の検出に失敗した場合にのみ、 このオプションを使用することをお勧めします。

`-l` `メタデータ用ディレクトリ`

  バックエンドDBがGfarmのメタデータを記録したファイルを置く ディレクトリへのパスを指定することができます。

  バックエンドDBがPostgreSQLである場合、 指定したディレクトリは一般にPGDATAと呼ばれています。 デフォルトでは`PREFIX/var/gfarm-pgsql` が設定されており、このPREFIXは`--prefix`オプションで 与えられた値となります。

`-L` `ログファイル用ディレクトリ`

  バックエンドDBがログファイルを置くディレクトリへのパスを指定することができます。 バックエンドDBがPostgreSQLである場合、 デフォルトでは`PREFIX/var/gfarm-pgsql/pg_xlog` が設定されており、このPREFIXは`--prefix`オプションで 与えられた値となります。

`-h` `ホスト名`

  メタデータサーバを認識するために使用されるホスト名を指定することができます。 デフォルトでは、DNS上におけるそのホストの完全修飾ドメイン名(FQDN)となります。

`-j` `ジャーナルファイル用ディレクトリ`

  gfmdがジャーナルファイルを置くディレクトリ のパスを指定することができます。 このオプションは、`-r`オプションによりメタデータの複製が 有効となっている場合にのみ影響を及ぼします。デフォルトでは、 `PREFIX/var/gfarm-metadata/journal` が設定されており、このPREFIXは`--prefix`オプションで 与えられた値となります。

`-A` `ユーザ名`

  Gfarmファイルシステムの管理者を指定することができます。 このオプションを省略した場合、 config-gfarmは who am iコマンド を実行することによりユーザ名を取得します。

`-D` `サブジェクトDN`

  グローバルユーザとしての管理者のサブジェクトDNを指定することができます。 GSI認証を行う場合、このオプションは必須です。

`-p` `バックエンドDB用ポート番号`

  設定したバックエンドDBが待ち受けるTCPポート番号を指定することができます。 デフォルトでは10602が指定されます。

`-m` `gfmd用ポート番号`

  設定したgfmdが待ち受ける TCPポート番号を指定することができます。 デフォルトではプライベートモードの場合に10601、 それ以外では601が指定されます。

`-a` `認証方法`

  認証方法を指定することができます。 現在は、"sharedsecret" または "gsi" を使用することができ、 デフォルトは "sharedsecret"となっています。

`--help`

  このオプションを付与した場合、 config-gfarmの使用法を表示した後、 終了します。

`-S`

  このオプションを付与した場合、 プライベートモードを有効にします。 config-gfarmは、 ルート権限なしで実行可能なGfarmファイルシステムをセットアップします。 具体的には、以下の通りに設定手順を変更します。

  - gfmdのデフォルト待ち受けポート番号 (`-m`オプションに対応)は、601から10601に変更されます。

  - ユーザマップファイル`%%SYSCONFDIR%%/usermap`が 作成されます。 メタデータサーバは、起動時にこのファイルを読み込みます。 プライベートモードでない場合、OS上にユーザアカウント _gfarmmd と _gfarmfs が 作成されていなければいけません。 ユーザマップファイルがあれば、ユーザアカウントの作成は必要ありません。 このファイルは、実際のユーザアカウントに対する Gfarmシステムユーザのマッピングを定義しています。

  - gfsd設定ファイル`%%SYSCONFDIR%%/gfsd.conf` が作成されます。 プライベートモードでない場合、 gfsdは、メタデータサーバと接続する全てのGfarmプログラムが読み込む前に、 gfarm設定ファイル `%%SYSCONFDIR%%/gfarm2.conf` を読み込みます。 `%%SYSCONFDIR%%/gfsd.conf`は、 プライベートモードで起動するgfsd向けにカスタマイズされた 設定ファイルです。

  `-S`オプションは、起動/停止スクリプトや 設定ファイルの位置を決して変更しません。 これらのファイルのデフォルト位置は 通常では特権ユーザの場合のみ書き込み可能であるため、 config-gfarmはこれらのファイルの生成に 失敗してしまいます。この問題を回避するためには、 `--prefix`オプションを合わせて指定してください。

`-N`

  このオプションを付与した場合、 gfmdとバックエンドDBを起動しません。

`-f`

  このオプションを付与した場合、 強制的に存在しているセットアップを上書きします。

`-t`

  このオプションを付与した場合、 人間が読みやすい形式で全ての設定パラメータの値を表示した後、 すぐに終了します。

`-T`

  `-t`オプションと似ていますが、 設定値をKEY=VALUE形式で表示します。

`-r`

  このオプションを付与した場合、 メタデータサーバ同士でのメタデータの複製を有効にします。

`-W` `バックエンドDB用パスワード`

  バックエンドDBの管理者パスワードを指定することができます。 このオプションは、ユーザ名を指定する`-U`オプションに対応します。 デフォルトで、パスワードは自動的に生成されます。

`-w` `バックエンドDBへの接続用パスワード`

  設定されたgfmdは、 指定されたパスワードを使用してバックエンドDBと接続します。 このオプションは、ユーザ名を指定する`-u`オプションに対応します。 デフォルトで、パスワードは自動的に生成されます。

`-X`

  このオプションを付与した場合、 拡張ファイル属性をクエリするためのXML Path言語(XPath) のサポートを有効にします。

`-E`

  このオプションを付与した場合、 データチェックサムオプションを付けたPostgreSQLセットアップします。 config-gfarmは、 `--data-checksums`オプションをPostgreSQLコマンド initdbに渡します。 この機能を使用するには、PostgreSQL 9.3またはそれ以降のバージョンが必要です。 このオプションは、バックエンドDBがPostgreSQLであるときのみ機能します。

## FILES

`%%SYSCONFDIR%%/gfarm2.conf`

  Gfarmのクライアントが参照する設定ファイル

`%%SYSCONFDIR%%/gfmd.conf`

  gfmdが参照する設定ファイル

`%%SYSCONFDIR%%/gfsd.conf`

  gfsdが参照する設定ファイル (プライベートモードの場合のみ使用)

`%%SYSCONFDIR%%/usermap`

  ユーザマッピングを定義しているファイル (プライベートモードの場合のみ使用)

`/etc/init.d/gfarm-pgsql`

  GfarmのバックエンドDBとして動作する PostgreSQLの起動/停止スクリプトファイル

`/etc/init.d/gfmd`

  gfmdが参照する起動/停止スクリプトファイルです。

`/etc/systemd/system/gfarm-pgsql.service`

  systemdにより読み込まれ、 GfarmのバックエンドDBとして動作する PostgreSQLのユニット設定ファイル

`/etc/systemd/system/gfmd.service`

  systemdにより読み込まれる、 gfmdのユニット設定ファイル

## SEE ALSO

gfarm2.conf(5), config-gfsd(8)