AMD.CONF(5)

名称
amd.conf - amd コンフィギュレーションファイル

書式
amd.conf

解説
amd.conf ファイルは amd のコンフィギュレーションファイルであり、 am-utils 一式に含まれます。

amd.conf は、自動マウントプログラム amd(8) 用の実行時コンフィギュレーション情報を含んでいます。

ファイルフォーマット
このファイルはセクションとパラメータから成ります。 セクションは角括弧で囲んだセクション名で始まり、 次のセクションが開始するかファイルの終りに達するまで続きます。 セクションには ‘name = value’ という形式のパラメータが含まれます。

このファイルは行指向です。すなわち、改行までの各行は、 1 つのコメント、セクション名あるいはパラメータを表します。 継続行を記述する方法はありません。

セクション名、パラメータ名及びその値は、大文字小文字を区別します。

パラメータ中の最初の等号のみ重要な意味を持ちます。 最初の等号の前後にある空白は取り除かれます。 セクション及びパラメータ名の中の先頭、末尾あるいは途中にある空白は 意味を持ちません。 パラメータ値の先頭や末尾にある空白は取り除かれます。 パラメータ値内部に空白を置くことはできません。 ただし、 ‘name = "some value"’ のように、パラメータ値全体を二重引用符でくくった場合を除きます。

井桁記号 (#) で始まる行は無視されます。 空白文字のみ含む行も同じく無視されます。

パラメータ記述において等号に続く値は文字列ないしブール値です。 文字列の場合、空白を含まなければ引用符は不要です。 ブール値の場合は yes あるいは no と記述します。 すべての値において大文字小文字が区別されます。 キャッシュタイムアウトのような一部の項目は数値をとります。

セクション

  [global] セクション)
このセクションのパラメータは、 amd 全体に適用されるか、または、これに続くすべての通常マップに適用されます。 1 つのコンフィギュレーションファイルにはグローバルセクションをただ一つだけ 定義すべきです。

このセクションはコンフィギュレーションファイル中の最初に記述しておくことを 強く推奨します。 もしそうしなければ、グローバルセクションより先に記述された 通常マップセクションでは、後に定義されるグローバルな値を利用できません。

  通常 [/map] セクション)
通常の (グローバルでない) セクションのパラメータは、単一のマップエントリに 適用されます。例えば、マップセクション [/homes] が定義されていると、それに続くすべてのパラメータは、 amd が管理しているマウントポイント /homes に適用されます。

パラメータ

  すべてのセクションに共通のパラメータ)
以下のパラメータは、グローバルセクションと特定のマップセクションの いずれにおいても指定できます。 特定のマップセクションで指定されたエントリは、 デフォルト値あるいはグローバルセクションで定義された値を上書きします。 そのような共通のパラメータがグローバルセクション中でのみ指定されている場合は、 それに続くすべての通常マップセクションにその指定が適用されます。

browsable_dirs
    (文字列、デフォルト = no) "yes" にすると、amd のトップレベルのマウントポイントが readdir(3) 呼び出しでブラウズ可能になります。 つまり、例えば ls(1) を実行することでそのディレクトリでどんなキーがマウント可能か 知ることができるようになります。 必ずしもすべてのエントリが readdir(3) に対して見えるようになるわけではありません。 "/default" エントリやワイルドカードエントリ、さらに "/" を含むエントリは見えるようになりません。 もしこのオプションに対して "full" を指定すれば、 "/default" 以外はすべて見えるようになります。 注意: もし "ls -l" や "ls -F" のような stat(2) を行おうとするコマンドを走らせると、 amd はそのマップ中の すべての エントリをマウントしようとします。 これはよく mount storm と呼ばれます。

map_options
    (文字列、デフォルト = オプションなし) このオプションは、例えば ‘cache:=all’ のように、 amd(8) のコマンドラインでマップオプションを指定するのと同じ働きをします。

map_type
    (文字列、デフォルト = 全マップタイプを検索) このオプションが指定されると、amd は指定されたタイプに対するマップのみ 初期化します。 amd のデフォルトのマップ検索は時間がかかるうえ、 使っていなくても NIS を初期化してしまうといった 望まない副作用をもつことがありますが、 そのような事態を避けるのにこのオプションが有効です。 指定可能な値は以下のものです。

    file
        通常ファイル
    hesiod
        MIT の hesiod ネームサービス
    ldap
        軽量ディレクトリアクセスプロトコル
    ndbm
        (新しい) dbm 形式のハッシュファイル
    nis ネットワークインフォメーションサービス (バージョン 2)
    nisplus
        ネットワークインフォメーションサービス プラス (バージョン 3)
    passwd
        ローカルのパスワードファイル
    union
        ユニオンマップ

mount_type
    (文字列、デフォルト = nfs) amd のすべてのマウントタイプで、デフォルトでは NFS です。つまり、実行しているローカルホストに対して、 amd(8) はマップのマウントポイントにおける NFS サーバとなります。 もし "autofs" を指定すると、amd はそのマウントポイントにおける autofs サーバになります。

search_path
    (文字列、デフォルト = サーチパスなし) ファイルマップに対するサーチパスを (コロンで区切った形式で) 指定します。 サーチパスを用いることで、 各サイトはローカルなマップのカスタマイズや上書きが可能になり、 必要に応じていくつかの場所にマップを分散配置させることができます。

  グローバルセクションにのみ適用されるパラメータ)

arch
    (文字列、デフォルト = コンパイル時の値) amd の変数 arch の値を上書きできます。

auto_dir
    (文字列、デフォルト = /a) amd の -a オプションと同じです。 実際のマウントポイント用に amd がサブディレクトリを作成する プライベートディレクトリを設定します。

cache_duration
    (数値、デフォルト = 300) amd の -c オプションと同じです。 検索されたマップエントリがキャッシュ中に残る秒数を設定します。

cluster
    (文字列、デフォルト = クラスタなし) amd の -C オプションと同じです。使用する、別の HP-UX クラスタを指定します。

debug_options
    (文字列、デフォルト = デバッグオプションなし) amd の -D オプションと同じです。 amd のデバッグオプションを指定します。 am-utils が --enable-debug -option を用いてデバッグ機能付きで構築されている場合のみ有効です。 "mem" オプションだけは --enable-debug=mem によってオンにできます。 これら以外の場合、デバッグオプションは無視されます。 オプションはコンマで区切ります。 先頭に文字列 "no" を付けることでその意味を反転できます。 サポートされているデバッグオプション一覧を得るには amd -v を実行して下さい。 取りうる値は以下の通りです。

    all 全オプション
    amq amq(8) に登録する
    daemon
        デーモンモードに移行する
    fork
        サーバを fork する
    full
        プログラムトレース
    info
        info サービスに固有のデバッグ情報 (hesiod, nis など)
    mem メモリアロケーションをトレースする
    mtab
        ローカルの ./mtab ファイルを用いる
    str 文字列操作のデバッグ
    test
        完全なデバッグモードだがデーモンにしない
    trace
        プロトコルのトレース

dismount_interval
    (数値、デフォルト = 120) amd の -w オプションと同じです。 キャッシュ期間を超えたファイルシステムのマウントを外そうとするまでの時間を 秒単位で指定します。

fully_qualified_hosts
    (文字列、デフォルト = no) "yes" に設定すると、 amd(8) は完全なホスト名 (fully-qualified host name) を用いて RPC 認証を行ないます。 システムによってはこの仕組みが必要です。 特にドメインにまたがるマウントを行う場合に必要となります。 この機能を有効にするため、 amd(8) の変数 ${hostd} が用いられます。 ${domain} は空であってはいけません。

hesiod_base
    (文字列、デフォルト = automount) hesiod マップのためのベース名を指定します。

karch
    (文字列、デフォルト = システムのカーネルアーキテクチャ) amd の -k オプションと同じです。 システムのカーネルアーキテクチャを上書き指定できます。 例えば Sun (Sparc) マシンに便利です。 この場合、一つの amd(8) バイナリを作成し、それを複数のマシンで走らせますが、それぞれに 正しい karch 変数 (例えば sun4c, sun4m, sun4u など) を設定したいと思うでしょう。 注意: もしこのオプションを指定しなければ、 amd(8) は uname(3) を用いてそのマシンのカーネルアーキテクチャを判別します。

ldap_base
    (文字列、デフォルト = 未設定) LDAP のためのベース名を指定します。

ldap_cache_maxmem
    (数値、デフォルト = 131072) LDAP エントリをキャッシュするために amd が使用する最大メモリ量を指定します。

ldap_cache_seconds
    (数値、デフォルト = 0) エントリをキャッシュに保持する秒数を指定します。

ldap_hostports
    (文字列、デフォルト = 未設定) 国名や組織名といった LDAP 固有の値を指定します。

local_domain
    (文字列、デフォルト = サブドメインなし) amd の -d オプションと同じです。 ローカルのドメイン名を指定します。 このオプションが与えられない場合、 完全なホスト名から最初の要素を取り除くことでドメイン名を決定します。

log_file
    (文字列、デフォルト = /dev/stderr) amd の -l オプションと同じです。 amd(8) のイベントログを記録するファイル名を指定します。 文字列 /dev/stderr を指定すると、 amd(8) はイベントを標準エラー出力ファイル記述子に送ります。 もし文字列 syslog を指定すると、 amd(8) はシステムログ記録機構 syslogd(8) を用いてイベントを記録します。 デフォルトで用いられる syslog ファシリティは LOG_DAEMON です。 これを変更するには、ログファイル名に続いて、単一のコロンで区切って ファシリティ名を記述します。例えば logfile として文字列 "syslog:local7" を指定すると、 amd(8) は LOG_LOCAL7 ファシリティを用いて syslog(3) 経由でメッセージを記録します (そのファシリティが当該システムに存在する場合)。

log_options
    (文字列、デフォルト = ロギングオプションなし) amd の -x オプションと同じです。 amd(8) のロギングオプションを指定します。 複数のオプションはコンマで区切ります。 先頭に “no” をつけることで、その意味を反転させることができます。 ロギングオプション “debug” は、 am-utils が --enable-debug 付きで構築された場合のみ利用可能です。 amd -v を実行するとサポートされているデバッグオプションの一覧が得られます。 指定可能な値は以下の通りです。

    all すべてのメッセージ
    debug
        デバッグメッセージ
    error
        重大ではないシステムエラー
    fatal
        重大なエラー
    info
        参考情報
    map マップエラー
    stats
        より詳細な統計情報
    user
        重大ではないユーザエラー
    warn
        警告
    warning
        警告

nfs_retransmit_counter
    (数値、デフォルト = 110) amd(8) の -t interval.counter オプションの counter 部と同じです。 再送カウンタの値を 1/10 秒単位で指定します。

nfs_retry_interval
    (数値、デフォルト = 8) amd(8) の -t interval.counter オプションの interval 部と同じです。 NFS/RPC/UDP 再試行間隔を 1/10 秒単位で指定します。

nis_domain
    (文字列、デフォルト = ローカル NIS ドメイン名) amd の -y オプションと同じです。 NIS マップを取得するために、別の NIS ドメインを指定します。 デフォルトはシステムのドメイン名です。 NIS サポートが利用可能でない場合、このオプションは無視されます。

normalize_hostnames
    (ブール値、デフォルト = no) amd の -n オプションと同じです。 “yes” を指定すると、 ${rhost} の参照先の名前は、前もってホストデータベースからの相対値に正規化されます。 別名 (エイリアス) を "公式な" 名前に変換する効果があります。

os  (文字列、デフォルト = コンパイル時の値) amd の -O オプションと同じです。 コンパイル時に決まったオペレーティングシステム名を上書きできます。 以前との互換性を保つためには組み込み済みの名前はふさわしくない、 という場合に便利です。 例えば、もし組み込まれた名前が “sunos5” の場合、これを上書きして “sos5” とすることで、後者の OS 名を前提に書かれた以前のマップを利用できます。

osver
    (文字列、デフォルト = コンパイル時の値) amd の -o オプションと同じです。 コンパイル時に決まったオペレーティングシステムのバージョン番号を 上書きします。 以前との互換性を保つためには組み込み済みのバージョンはふさわしくない、 という場合に便利です。 例えば、もし組み込まれたバージョン番号が “2.5.1” の場合、これを上書きして “5.5.1” とすることで、後者のバージョンを前提に書かれた以前のマップを利用できます。

pid_file
    (文字列、デフォルト = /dev/stdout) 実行しているデーモンのプロセス ID を格納するファイルを指定します。 これを指定しない場合、 amd(8) は自分のプロセス ID を標準出力にのみ書き出します。 実行後に amd(8) を kill する際に便利です。 注意: 実行中の amd(8) のプロセス ID は amq -p によっても得られます。 このファイルは print_pid オプションがオンの場合のみ使用されます。

plock
    (ブール値、デフォルト = yes) amd の -S オプションと同じです。 “yes” を指定すると、実行中の amd(8) の実行可能ページをメモリ上にロックします。 plock(3) をサポートしているシステムでは、 amd(8) プロセスをメモリ上にロックすることで amd(8) の性能を向上させることができます。 このようにして、オペレーティングシステムが必要に応じて amd(8) プロセスをスケジュールしたり、ページアウトさせたり、スワップさせたりする 可能性を減らします。 これにより amd(8) の性能は向上しますが、その反面、 amd(8) プロセスが使用しているメモリが予約される (他のプロセスがそのメモリを使えなくなる) という代償もあります。

portmap_program
    (数値、デフォルト = 300019) 公式の番号とは別の、ポートマップ RPC プログラム番号を指定します。 これは複数の amd(8) プロセスを実行させる場合に便利です。 例えば、メインの amd(8) プロセスに全く影響を与えることなく、別の amd(8) を “test” モードで実行できます。 安全のため、指定する別のプログラム番号は 300019 から 300029 まで の範囲になければなりません。 amq は、接続するための別のプログラム番号を指定するのに用いる -P オプションを持っています。 このように、 amq は同じホスト上で実行されている複数の amd(8) プロセスを完全に制御することが可能です。

print_pid
    (ブール値、デフォルト = no) amd の -p オプションと同じです。 “yes” を指定すると、 amd(8) は起動時にそのプロセス ID を表示します。

print_version
    (ブール値、デフォルト = no) amd の -v オプションと同じですが、バージョンを表示しても amd(8) は実行を続けます。 “yes” の場合、 amd(8) は、コンフィギュレーション設定やコンパイル時の値を含む バージョン情報文字列を表示します。

restart_mounts
    (ブール値、デフォルト = no) amd の -r オプションと同じです。 “yes” とすると、 amd(8) はマウントテーブルを走査して、現在どのファイルシステムがマウントされて いるのか判断します。その中に自動マウントすべきファイルシステムがあれば、 amd(8) はそれを継承します。

selectors_on_default
    (ブール値、デフォルト = no) “yes” とすると、マップの /default エントリが検索され、そのマップ中の他のすべてのキーのデフォルト値を 設定する前に、すべてのセレクタを処理します。 あるパラメータに基づき、ある完全なマップに対して異なるオプションを 設定したい場合に有用です。 例えば、slip ベースの低速ネットワーク越しの NFS 性能を改善するためには、次のようにします。

        /defaults \
            wire==slip-net;opts:=intr,rsize=1024,wsize=1024 \
            wire!=slip-net;opts:=intr,rsize=8192,wsize=8192

show_statfs_entries
    (ブール値、デフォルト = no) “yes” とすると、ブラウズ可能なすべてのマップは、 "df" 実行時にエントリ数 (key 数) をあわせて表示します (この機能は、 statfs(2) 呼び出しに対して非 0 値を返すことで実現されています

unmount_on_exit
    (ブール値、デフォルト = no) “yes” とすると、 amd(8) は関知しているすべてのファイルシステムをアンマウントしようとします。 通常、 amd(8) はすべての (特に) NFS マウントされたファイルシステムをそのまま残します。 注意: restart_mounts オプションまたは -r フラグが指定されていない限り、 amd(8) は起動時以前にマウントされていたファイルシステムのことを関知しません。
通常のマップセクションに適用されるパラメータ)

map_name
    (文字列、必須) キーが配置されるマップの名前です。

tag (文字列、デフォルト = タグなし) コンフィギュレーションファイルの各マップエントリにはタグをつけることが できます。タグが指定されない場合、そのマップセクションは常に amd(8) で処理されます。 タグが指定されている場合、 amd(8) に -T オプションが指定され、そのコマンドラインオプションの値が マップセクションのタグ名と一致する場合のみ、 amd(8) はそのマップを処理します。

使用例
以下に示すものは、私がいつも使っている実際の amd(8) コンフィギュレーションです。

    # グローバルオプションセクション
    [ global ]
    normalize_hostnames =    no
    print_pid =              no
    restart_mounts =         yes
    auto_dir =               /n
    log_file =               /var/log/amd
    log_options =            all
    #debug_options =         all
    plock =                  no
    selectors_on_default =   yes
    # config.guess は "sunos5" を選びました。
    # 今のところこれを変えようとは思いません。
    os =                     sos5
    # "os" を設定後 print_version を有効にすると、バージョンが表示されます。
    print_version =          no
    map_type =               file
    search_path =            /etc/amdmaps:/usr/lib/amd:/usr/local/AMD/lib
    browsable_dirs =         yes
    # マウントポイントの定義
    [ /u ]
    map_name =               amd.u
    [ /proj ]
    map_name =               amd.proj
    [ /src ]
    map_name =               amd.src
    [ /misc ]
    map_name =               amd.misc
    [ /import ]
    map_name =               amd.import
    [ /tftpboot/.amd ]
    tag =                    tftpboot
    map_name =               amd.tftpboot

関連項目
amd(8), amq(8)

作者
Erez Zadok <ezk@cs.columbia.edu>, Department of Computer Science, Columbia University, New York, USA.

Jan-Simon Pendry <jsp@doc.ic.ac.uk>, Department of Computing, Imperial College, London, UK.

am-utils の他の作者並びに貢献者のリストが、am-utils と共に配布されている AUTHORS ファイルにあります。

歴史
amd(8) ユーティリティは 4.4BSD で初めて登場しました。