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 は、読み込むべき設定ファイルのパスを次の要領 で決定します。
「-f
ファイル
」オプションが指定
されていれば、そのファイル
を読み込みます。
上記以外の場合で、環境変数 GFSERVICE_CONF
が定義され、
かつ値が空文字列でなければ、値として記されたファイルを読み込みます。
上記以外の場合は、$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" の節を参照して下さい。
-d
デバッグ情報を出力します。 gfservice は、このオプションを gfservice-agent に渡しますので、 gfservice-agent からもデバッグ情報が出力されます。
-f
ファイル
デフォルトの設定ファイルの代わりに、「ファイル
」を
読み込みます。
-t
時間
操作のタイムアウトを、「時間
」秒とします。
gfservice がサーバープログラム (gfmd、gfsd、バックエンド
データベース) の実行開始ないし終了を試みる際、処理が完了するか、もしくは
gfservice の指定時間が経過するかまで待ちます。
「時間
」として 「no」を指定すると、タイムアウトは
起きなくなります。
デフォルト値は、「no」です。
-k
このオプションがconfig-gfarm サブコマンドもしくは config-gfarm-master サブコマンドと共に指定された場合、 gfservice は gfkey コマンドを用いて 共有秘密鍵ファイルを作成します。
以下に挙げているのは、gfmd を操作するサブコマンドです。
コマンド行に与えるホストID は、「gfmdn
」
(gfmd1, gfmd2, ...) でなくてはなりません。
それ以外の場合、gfservice はエラーを通知してただちに
終了します。
ホストID
バックエンドデータベースが実行中であれば、終了コード 0 で終了します。 それ以外の場合は、1 で終了します。
ホストID
gfmd が実行中であれば、終了コード 0 で終了します。 それ以外の場合は、1 で終了します。
ホストID
バックエンドデータベースが実行中でなければ、実行を開始します。
ホストID
gfmd が実行中でなければ、実行を開始します。
ホストID
サブコマンド start-gfmd の別名です。
ホストID
サブコマンド start-gfmd と同じですが、gfmd には
-S
オプションが付与されます。
ホストID
バックエンドデータベースおよび gfmd が実行中でなければ、 実行を開始します。
ホストID
サブコマンド start-gfarm の別名です。
ホストID
サブコマンド start-gfarm と同じですが、gfmd には
-S
オプションが付与されます。
ホストID
バックエンドデータベースが実行中なら、実行を停止します。
ホストID
gfmd が実行中なら、実行を停止します。
ホストID
バックエンドデータベースおよび gfmd が実行中なら、 実行を停止します。
ホストID
gfmd が実行中なら、強制停止 (SIGKILL を送付) します。
ホストID
サブコマンド stop-backend-db と start-backend-db を続けて実行します。
ホストID
サブコマンド stop-gfmd」と 「start-gfmd を続けて実行します。
ホストID
サブコマンド restart-gfmd の別名です。
ホストID
サブコマンド stop-gfmd と start-gfmd-slave を続けて実行します。
ホストID
サブコマンド stop-gfarm と start-gfarm を続けて実行します。
ホストID
サブコマンド restart-gfarm の別名です。
ホストID
サブコマンド stop-gfarm と start-gfarm-slave を続けて実行します。
ホストID
gfmd をスレーブからマスターへ昇格させます。
ホストID
サブコマンド promote の別名です。
ホストID
設定名称
値
リモートホスト上の gfmd.conf
ファイルに
設定名称
値
という行を加えます。
既に gfmd.conf
に
「設定名称
」という行が存在している場合、
gfservice はそれを削除してから、新たに行を追加します。
ホストID
設定名称
値
リモートホスト上の gfsd.conf
ファイルに
設定名称
値
という行を加えます。
既に gfsd.conf
に
「設定名称
」という行が存在している場合、
gfservice はそれを削除してから、新たに行を追加します。
ホストID
設定名称
リモートホスト上の gfmd.conf
ファイルから
「設定名称
」行を削除します。
gfmd.conf
ファイルに「設定名称
」
行がない場合、ファイルは更新されません。
ホストID
設定名称
リモートホスト上の gfsd.conf
ファイルから
「設定名称
」行を削除します。
gfsd.conf
ファイルに「設定名称
」
行がない場合、ファイルは更新されません。
ホストID
リモートホスト上のバックエンドデータベースのバックアップを行い、 バックアップデータを標準出力へ出力します。
ホストID
リモートホスト上の gfarm2.conf
ファイルを、標準出力
へ出力します。
ホストID
リモートホスト上の gfsd.conf
ファイルを、標準出力
へ出力します。
ホストID
リモートホスト上の usermap
ファイルを、標準出力
へ出力します。
ホストID
リモートホスト上のバックエンドデータベースのデータを復旧します。 バックアップデータは、標準入力から読み込みます。
ホストID
リモートホスト上の gfmd.conf
ファイルを復旧します。
gfservice は、gfmd.conf
の
バックアップデータを標準入力から読み込みます。
ホストID
リモートホスト上の gfsd.conf
ファイルを復旧します。
gfservice は、gfsd.conf
の
バックアップデータを標準入力から読み込みます。
ホストID
リモートホスト上の usermap
ファイルを復旧します。
gfservice は、usermap
の
バックアップデータを標準入力から読み込みます。
ホストID
リモートホスト上で config-gfarm コマンドを実行します。
このとき、設定ファイルで変数
「gfmdn
_CONFIG_GFARM_OPTIONS」が宣言されていれば、
その値が config-gfarm にオプションとして付与されます。
レプリケーション機能を有効にするときは、このサブコマンドは使用せず、代わりに
config-gfarm-master ないし
config-gfarm-slave を使って下さい。
-k
オプションが指定されている場合、
gfserviceは gfkey コマンドを用いて
gfmd ホスト上に共有秘密鍵ファイルを作成します。
ホストID
このサブコマンドは config-gfarm と基本的に同じですが、 gfmd のレプリケーションが自動的に有効になります。
ホスト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
ホストへコピーします。
ホストID
サブコマンド stop-gfsd を実行して、その後 gfmd や バックエンドデータベースが作成したファイルやディレクトリをすべて削除します。 スレーブ gfmd を廃止する場合は、代わりにサブコマンド unconfig-gfarm-slave を使用して下さい。
ホストID
サブコマンド unconfig-gfarm の別名です。
ホストID
マスターホストID
サブコマンド unonfig-gfarm と基本的に同じですが、
以下の追加処理を行います。
gfmdhost コマンドを用いてサーバーリストから、その
スレーブホストを削除します。
また、設定ファイルで定義されているすべてのホストの
gfarm2.conf
を更新し、
metadb_server_list
に設定されたサーバーリストから、
そのスレーブホストを削除します。
変数「gfmdn
_PRIVATE_MODE」の値が「true」に
セットされている場合は、同様に gfsd.conf
ファイル
を更新し、すべての gfmd ホストと gfsd ホストに配布します。
以下に挙げているのは、gfsd を操作するサブコマンドです。
コマンド行に与えるホストID は、「gfsdn
」
(gfsd1, gfsd2, ...) でなくてはなりません。
それ以外の場合、gfservice はエラーを通知してただちに
終了します。
ホストID
gfsd が実行中であれば、終了コード 0 で終了します。 それ以外の場合は、1 で終了します。
ホストID
gfsd が実行中でなければ、実行を開始します。
ホストID
gfsd が実行中なら、実行を停止します。
ホストID
サブコマンドstop-gfsd と start-gfsd を続けて実行します。
ホストID
設定名称
値
gfmd 用の set-gfsd-conf サブコマンドと同じです。
ホストID
設定名称
gfmd 用の unset-gfsd-conf サブコマンドと同じです。
ホストID
gfmd 用の backup-gfsd-conf サブコマンドと同じです。
ホストID
gfmd 用の backup-usermap サブコマンドと同じです。
ホストID
gfmd 用の restore-gfsd-conf サブコマンドと同じです。
ホストID
gfmd 用の restore-usermap サブコマンドと同じです。
ホストID
リモートホスト上で config-gfsd コマンドを実行します。
このとき、設定ファイルで変数
「gfsdn
_CONFIG_GFARM_OPTIONS」が宣言されていれば、
その値が config-gfsd にオプションとして付与されます。
また、gfservice は gfhost コマンド
を用いて、リモートホストをファイルシステムノードとして登録します。
変数「gfsdn
_AUTH_TYPE」の値が「sharedsecret」
の場合、共有秘密鍵ファイルを gfmd1 から gfsd ホストへコピーします。
ホストID
サブコマンド stop-gfsd を実行して、その後 gfsd が 作成したファイルやディレクトリをすべて削除します。
以下に挙げているのは、クライアントを操作するサブコマンドです。
コマンド行に与えるホストID は、「gfmdn
」
(gfmd1, gfmd2, ...)、「gfsdn
」(gfsd1, gfsd2, ...)、
「clientn
」(client1, client2, ...) のいずれか
でなくてはなりません。
それ以外の場合、gfservice はエラーを通知してただちに
終了します。
ホストID
ディレクトリ
オプション...
リモートホスト上の「ディレクトリ
」に、Gfarm2
ファイルシステムをマウントします。
引数「オプション
」は gfarm2fs
コマンドへの引数とみなされます。
ホストID
ディレクトリ
リモートホスト上の「ディレクトリ
」にマウントされた
Gfarm2 ファイルシステムをアンマウントします。
ホストID
ディレクトリ
サブコマンド unmount の別名です。
ホストID
設定名称
値
リモートホスト上の gfarm2.conf
ファイルに
設定名称
値
という行を加えます。
既に gfarm2.conf
に
「設定名称
」という行が存在している場合、
gfservice はそれを削除してから、新たに行を追加します。
ホストID
設定名称
リモートホスト上の gfarm2.conf
ファイルから
「設定名称
」行を削除します。
gfarm2.conf
ファイルに「設定名称
」
行がない場合、ファイルは更新されません。
ホストID
リモートホスト上の gfarm2.conf
ファイルを、標準出力
へ出力します。
ホストID
リモートホスト上の共有秘密鍵ファイルを、標準出力へ出力します。
ホストID
リモートホスト上の gfarm2.conf
ファイルを復旧します。
gfservice は、gfarm2.conf
の
バックアップデータを標準入力から読み込みます。
ホストID
リモートホスト上の共有秘密鍵ファイルを復旧します。 gfservice は、共有秘密鍵のバックアップデータを標準入力 から読み込みます。
ホストID
変数「clientn
_AUTH_TYPE」の値が「sharedsecret」
の場合、共有秘密鍵ファイルを gfmd1 からクライアントホストへコピーします。
ホストID
リモートホスト上の gfarm2.conf
ファイルおよび
共有秘密鍵ファイルを削除します。
ホストID
コマンド名
コマンド引数 ...
リモートホスト上で Gfarm コマンドを実行します。
ホストID
コマンド名
コマンド引数 ...
リモートホスト上にて、root 権限で Gfarm コマンドを実行します。
host-id
コマンド引数 ...
リモートホスト上で grid-proxy-init コマンドを実行します。
以下に挙げているのは、複数のホストを操作するサブコマンドです。 コマンド行で、ホストID を指定することはできません。
すべてのバックエンドデータベース、gfmd、gfsd を起動します。
すべての gfsd、gfmd、バックエンドデータベースを停止します。
すべての gfmd を強制停止 (SIGKILL を送付) します。
サブコマンド stop-all と start-all を続けて実行します。
gfmd1
に対して
"config-gfarm-master" を実行し、それ以外のすべての gfmd
に対して "config-gfarm-slave" を実行します。
次にすべての gfsd に対して "config-gfsd" を実行します。
最後にすべてのクライアントに対して、"config-client" を
実行します。
すべてのクライアントに対して、"unconfig-client" を実行 します。 次にすべての gfsd に対して "unconfig-gfsd" を実行します。 最後にすべての gfmd に対して "unconfig-gfarm" を 実行します。
gfserviceはユーザが新しくサブコマンドが追加できるよ うに、プラグインシステムを採用しています。指定されたサブコマンドを gfserviceが提供していない場合、 gfserviceコマンドは %%DATADIR%%/gfarm/gfservice 以 下のサブコマンド名のファイルを参照します。
サブコマンドのファイルは Bourneシェルスクリプトで書きます。
サブコマンド "name
" のサブコマンドファイル
は、gfserviceから実行される
"subcmd_
"という名
前のシェル関数、 gfservice-agentから実行される
"name
subcmd_
"
という名前のシェル関数が実装されている必要があります。
name
_agent
サブコマンドがユーザが追加した別のサブコマンドに依存している時のために、
サブコマンド "name
" のサブコマンドファイル
は、 "
" と
いう名前のシェル関数で、そのサブコマンドが依存している他のサブコマンド
のリストを返す必要があります.サブコマンドのリストはスペースで区切られ
たサブコマンドの文字列です.依存している他のサブコマンドがない場合は空文字列を返して
下さい。同様に、サブコマンドファイルは
"name
_depends
"
という名前のシェル関数で、そのサブコマンドのエージェントが依存している
他のサブコマンドのリストを返す必要があります。
name
_agent_depends