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 つのコンフィギュレーションファイルにはグローバルセクションをただ 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 のコマンドラインでマップオプションを指定するのと同じ働きをします。

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

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

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

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 を用いてデバッグ機能付きで構築されている場合のみ有効です。 "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 は完全なホスト名 (fully-qualified host name) を用いて RPC 認証を行います。 システムによってはこの仕組みが必要です。 特にドメインにまたがるマウントを行う場合に必要となります。 この機能を有効にするため、 amd の変数 ${hostd} が用いられます。 ${domain} は空であってはいけません。

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

karch
    (文字列、デフォルト = システムのカーネルアーキテクチャ) amd の -k オプションと同じです。 システムのカーネルアーキテクチャを上書き指定できます。 例えば Sun (Sparc) マシンに便利です。 この場合、一つの amd バイナリを作成し、それを複数のマシンで走らせますが、それぞれに 正しい karch 変数 (例えば sun4c, sun4m, sun4u など) を設定したいと思うでしょう。 注意: もしこのオプションを指定しなければ、 amd は 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 のイベントログを記録するファイル名を指定します。 文字列 /dev/stderr を指定すると、 amd はイベントを標準エラー出力ファイル記述子に送ります。 もし文字列 syslog を指定すると、 amd はシステムログ記録機構 syslogd(8) を用いてイベントを記録します。 デフォルトで用いられる syslog ファシリティは LOG_DAEMON です。 これを変更するには、ログファイル名に続いて、単一のコロンで区切って ファシリティ名を記述します。例えば logfile として文字列 "syslog:local7" を指定すると、 amd は LOG_LOCAL7 ファシリティを用いて syslog(3) 経由でメッセージを記録します (そのファシリティが当該システムに存在する場合)。

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

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

nfs_proto
    (文字列、デフォルト = まず tcp、次に udp) デフォルトでは、 amd は TCP を試行し、その次に UDP を試行します。 このオプションを使用すると、 すべての NFS プロトコルに TCP または UDP を強制します。 これは amd maps 中の設定に優先します。 amd が NFSv3 サポート付きでコンパイルされているが不安定な場合に有用でしょう。 このオプションを使用することで、 NFSv3 サポートが再度必要となるような時まで、 動的に (amd を再コンパイルすることなく) NFSv3 の使用を完全に止められます。

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

nfs_retry_interval
    (数値、デフォルト = 8) amd の -t interval.counter オプションの interval 部と同じです。 NFS/RPC の再試行 (UDP のみ) の間の NFS タイムアウトインターバルを 1/10 秒単位で指定します。 この値は、カーネルが amd との通信に使用します。

    amd は、カーネルの RPC 再送信機構がマウントの再試行を引き起こすことに 依存しています。 nfs_retransmit_counter および nfs_retry_interval の値は、システム全体の再試行インターバルを変更します。 インターバルが長過ぎると、対話的な応答性が落ちます。 インターバルが短か過ぎると、リトライ回数が多くなり過ぎます。

nfs_allow_insecure_port
    (文字列、デフォルト = no) 通常 amd は、非特権ポート (Unix システムでは 1024 以上のポート) からの要求を拒否し、特権を持つユーザとカーネルのみが NFS 要求を送出できるようにします。 しかし、いくつかのカーネル (あるバージョンの Darwin, MacOS X, Linux) には、 ある特定の状況において非特権ポートを使用するバグがあり、 これによって amd は直ちに停止してしまいます。 このパラメータによって、多少セキュリティを犠牲にすることで、 そのようなシステム上でも amd を正常に動作させることができます。 amd のログに "ignoring request from foo:1234, port not reserved" のような メッセージがあった場合、このパラメータを有効にして、 もう一度試してみてください。

nfs_vers
    (数値、デフォルト = まずバージョン 3、次に 2) デフォルトでは、 amd はバージョン 3 を試行し、それからバージョン 2 を試行します。 このオプションを使用すると、 すべての NFS プロトコルに 3 または 2 を強制します。 これは amd maps 中の設定に優先します。 amd が NFSv3 サポート付きでコンパイルされているが不安定な場合に有用でしょう。 このオプションを使用することで、 NFSv3 サポートが再度必要となるような時まで、 動的に (amd を再コンパイルすることなく) NFSv3 の使用を完全に止められます。

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 は自分のプロセス ID を標準出力にのみ書き出します。 実行後に amd を kill する際に便利です。 注意: 実行中の amd のプロセス ID は amq -p によっても得られます。 このファイルは print_pid オプションがオンの場合のみ使用されます。

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

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

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

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

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

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 は関知しているすべてのファイルシステムをアンマウントしようとします。 通常、 amd はすべての (特に) NFS マウントされたファイルシステムをそのまま残します。 注意: restart_mounts オプションまたは -r フラグが指定されていない限り、 amd は起動時以前にマウントされていたファイルシステムのことを関知しません。

  通常のマップセクションに適用されるパラメータ

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

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

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

    # グローバルオプションセクション
    [ 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 ユーティリティは 4.4BSD で初めて登場しました。