gfservice -
リモートホストから
Gfarm
のサーバーを制御する。
gfservice
[オプション]
サブコマンド
[ホストID] [引数 ...]
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"
の節を参照して下さい。
-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" を
実行します。
gfserviceはユーザが新しくサブコマンドが追加できるよ
うに、プラグインシステムを採用しています。指定されたサブコマンドを
gfserviceが提供していない場合、
gfserviceコマンドは
%%DATADIR%%/gfarm/gfservice 以
下のサブコマンド名のファイルを参照します。
サブコマンドのファイルは
Bourneシェルスクリプトで書きます。
サブコマンド "name"
のサブコマンドファイル
は、gfserviceから実行される
"subcmd_name"という名
前のシェル関数、
gfservice-agentから実行される
"subcmd_name_agent"
という名前のシェル関数が実装されている必要があります。
サブコマンドがユーザが追加した別のサブコマンドに依存している時のために、
サブコマンド "name"
のサブコマンドファイル
は、 "name_depends" と
いう名前のシェル関数で、そのサブコマンドが依存している他のサブコマンド
のリストを返す必要があります.サブコマンドのリストはスペースで区切られ
たサブコマンドの文字列です.依存している他のサブコマンドがない場合は空文字列を返して
下さい。同様に、サブコマンドファイルは
"name_agent_depends"
という名前のシェル関数で、そのサブコマンドのエージェントが依存している
他のサブコマンドのリストを返す必要があります。