GFSERVICE(1)

NAME
gfservice - リモートホストから Gfarm のサーバーを制御する。

SYNOPSIS

gfservice [オプション] サブコマンド [ホストID] [引数 ...]

DESCRIPTION

gfservice は、Gfarm の管理者がリモートホスト上の サーバー (gfmd、gfsd、PostgreSQL) を操作するためのツールです。 今のところ、OpenLDAP には対応していません。 サーバーの実行開始、停止、セットアップ (config-gfarm や config-gfsd の実行)、 サーバー廃止の後始末といったことができます。

gfservice のコマンド行は、たとえば次のようになります。

    	gfservice start-gfmd gfmd2

ここで、「start-gfmd」はサブコマンド、 「gfmd2」 はホストID をそれぞれ表しています。 このコマンド行を実行すると、gfservice は 「gfmd2」と名付けられたホスト上の gfmd の 実行開始を試みます。 リモートのサーバーホストを指定する際、gfservice では ホスト名の代わりにホストID を用います。 ホストID (gfmd1、 gfmd2、...) は gfservice 用 の設定ファイルで定義します。 以下に、設定ファイルの記述例を載せます。

    	gfmd1=metadb1.example.com
    	gfmd1_CONFIG_GFARM_OPTIONS="-A $LOGNAME -X"
    	gfmd2=metadb2.example.com
    	gfmd2_CONFIG_GFARM_OPTIONS="-A $LOGNAME -X"

    	gfsd1=spool1.example.com
    	gfsd2=spool2.example.com

gfservice は、読み込むべき設定ファイルのパスを次の要領 で決定します。

    1. 「-f ファイル」オプションが指定 されていれば、そのファイルを読み込みます。

    2. 上記以外の場合で、環境変数 GFSERVICE_CONF が定義され、 かつ値が空文字列でなければ、値として記されたファイルを読み込みます。

    3. 上記以外の場合は、$HOME/.gfservice を読み込みます。

gfservice は設定ファイルの読み込みに失敗すると、 エラーメッセージを出力して、ただちに終了します。 設定ファイルそれ自体は Bourne シェルスクリプトで、gfservice はそのファイルを自身の一部として取り込みます (正確に言えば、スクリプト として評価します)。 設定ファイルについての詳しい説明は、gfservice.conf(5) を参照して下さい。

gfservice は、リモートホストと接続するために、SSH (Secure Shell) を使用します。 サブコマンド 1 個の処理を遂行する間、何度も ssh を実行することがあるので、SSH エージェント (OpenSSH の ssh-agent など) を用いるか、パスフレーズが空の 認証キーを用いるなどして、パスフレーズを毎回入力しなくて済むように することをお薦めします。

SSH に加えて、gfservice はリモートホスト上で root 権限を得るために Sudo コマンドを使用します。 各リモートホストの sudoers ファイル (Sudo の設定 ファイル) に以下のような行を足して下さい。

    	user ALL=(root, _gfarmfs, _gfarmmd) NOPASSWD: gfservice-agent

ここで、user は gfservice を実行するユーザの名前です。 NOPASSWD は必須ではありませんが、省くと sudo は何度も パスワードを訊いてくることがあります。

gfservice は SSH と Sudo を用いて、リモートホスト上にある gfservice-agent というエージェントコマンドを実行します ので、gfservice コマンドで操作したいホストすべてに、 gfservice-agent をインストールしておく必要があります。

gfserviceはユーザが新しくサブコマンドを追加できるよ うに、プラグインシステムを採用しています。 詳しい説明は "PLUG-IN SYSTEM" の節を参照して下さい。

OPTIONS

-d
    デバッグ情報を出力します。 gfservice は、このオプションを gfservice-agent に渡しますので、 gfservice-agent からもデバッグ情報が出力されます。

-f ファイル
    デフォルトの設定ファイルの代わりに、「ファイル」を 読み込みます。

-t 時間
    操作のタイムアウトを、「時間」秒とします。 gfservice がサーバープログラム (gfmd、gfsd、バックエンド データベース) の実行開始ないし終了を試みる際、処理が完了するか、もしくは gfservice の指定時間が経過するかまで待ちます。 「時間」として 「no」を指定すると、タイムアウトは 起きなくなります。 デフォルト値は、「no」です。

-k
    このオプションがconfig-gfarm サブコマンドもしくは config-gfarm-master サブコマンドと共に指定された場合、 gfservice は gfkey コマンドを用いて 共有秘密鍵ファイルを作成します。

SUB-COMMANDS FOR GFMD

以下に挙げているのは、gfmd を操作するサブコマンドです。 コマンド行に与えるホストID は、「gfmdn」 (gfmd1, gfmd2, ...) でなくてはなりません。 それ以外の場合、gfservice はエラーを通知してただちに 終了します。

backend-db-status ホストID
    バックエンドデータベースが実行中であれば、終了コード 0 で終了します。 それ以外の場合は、1 で終了します。

gfmd-status ホストID
    gfmd が実行中であれば、終了コード 0 で終了します。 それ以外の場合は、1 で終了します。

start-backend-db ホストID
    バックエンドデータベースが実行中でなければ、実行を開始します。

start-gfmd ホストID
    gfmd が実行中でなければ、実行を開始します。

start-gfmd-master ホストID
    サブコマンド start-gfmd の別名です。

start-gfmd-slave ホストID
    サブコマンド start-gfmd と同じですが、gfmd には -S オプションが付与されます。

start-gfarm ホストID
    バックエンドデータベースおよび gfmd が実行中でなければ、 実行を開始します。

start-gfarm-master ホストID
    サブコマンド start-gfarm の別名です。

start-gfarm-slave ホストID
    サブコマンド start-gfarm と同じですが、gfmd には -S オプションが付与されます。

stop-backend-db ホストID
    バックエンドデータベースが実行中なら、実行を停止します。

stop-gfmd ホストID
    gfmd が実行中なら、実行を停止します。

stop-gfarm ホストID
    バックエンドデータベースおよび gfmd が実行中なら、 実行を停止します。

kill-gfmd ホストID
    gfmd が実行中なら、強制停止 (SIGKILL を送付) します。

restart-backend-db ホストID
    サブコマンド stop-backend-db と start-backend-db を続けて実行します。

restart-gfmd ホストID
    サブコマンド stop-gfmd」と 「start-gfmd を続けて実行します。

restart-gfmd-master ホストID
    サブコマンド restart-gfmd の別名です。

restart-gfmd-slave ホストID
    サブコマンド stop-gfmd と start-gfmd-slave を続けて実行します。

restart-gfarm ホストID
    サブコマンド stop-gfarm と start-gfarm を続けて実行します。

restart-gfarm-master ホストID
    サブコマンド restart-gfarm の別名です。

restart-gfarm-slave ホストID
    サブコマンド stop-gfarm と start-gfarm-slave を続けて実行します。

promote ホストID
    gfmd をスレーブからマスターへ昇格させます。

promote-gfmd ホストID
    サブコマンド promote の別名です。

set-gfmd-conf ホストID 設定名称 値
    リモートホスト上の gfmd.conf ファイルに

        	設定名称 値

    という行を加えます。 既に gfmd.conf に 「設定名称」という行が存在している場合、 gfservice はそれを削除してから、新たに行を追加します。

set-gfsd-conf ホストID 設定名称 値
    リモートホスト上の gfsd.conf ファイルに

        	設定名称 値

    という行を加えます。 既に gfsd.conf に 「設定名称」という行が存在している場合、 gfservice はそれを削除してから、新たに行を追加します。

unset-gfmd-conf ホストID 設定名称
    リモートホスト上の gfmd.conf ファイルから 「設定名称」行を削除します。 gfmd.conf ファイルに「設定名称」 行がない場合、ファイルは更新されません。

unset-gfsd-conf ホストID 設定名称
    リモートホスト上の gfsd.conf ファイルから 「設定名称」行を削除します。 gfsd.conf ファイルに「設定名称」 行がない場合、ファイルは更新されません。

backup-backend-db ホストID
    リモートホスト上のバックエンドデータベースのバックアップを行い、 バックアップデータを標準出力へ出力します。

backup-gfmd-conf ホストID
    リモートホスト上の gfarm2.conf ファイルを、標準出力 へ出力します。

backup-gfsd-conf ホストID
    リモートホスト上の gfsd.conf ファイルを、標準出力 へ出力します。

backup-usermap ホストID
    リモートホスト上の usermap ファイルを、標準出力 へ出力します。

restore-backend-db ホストID
    リモートホスト上のバックエンドデータベースのデータを復旧します。 バックアップデータは、標準入力から読み込みます。

restore-gfmd-conf ホストID
    リモートホスト上の gfmd.conf ファイルを復旧します。 gfservice は、gfmd.conf の バックアップデータを標準入力から読み込みます。

restore-gfsd-conf ホストID
    リモートホスト上の gfsd.conf ファイルを復旧します。 gfservice は、gfsd.conf の バックアップデータを標準入力から読み込みます。

restore-usermap ホストID
    リモートホスト上の usermap ファイルを復旧します。 gfservice は、usermap の バックアップデータを標準入力から読み込みます。

config-gfarm ホストID
    リモートホスト上で config-gfarm コマンドを実行します。 このとき、設定ファイルで変数 「gfmdn_CONFIG_GFARM_OPTIONS」が宣言されていれば、 その値が config-gfarm にオプションとして付与されます。 レプリケーション機能を有効にするときは、このサブコマンドは使用せず、代わりに config-gfarm-master ないし config-gfarm-slave を使って下さい。 -kオプションが指定されている場合、 gfserviceは gfkey コマンドを用いて gfmd ホスト上に共有秘密鍵ファイルを作成します。

config-gfarm-master ホストID
    このサブコマンドは config-gfarm と基本的に同じですが、 gfmd のレプリケーションが自動的に有効になります。

config-gfarm-slave ホストID マスターホストID
    サブコマンド config-gfarm と基本的に同じですが、 レプリケーション機能が自動的に有効になり、 「マスターホストID」上で動作する gfmd のスレーブ として動作します。 gfservice は gfmdhost コマンドを 用いてこのスレーブホストをサーバーリストに加えます。 また、マスター gfmd ホスト上の gfarm2.conf ファイル を更新して、metadb_server_list にこのスレーブホストを 加え、設定ファイルで定義されているすべてのホストに配布します。 変数「gfmdn_PRIVATE_MODE」の値が「true」に セットされている場合は、同様に gfsd.conf ファイル を更新し、すべての gfmd ホストと gfsd ホストに配布します。 変数「gfmdn_AUTH_TYPE」の値が「sharedsecret」 の場合、共有秘密鍵ファイルをマスター gfmd ホストからこのスレーブ gfmd ホストへコピーします。

unconfig-gfarm ホストID
    サブコマンド stop-gfsd を実行して、その後 gfmd や バックエンドデータベースが作成したファイルやディレクトリをすべて削除します。 スレーブ gfmd を廃止する場合は、代わりにサブコマンド unconfig-gfarm-slave を使用して下さい。

unconfig-gfarm-master ホストID
    サブコマンド unconfig-gfarm の別名です。

unconfig-gfarm-slave ホストID マスターホストID
    サブコマンド unonfig-gfarm と基本的に同じですが、 以下の追加処理を行います。 gfmdhost コマンドを用いてサーバーリストから、その スレーブホストを削除します。 また、設定ファイルで定義されているすべてのホストの gfarm2.conf を更新し、 metadb_server_list に設定されたサーバーリストから、 そのスレーブホストを削除します。 変数「gfmdn_PRIVATE_MODE」の値が「true」に セットされている場合は、同様に gfsd.conf ファイル を更新し、すべての gfmd ホストと gfsd ホストに配布します。

SUB-COMMANDS FOR GFSD

以下に挙げているのは、gfsd を操作するサブコマンドです。 コマンド行に与えるホストID は、「gfsdn」 (gfsd1, gfsd2, ...) でなくてはなりません。 それ以外の場合、gfservice はエラーを通知してただちに 終了します。

gfsd-status ホストID
    gfsd が実行中であれば、終了コード 0 で終了します。 それ以外の場合は、1 で終了します。

start-gfsd ホストID
    gfsd が実行中でなければ、実行を開始します。

stop-gfsd ホストID
    gfsd が実行中なら、実行を停止します。

restart-gfsd ホストID
    サブコマンドstop-gfsd と start-gfsd を続けて実行します。

set-gfsd-conf ホストID 設定名称 値
    gfmd 用の set-gfsd-conf サブコマンドと同じです。

unset-gfsd-conf ホストID 設定名称
    gfmd 用の unset-gfsd-conf サブコマンドと同じです。

backup-gfsd-conf ホストID
    gfmd 用の backup-gfsd-conf サブコマンドと同じです。

backup-usermap ホストID
    gfmd 用の backup-usermap サブコマンドと同じです。

restore-gfsd-conf ホストID
    gfmd 用の restore-gfsd-conf サブコマンドと同じです。

restore-usermap ホストID
    gfmd 用の restore-usermap サブコマンドと同じです。

config-gfsd ホストID
    リモートホスト上で config-gfsd コマンドを実行します。 このとき、設定ファイルで変数 「gfsdn_CONFIG_GFARM_OPTIONS」が宣言されていれば、 その値が config-gfsd にオプションとして付与されます。 また、gfservice は gfhost コマンド を用いて、リモートホストをファイルシステムノードとして登録します。 変数「gfsdn_AUTH_TYPE」の値が「sharedsecret」 の場合、共有秘密鍵ファイルを gfmd1 から gfsd ホストへコピーします。

unconfig-gfsd ホストID
    サブコマンド stop-gfsd を実行して、その後 gfsd が 作成したファイルやディレクトリをすべて削除します。

SUB-COMMANDS FOR CLIENT

以下に挙げているのは、クライアントを操作するサブコマンドです。 コマンド行に与えるホストID は、「gfmdn」 (gfmd1, gfmd2, ...)、「gfsdn」(gfsd1, gfsd2, ...)、 「clientn」(client1, client2, ...) のいずれか でなくてはなりません。 それ以外の場合、gfservice はエラーを通知してただちに 終了します。

mount ホストID ディレクトリ オプション...
    リモートホスト上の「ディレクトリ」に、Gfarm2 ファイルシステムをマウントします。 引数「オプション」は gfarm2fs コマンドへの引数とみなされます。

unmount ホストID ディレクトリ
    リモートホスト上の「ディレクトリ」にマウントされた Gfarm2 ファイルシステムをアンマウントします。

umount ホストID ディレクトリ
    サブコマンド unmount の別名です。

set-gfarm-conf ホストID 設定名称 値
    リモートホスト上の gfarm2.conf ファイルに

        	設定名称 値

    という行を加えます。 既に gfarm2.conf に 「設定名称」という行が存在している場合、 gfservice はそれを削除してから、新たに行を追加します。

unset-gfarm-conf ホストID 設定名称
    リモートホスト上の gfarm2.conf ファイルから 「設定名称」行を削除します。 gfarm2.conf ファイルに「設定名称」 行がない場合、ファイルは更新されません。

backup-gfarm-conf ホストID
    リモートホスト上の gfarm2.conf ファイルを、標準出力 へ出力します。

backup-shared-key ホストID
    リモートホスト上の共有秘密鍵ファイルを、標準出力へ出力します。

restore-gfarm-conf ホストID
    リモートホスト上の gfarm2.conf ファイルを復旧します。 gfservice は、gfarm2.conf の バックアップデータを標準入力から読み込みます。

restore-shared-key ホストID
    リモートホスト上の共有秘密鍵ファイルを復旧します。 gfservice は、共有秘密鍵のバックアップデータを標準入力 から読み込みます。

config-client ホストID
    変数「clientn_AUTH_TYPE」の値が「sharedsecret」 の場合、共有秘密鍵ファイルを gfmd1 からクライアントホストへコピーします。

unconfig-client ホストID
    リモートホスト上の gfarm2.conf ファイルおよび 共有秘密鍵ファイルを削除します。

gfcmd ホストID コマンド名 コマンド引数 ...
    リモートホスト上で Gfarm コマンドを実行します。

gfcmd-root ホストID コマンド名 コマンド引数 ...
    リモートホスト上にて、root 権限で Gfarm コマンドを実行します。

grid-proxy-init host-id コマンド引数 ...
    リモートホスト上で grid-proxy-init コマンドを実行します。

SUB-COMMANDS FOR MULTIPLE HOSTS

以下に挙げているのは、複数のホストを操作するサブコマンドです。 コマンド行で、ホストID を指定することはできません。

start-all
    すべてのバックエンドデータベース、gfmd、gfsd を起動します。

stop-all
    すべての gfsd、gfmd、バックエンドデータベースを停止します。

kill-gfmd-all
    すべての gfmd を強制停止 (SIGKILL を送付) します。

restart-all
    サブコマンド stop-all と start-all を続けて実行します。

config-all
    gfmd1 に対して "config-gfarm-master" を実行し、それ以外のすべての gfmd に対して "config-gfarm-slave" を実行します。 次にすべての gfsd に対して "config-gfsd" を実行します。 最後にすべてのクライアントに対して、"config-client" を 実行します。

unconfig-all
    すべてのクライアントに対して、"unconfig-client" を実行 します。 次にすべての gfsd に対して "unconfig-gfsd" を実行します。 最後にすべての gfmd に対して "unconfig-gfarm" を 実行します。

PLUG-IN SYSTEM

gfserviceはユーザが新しくサブコマンドが追加できるよ うに、プラグインシステムを採用しています。指定されたサブコマンドを gfserviceが提供していない場合、 gfserviceコマンドは %%DATADIR%%/gfarm/gfservice 以 下のサブコマンド名のファイルを参照します。

サブコマンドのファイルは Bourneシェルスクリプトで書きます。 サブコマンド "name" のサブコマンドファイル は、gfserviceから実行される "subcmd_name"という名 前のシェル関数、 gfservice-agentから実行される "subcmd_name_agent" という名前のシェル関数が実装されている必要があります。

サブコマンドがユーザが追加した別のサブコマンドに依存している時のために、 サブコマンド "name" のサブコマンドファイル は、 "name_depends" と いう名前のシェル関数で、そのサブコマンドが依存している他のサブコマンド のリストを返す必要があります．サブコマンドのリストはスペースで区切られ たサブコマンドの文字列です．依存している他のサブコマンドがない場合は空文字列を返して 下さい。同様に、サブコマンドファイルは "name_agent_depends" という名前のシェル関数で、そのサブコマンドのエージェントが依存している 他のサブコマンドのリストを返す必要があります。