<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1.2//EN"
  "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">


<refentry id="gfservice.1">

<refentryinfo><date>15 Feb 2013</date></refentryinfo>

<refmeta>
<refentrytitle>gfservice</refentrytitle>
<manvolnum>1</manvolnum>
<refmiscinfo>Gfarm</refmiscinfo>
</refmeta>

<refnamediv id="name">
<refname>gfservice</refname>
<refpurpose>リモートホストから Gfarm のサーバーを制御する。</refpurpose>
</refnamediv>

<refsynopsisdiv id="synopsis">
<cmdsynopsis sepchar=" ">
  <command moreinfo="none">gfservice</command>
    <arg choice="opt" rep="norepeat"><replaceable>オプション</replaceable></arg>
    <arg choice="plain" rep="norepeat">サブコマンド</arg>
    <arg choice="opt" rep="norepeat">ホストID</arg>
    <arg choice="opt" rep="norepeat"><replaceable>引数 ...</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>

<!-- body begins here -->

<refsect1 id="description"><title>DESCRIPTION</title>

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

<para>
<command moreinfo="none">gfservice</command> のコマンド行は、たとえば次のようになります。
</para>

<literallayout format="linespecific" class="normal">
	<command moreinfo="none">gfservice <replaceable>start-gfmd</replaceable> <replaceable>gfmd2</replaceable></command>
</literallayout>

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

<literallayout format="linespecific" class="normal">
	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
</literallayout>

<para>
<command moreinfo="none">gfservice</command> は、読み込むべき設定ファイルのパスを次の要領
で決定します。
</para>

<orderedlist numeration="arabic" inheritnum="ignore" continuation="restarts">
<listitem>
<para>
「<option>-f</option> <parameter moreinfo="none">ファイル</parameter>」オプションが指定
されていれば、その<parameter moreinfo="none">ファイル</parameter>を読み込みます。
</para>
</listitem>

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

<listitem>
<para>
上記以外の場合は、<filename moreinfo="none">$HOME/.gfservice</filename> を読み込みます。
</para>
</listitem>
</orderedlist>

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

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

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

<literallayout format="linespecific" class="normal">
	<replaceable>user</replaceable> ALL=(root, _gfarmfs, _gfarmmd) NOPASSWD: gfservice-agent
</literallayout>

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

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

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

<refsect1 id="options"><title>OPTIONS</title>

<variablelist>

<varlistentry>
<term><option>-d</option></term>
<listitem>
<para>
デバッグ情報を出力します。
<command moreinfo="none">gfservice</command> は、このオプションを
<command moreinfo="none">gfservice-agent</command> に渡しますので、
<command moreinfo="none">gfservice-agent</command> からもデバッグ情報が出力されます。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><option>-f</option> <parameter moreinfo="none">ファイル</parameter></term>
<listitem>
<para>
デフォルトの設定ファイルの代わりに、「<parameter moreinfo="none">ファイル</parameter>」を
読み込みます。
</para>
</listitem>
</varlistentry>

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

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

</variablelist>

</refsect1>

<refsect1 id="gfmd-sub-commands"><title>SUB-COMMANDS FOR GFMD</title>

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

<variablelist>

<varlistentry>
<term>
<command moreinfo="none">backend-db-status</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
バックエンドデータベースが実行中であれば、終了コード 0 で終了します。
それ以外の場合は、1 で終了します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">gfmd-status</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
gfmd が実行中であれば、終了コード 0 で終了します。
それ以外の場合は、1 で終了します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">start-backend-db</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
バックエンドデータベースが実行中でなければ、実行を開始します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">start-gfmd</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
<command moreinfo="none">gfmd</command> が実行中でなければ、実行を開始します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">start-gfmd-master</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
サブコマンド <command moreinfo="none">start-gfmd</command> の別名です。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">start-gfmd-slave</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
サブコマンド <command moreinfo="none">start-gfmd</command> と同じですが、gfmd には
<option>-S</option> オプションが付与されます。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">start-gfarm</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
バックエンドデータベースおよび <command moreinfo="none">gfmd</command> が実行中でなければ、
実行を開始します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">start-gfarm-master</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
サブコマンド <command moreinfo="none">start-gfarm</command> の別名です。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">start-gfarm-slave</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
サブコマンド <command moreinfo="none">start-gfarm</command> と同じですが、gfmd には
<option>-S</option> オプションが付与されます。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">stop-backend-db</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
バックエンドデータベースが実行中なら、実行を停止します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">stop-gfmd</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
<command moreinfo="none">gfmd</command> が実行中なら、実行を停止します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">stop-gfarm</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
バックエンドデータベースおよび <command moreinfo="none">gfmd</command> が実行中なら、
実行を停止します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">kill-gfmd</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
<command moreinfo="none">gfmd</command> が実行中なら、強制停止 (SIGKILL を送付) します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restart-backend-db</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
サブコマンド <command moreinfo="none">stop-backend-db</command> と
<command moreinfo="none">start-backend-db</command> を続けて実行します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restart-gfmd</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
サブコマンド <command moreinfo="none">stop-gfmd</command>」と
「<command moreinfo="none">start-gfmd</command> を続けて実行します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restart-gfmd-master</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
サブコマンド <command moreinfo="none">restart-gfmd</command> の別名です。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restart-gfmd-slave</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
サブコマンド <command moreinfo="none">stop-gfmd</command> と
<command moreinfo="none">start-gfmd-slave</command> を続けて実行します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restart-gfarm</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
サブコマンド <command moreinfo="none">stop-gfarm</command> と
<command moreinfo="none">start-gfarm</command> を続けて実行します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restart-gfarm-master</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
サブコマンド <command moreinfo="none">restart-gfarm</command> の別名です。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restart-gfarm-slave</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
サブコマンド <command moreinfo="none">stop-gfarm</command> と
<command moreinfo="none">start-gfarm-slave</command> を続けて実行します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">promote</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
<command moreinfo="none">gfmd</command> をスレーブからマスターへ昇格させます。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">promote-gfmd</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
サブコマンド <command moreinfo="none">promote</command> の別名です。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">set-gfmd-conf</command>
<parameter moreinfo="none">ホストID</parameter>
<parameter moreinfo="none">設定名称</parameter>
<parameter moreinfo="none">値</parameter>
</term>
<listitem>
<para>
リモートホスト上の <filename moreinfo="none">gfmd.conf</filename> ファイルに
</para>

<literallayout format="linespecific" class="normal">
	<parameter moreinfo="none">設定名称</parameter> <parameter moreinfo="none">値</parameter>
</literallayout>

<para>
という行を加えます。
既に <filename moreinfo="none">gfmd.conf</filename> に
「<parameter moreinfo="none">設定名称</parameter>」という行が存在している場合、
<command moreinfo="none">gfservice</command> はそれを削除してから、新たに行を追加します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">set-gfsd-conf</command>
<parameter moreinfo="none">ホストID</parameter>
<parameter moreinfo="none">設定名称</parameter>
<parameter moreinfo="none">値</parameter>
</term>
<listitem>
<para>
リモートホスト上の <filename moreinfo="none">gfsd.conf</filename> ファイルに
</para>

<literallayout format="linespecific" class="normal">
	<parameter moreinfo="none">設定名称</parameter> <parameter moreinfo="none">値</parameter>
</literallayout>

<para>
という行を加えます。
既に <filename moreinfo="none">gfsd.conf</filename> に
「<parameter moreinfo="none">設定名称</parameter>」という行が存在している場合、
<command moreinfo="none">gfservice</command> はそれを削除してから、新たに行を追加します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">unset-gfmd-conf</command>
<parameter moreinfo="none">ホストID</parameter>
<parameter moreinfo="none">設定名称</parameter>
</term>
<listitem>
<para>
リモートホスト上の <filename moreinfo="none">gfmd.conf</filename> ファイルから
「<parameter moreinfo="none">設定名称</parameter>」行を削除します。
<filename moreinfo="none">gfmd.conf</filename> ファイルに「<parameter moreinfo="none">設定名称</parameter>」
行がない場合、ファイルは更新されません。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">unset-gfsd-conf</command>
<parameter moreinfo="none">ホストID</parameter>
<parameter moreinfo="none">設定名称</parameter>
</term>
<listitem>
<para>
リモートホスト上の <filename moreinfo="none">gfsd.conf</filename> ファイルから
「<parameter moreinfo="none">設定名称</parameter>」行を削除します。
<filename moreinfo="none">gfsd.conf</filename> ファイルに「<parameter moreinfo="none">設定名称</parameter>」
行がない場合、ファイルは更新されません。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">backup-backend-db</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
リモートホスト上のバックエンドデータベースのバックアップを行い、
バックアップデータを標準出力へ出力します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">backup-gfmd-conf</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
リモートホスト上の <filename moreinfo="none">gfarm2.conf</filename> ファイルを、標準出力
へ出力します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">backup-gfsd-conf</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
リモートホスト上の <filename moreinfo="none">gfsd.conf</filename> ファイルを、標準出力
へ出力します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">backup-usermap</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
リモートホスト上の <filename moreinfo="none">usermap</filename> ファイルを、標準出力
へ出力します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restore-backend-db</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
リモートホスト上のバックエンドデータベースのデータを復旧します。
バックアップデータは、標準入力から読み込みます。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restore-gfmd-conf</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
リモートホスト上の <filename moreinfo="none">gfmd.conf</filename> ファイルを復旧します。
<command moreinfo="none">gfservice</command> は、<filename moreinfo="none">gfmd.conf</filename> の
バックアップデータを標準入力から読み込みます。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restore-gfsd-conf</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
リモートホスト上の <filename moreinfo="none">gfsd.conf</filename> ファイルを復旧します。
<command moreinfo="none">gfservice</command> は、<filename moreinfo="none">gfsd.conf</filename> の
バックアップデータを標準入力から読み込みます。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restore-usermap</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
リモートホスト上の <filename moreinfo="none">usermap</filename> ファイルを復旧します。
<command moreinfo="none">gfservice</command> は、<filename moreinfo="none">usermap</filename> の
バックアップデータを標準入力から読み込みます。
</para>
</listitem>
</varlistentry>

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

<varlistentry>
<term>
<command moreinfo="none">config-gfarm-master</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
このサブコマンドは <command moreinfo="none">config-gfarm</command> と基本的に同じですが、
gfmd のレプリケーションが自動的に有効になります。
</para>
</listitem>
</varlistentry>

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

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

<varlistentry>
<term>
<command moreinfo="none">unconfig-gfarm-master</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
サブコマンド <command moreinfo="none">unconfig-gfarm</command> の別名です。
</para>
</listitem>
</varlistentry>

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

</variablelist>

</refsect1>

<refsect1 id="gfsd-sub-commands"><title>SUB-COMMANDS FOR GFSD</title>

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

<variablelist>

<varlistentry>
<term>
<command moreinfo="none">gfsd-status</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
gfsd が実行中であれば、終了コード 0 で終了します。
それ以外の場合は、1 で終了します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">start-gfsd</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
<command moreinfo="none">gfsd</command> が実行中でなければ、実行を開始します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">stop-gfsd</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
<command moreinfo="none">gfsd</command> が実行中なら、実行を停止します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restart-gfsd</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
サブコマンド<command moreinfo="none">stop-gfsd</command> と
<command moreinfo="none">start-gfsd</command> を続けて実行します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">set-gfsd-conf</command>
<parameter moreinfo="none">ホストID</parameter>
<parameter moreinfo="none">設定名称</parameter>
<parameter moreinfo="none">値</parameter></term>
<listitem>
<para>
gfmd 用の <command moreinfo="none">set-gfsd-conf</command> サブコマンドと同じです。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">unset-gfsd-conf</command>
<parameter moreinfo="none">ホストID</parameter>
<parameter moreinfo="none">設定名称</parameter>
</term>
<listitem>
<para>
gfmd 用の <command moreinfo="none">unset-gfsd-conf</command> サブコマンドと同じです。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">backup-gfsd-conf</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
gfmd 用の <command moreinfo="none">backup-gfsd-conf</command> サブコマンドと同じです。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">backup-usermap</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
gfmd 用の <command moreinfo="none">backup-usermap</command> サブコマンドと同じです。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restore-gfsd-conf</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
gfmd 用の <command moreinfo="none">restore-gfsd-conf</command> サブコマンドと同じです。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restore-usermap</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
gfmd 用の <command moreinfo="none">restore-usermap</command> サブコマンドと同じです。
</para>
</listitem>
</varlistentry>

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

<varlistentry>
<term>
<command moreinfo="none">unconfig-gfsd</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
サブコマンド <command moreinfo="none">stop-gfsd</command> を実行して、その後 gfsd が
作成したファイルやディレクトリをすべて削除します。
</para>
</listitem>
</varlistentry>

</variablelist>

</refsect1>

<refsect1 id="client-sub-commands"><title>SUB-COMMANDS FOR CLIENT</title>

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

<variablelist>

<varlistentry>
<term>
<command moreinfo="none">mount</command>
<parameter moreinfo="none">ホストID</parameter>
<parameter moreinfo="none">ディレクトリ</parameter>
<parameter moreinfo="none">オプション...</parameter>
</term>
<listitem>
<para>
リモートホスト上の「<parameter moreinfo="none">ディレクトリ</parameter>」に、Gfarm2
ファイルシステムをマウントします。
引数「<parameter moreinfo="none">オプション</parameter>」は <command moreinfo="none">gfarm2fs</command>
コマンドへの引数とみなされます。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">unmount</command>
<parameter moreinfo="none">ホストID</parameter>
<parameter moreinfo="none">ディレクトリ</parameter>
</term>
<listitem>
<para>
リモートホスト上の「<parameter moreinfo="none">ディレクトリ</parameter>」にマウントされた
Gfarm2 ファイルシステムをアンマウントします。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">umount</command>
<parameter moreinfo="none">ホストID</parameter>
<parameter moreinfo="none">ディレクトリ</parameter>
</term>
<listitem>
<para>
サブコマンド <command moreinfo="none">unmount</command> の別名です。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">set-gfarm-conf</command>
<parameter moreinfo="none">ホストID</parameter>
<parameter moreinfo="none">設定名称</parameter>
<parameter moreinfo="none">値</parameter></term>
<listitem>
<para>
リモートホスト上の <filename moreinfo="none">gfarm2.conf</filename> ファイルに
</para>

<literallayout format="linespecific" class="normal">
	<parameter moreinfo="none">設定名称</parameter> <parameter moreinfo="none">値</parameter>
</literallayout>

<para>
という行を加えます。
既に <filename moreinfo="none">gfarm2.conf</filename> に
「<parameter moreinfo="none">設定名称</parameter>」という行が存在している場合、
<command moreinfo="none">gfservice</command> はそれを削除してから、新たに行を追加します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">unset-gfarm-conf</command>
<parameter moreinfo="none">ホストID</parameter>
<parameter moreinfo="none">設定名称</parameter>
</term>
<listitem>
<para>
リモートホスト上の <filename moreinfo="none">gfarm2.conf</filename> ファイルから
「<parameter moreinfo="none">設定名称</parameter>」行を削除します。
<filename moreinfo="none">gfarm2.conf</filename> ファイルに「<parameter moreinfo="none">設定名称</parameter>」
行がない場合、ファイルは更新されません。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">backup-gfarm-conf</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
リモートホスト上の <filename moreinfo="none">gfarm2.conf</filename> ファイルを、標準出力
へ出力します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">backup-shared-key</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
リモートホスト上の共有秘密鍵ファイルを、標準出力へ出力します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restore-gfarm-conf</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
リモートホスト上の <filename moreinfo="none">gfarm2.conf</filename> ファイルを復旧します。
<command moreinfo="none">gfservice</command> は、<filename moreinfo="none">gfarm2.conf</filename> の
バックアップデータを標準入力から読み込みます。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restore-shared-key</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
リモートホスト上の共有秘密鍵ファイルを復旧します。
<command moreinfo="none">gfservice</command> は、共有秘密鍵のバックアップデータを標準入力
から読み込みます。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">config-client</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
変数「client<replaceable>n</replaceable>_AUTH_TYPE」の値が「sharedsecret」
の場合、共有秘密鍵ファイルを gfmd1 からクライアントホストへコピーします。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">unconfig-client</command>
<parameter moreinfo="none">ホストID</parameter>
</term>
<listitem>
<para>
リモートホスト上の <filename moreinfo="none">gfarm2.conf</filename> ファイルおよび
共有秘密鍵ファイルを削除します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">gfcmd</command>
<parameter moreinfo="none">ホストID</parameter>
<parameter moreinfo="none">コマンド名</parameter>
<parameter moreinfo="none">コマンド引数 ...</parameter>
</term>
<listitem>
<para>
リモートホスト上で Gfarm コマンドを実行します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">gfcmd-root</command>
<parameter moreinfo="none">ホストID</parameter>
<parameter moreinfo="none">コマンド名</parameter>
<parameter moreinfo="none">コマンド引数 ...</parameter>
</term>
<listitem>
<para>
リモートホスト上にて、root 権限で Gfarm コマンドを実行します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">grid-proxy-init</command>
<parameter moreinfo="none">host-id</parameter>
<parameter moreinfo="none">コマンド引数 ...</parameter>
</term>
<listitem>
<para>
リモートホスト上で <command moreinfo="none">grid-proxy-init</command>
コマンドを実行します。
</para>
</listitem>
</varlistentry>

</variablelist>

</refsect1>

<refsect1 id="multi-host-sub-commands">
<title>SUB-COMMANDS FOR MULTIPLE HOSTS</title>

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

<variablelist>

<varlistentry>
<term>
<command moreinfo="none">start-all</command>
</term>
<listitem>
<para>
すべてのバックエンドデータベース、gfmd、gfsd を起動します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">stop-all</command>
</term>
<listitem>
<para>
すべての gfsd、gfmd、バックエンドデータベースを停止します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">kill-gfmd-all</command>
</term>
<listitem>
<para>
すべての gfmd を強制停止 (SIGKILL を送付) します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">restart-all</command>
</term>
<listitem>
<para>
サブコマンド <command moreinfo="none">stop-all</command> と
<command moreinfo="none">start-all</command> を続けて実行します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">config-all</command>
</term>
<listitem>
<para>
<replaceable>gfmd1</replaceable> に対して
"<command moreinfo="none">config-gfarm-master</command>" を実行し、それ以外のすべての gfmd
に対して "<command moreinfo="none">config-gfarm-slave</command>" を実行します。
次にすべての gfsd に対して "<command moreinfo="none">config-gfsd</command>" を実行します。
最後にすべてのクライアントに対して、"<command moreinfo="none">config-client</command>" を
実行します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>
<command moreinfo="none">unconfig-all</command>
</term>
<listitem>
<para>
すべてのクライアントに対して、"<command moreinfo="none">unconfig-client</command>" を実行
します。
次にすべての gfsd に対して "<command moreinfo="none">unconfig-gfsd</command>" を実行します。
最後にすべての gfmd に対して "<command moreinfo="none">unconfig-gfarm</command>" を
実行します。
</para>
</listitem>
</varlistentry>

</variablelist>

</refsect1>

<refsect1 id="plugin"><title>PLUG-IN SYSTEM</title>

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

<para>
サブコマンドのファイルは Bourneシェルスクリプトで書きます。
サブコマンド "<replaceable>name</replaceable>" のサブコマンドファイル
は、<command moreinfo="none">gfservice</command>から実行される
"<function moreinfo="none">subcmd_<replaceable>name</replaceable></function>"という名
前のシェル関数、 <command moreinfo="none">gfservice-agent</command>から実行される
"<function moreinfo="none">subcmd_<replaceable>name</replaceable>_agent</function>"
という名前のシェル関数が実装されている必要があります。
</para>

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

</refsect1>

</refentry>
