A    Automount マップと AutoFS マップの記述

この付録では,AutoFS マップと Automount マップの記述方法を説明します。 これは,automount デーモンまたは autofsd デーモン  (4.1.2 項 および 4.6.3 項 を参照) でマウントするファイル・システムを指定する際に使用します。

また,Automount と AutoFS の基本的な違い,特に,指定したマウントをこれらのサービスがどのように解釈して実行するかについても説明します。

注意

Automount デーモンは,Tru64 UNIX の将来のリリースでは廃止される予定です。 Automount から AutoFS への移行については,4.6.3.5 項を参照してください。

この付録と autofsmount(8) の「Restrictions」の項で説明しているように多少の制限はありますが,Automount マップと AutoFS マップは同じように使用できます。

A.1    マップの規約と基本構文

Automount マップと AutoFS マップは,自動マウントの対象とするリモート・ファイル・システム,それをマウントする位置,使用するマウント・オプションを指定する構成ファイルです。 また,他のマップ・ファイルを階層的に指すエントリを含めることもできます。

慣習的に,これらのマップ・ファイルには auto で始まる名前がつけられ,ローカル・システムの /etc ディレクトリに置かれます。 ただし,NIS でマップを配置することもできます。 Automount や AutoFS を実行しているシステムでは,ローカル・マップ,NIS マップ,またはその組み合わせのいずれかを使用できます。 詳細は 4.6.3.4 項 を参照してください。

マップには次の 4 種類があります。

以降の項では,これらのマップの目的と構文について説明します。

A.1.1    マスタ・マップ

マスタ・マップは Automount や AutoFS に対するトップレベルのマップ・ファイルです。 このマップは,他のマップ (ダイレクト,インダイレクト,スペシャル) を指すエントリのみを含み,マウントの記述は行いません。 ただし,指定されたマップにリストされているマウントのすべてに適用されるマウント・オプションを記述することはできます。

マスタ・マップの各行の構文は,次のとおりです。

key  map [mount-options]

key

マップを適用するディレクトリを指定します。 map 引数がインダイレクト・マップまたはスペシャル・マップの名前の場合は,ローカル・ディレクトリのフルパス名を入力します。 map 引数がダイレクト・マップの場合は,定義済みのダミー・ディレクトリ /- を使用します。 詳細は A.1.2 項A.1.3 項を参照してください。

map

automount または autofsmount コマンドがマウント・ポイントと位置を見つける際に使用するマップを指定します。 ファイル名,NIS マップ名,スペシャル・マップ名のいずれかを指定します。

mount-options

map にリストされたエントリのマウントを制御するために使用されるオプションのリストです。

マスタ・マップの例を次に示します。

/-           auto.tools    -nosuid,hard,intr  [1]
/home        auto.home     -nosuid,hard,intr  [2]
/net         -hosts        -nosuid,hard,intr  [3]
 

このマスタ・マップのエントリには,次のような目的があります。

  1. auto.tools という名前のダイレクト・マップを指します。 このマップは共用アプリケーションのマウントを記述します。 [例に戻る]

  2. auto.home という名前のインダイレクト・マップを指します。 このマップはユーザのホーム・ディレクトリのマウントを記述します。 [例に戻る]

  3. -hosts という名前のスペシャル・マップを指します。 このマップについては A.1.4 項で説明しています。 [例に戻る]

エントリはすべて,それぞれのマップ・ファイルに記述されたマウントすべてに適用されるマウント・オプションの文字列を含んでいます。 これらのマウント・オプションについては, mount(8) を参照してください。

A.1.2    ダイレクト・マップ

ダイレクト・マップは,ローカル・システムにマウントするリモート・ファイル・システム,そのファイル・システムをサービスするリモート・ホスト,そのファイル・システムをマウントするローカル・ディレクトリを指定します。 また,ダイレクト・マップを使用して各ファイル・システムのマウント・オプションを指定することもできます。

ダイレクト・マップという名前は,記述するマウントが完全修飾マウント・ポイントに関連付けられているためです (逆に,インダイレクト・マップのエントリは,マスタ・マップで指定する親ディレクトリに関連付けられています)。

ダイレクト・マップの構文は次のとおりです。

key [mount-options] location

key

マウント・ポイントのフルパス名を指定します。

mount-options

このマウントに対するオプションをリストします。 このオプションが存在する場合,コマンド行やマスタ・マップで指定したマウント・オプションよりもこちらが優先されます。

location

マウントするリソースの位置を server:pathname という形式で指定します (正常にマウントするには,4.5.2 項で説明しているように,ファイル・システムは指定したサーバからローカル・ホストに対してエクスポートされていなければなりません)。 location フィールドは複数指定できます。 詳細は A.2.5 項を参照してください。

次に示すマップ (auto.tools) は,ダイレクト・マップの例です。

/tools/bin   apollo:/usr/opt/bin 
/tools/lib   apollo:/usr/opt/lib
/tools/man   apollo:/usr/opt/man

これは,生産環境のサーバ apollo からエクスポートされる共用アプリケーションのマウントを記述しています。 このサーバでは,ファイル・システムは /usr/opt ディレクトリにありますが,クライアント・システムでは /tools ディレクトリ内にマウントされています。

A.1.3    インダイレクト・マップ

インダイレクト・マップの目的と形式はダイレクト・マップと同じです。 ただし,ダイレクト・マップのキーとは異なり,インダイレクト・マップのキーは,先頭にスラッシュの付かない単純なディレクトリ名になっています。

インダイレクト・マップは全体として,マスタ・マップ (A.1.1 項を参照) またはコマンド行で指定される親ディレクトリに関連付けられています。 インダイレクト・マップ内のエントリには,親ディレクトリ内に個別にマウントされるサブディレクトリをリストします。

次に示すマップ (auto.home) は,インダイレクト・マップの例です。

strauss   apollo:/usr/staff/strauss
cameron   apollo:/usr/staff/cameron
smith     zeus:/usr/staff/smith
samler    apollo:/usr/staff/samler
campbell  zeus:/usr/staff/campbell
larson    apollo:/usr/staff/larson

このマップは,ユーザのホーム・ディレクトリのマウントを記述します。 これらのホーム・ディレクトリは,生産環境のサーバ (zeus と apollo) からエクスポートされています。

このマップにリストされているユーザ・ディレクトリはすべて同じ親ディレクトリ /home にマウントされるので,各エントリにそれを指定する必要はありません。 その代わりに,インダイレクト・マップ全体が /home ディレクトリに関連付けられています。

たとえば,このファイルの最初のエントリは,次のようなダイレクト・マップのエントリと論理的に等価です。

/home/strauss   apollo:/usr/staff/strauss

A.1.4    スペシャル・マップ

-hosts マップと -null マップは,自動マウント・デーモン内に組み込まれているスペシャル・マップです。

-hosts マップを使用すると,ローカル・システムの hosts データベース内にリストされている NFS サーバがエクスポートしているファイル・システムすべてを同時にマウントできます (システムが使用する hosts データベースは,システムで実行されているサービスと,そのサービスが /etc/svc.conf ファイル内で指定されている順序によって決まります)。

次のように,automount コマンドで -hosts マップを使用できます。

# automount /net -hosts

同じように,autofsmount コマンドで -hosts マップを使用することもできます。

# autofsmount /net -hosts

また,A.1.1 項で説明しているように,マップ・ファイル内で -hosts マップを使用することもできます。

その後,ローカル・システムのユーザが /net/hostname (ここで hostnamehosts データベースにリストされているサーバ) に切り替えると,hostname からエクスポートされているファイル・システムは,すべてローカル・システムの /net/hostname ディレクトリに自動的にマウントされます。

たとえば,NIS が稼働しているローカル・エリア・ネットワークに hera と sheba というホストがあるとします。 hera のスーパユーザが automount /net -hosts コマンドを入力すると,hera のユーザは sheba が hera にエクスポートするすべてのディレクトリにアクセスできるようになります。 エクスポートされているディレクトリはすべて,hera の /net/sheba の下にマウントされます。

-null マップは,指定されたディレクトリに関連するマップを取り消します。 これは,マスタ・マップ内で指定されたマップを取り消すために使用できます。 たとえば,automount コマンドを次のような形式で実行すると,auto.master 内の /net エントリが無視されます。

# automount /net -null

-null マップは autofsmount コマンドでも同様に動作しますが,インダイレクト・マップ内のエントリを取り消そうとする場合は異なります。 この特別な場合には,autofsd コマンドに -null オプションを指定して実行する必要があります。 以下に例を示します。

# autofsd /works/dorado -null

このコマンドを実行すると,AutoFS は,インダイレクト・マップ内に指定した /works/dorado マウント・ポイントに関連するマウントを取り消します。

A.2    高度なマップ構文

Automount と AutoFS では,マップの冗長な記述を少なくしたり,場合によってはファイル・システムのマウント方法や時期をより高度に制御するための追加の構文が用意されています。 次のような構文があります。

これらの構文について,以降の項で詳細に説明します。

A.2.1    置換とパターン照合

automount コマンドと autofsmount コマンドはどちらも,マップ内での冗長な記述をなくすためのアンパサンド (&) とアスタリスク (*) 文字を認識します。

アンパサンドは,同じマップ・エントリ内でキーと同じ文字列が繰り返される場合に,マップ・エントリのキー名の代わりとして使用できます。

アンパサンドはダイレクト・マップとインダイレクト・マップの両方で使用できますが,インダイレクト・マップで使用する場合がもっとも効果的で,理解するのも容易です。 次の例は,アンパサンドを使用していないインダイレクト・マップです。

#key               mount-options      location
#
host1              -rw,nosuid        host1:/home/host1
host2              -rw,nosuid        host2:/home/host2

置換文字としてアンパサンド (&) を使用すると,エントリは次のようになります。

#key               mount-options     location
#
host1              -rw,nosuid        &:/home/&
host2              -rw,nosuid        &:/home/&

アスタリスク(*)を使用して,すべて同じ形式になっている複数の行を置換することができます。 どちらのデーモンもアスタリスクを検出すると,アスタリスクより前にあるエントリでキーとしてリストされていないホストすべてに一致します。

アスタリスクが使用できるのはインダイレクト・マップに限られます。 次に,アスタリスク (*) の一般的な使用例を示します。

#key            mount-options           location
#
host1              -rw,nosuid        &:/home/&
host2              -rw,nosuid        &:/home/&
*                  -rw,nosuid        &:/home/&

ユーザが次のコマンドを実行すると仮定します。

% ls /home/host5

どちらのデーモンも,ホスト名 (host5) を key として認識し,location フィールドにある各アンパサンドを host5 に置き換えます。 host5 に置き換えた結果,このマップは次のように解釈されます。

#key            mount-options           location
#
host5               -rw,nosuid              host5:/home/host5

注意

automount コマンドと autofsmount コマンドは,ローカル・マップ・ファイルの中でアスタリスクの後ろに続くエントリをすべて無視します。

A.2.2    環境変数

環境変数名にドル記号 ($) 接頭辞を付加すると,マップ内で環境変数の値を使用できます。 また,付加された英字や数字と変数名とを区別するために,中カッコ({})を使用できます。

環境変数は,環境から継承することができますが,コマンド行に -D オプションを追加して明示的に定義することもできます。 たとえば,次のコマンドを入力すると,HOST 変数を付けて automount デーモンを呼び出すことができます。

# automount -D HOST=hostname

AutoFS で変数を定義するには,次のように autofsd デーモンと autofsmount コマンドの両方に変数定義を渡さなければなりません。

# autofsd -D HOST=hostname
# autofsmount -D HOST=hostname

サービスの実行中に新しい変数を定義することはできますが,通常は,システムで Automount や AutoFS を起動する際に定義します。

次の例は,標準の環境変数 HOST を使用して,ローカル・ホストにマウントするディレクトリを指定するダイレクト・マップ・エントリの例です。

/mydir     -rw        apollo:/export/$HOST
 

次の例は,明示的に定義した環境変数 MACH および OS を使用して,ローカル・ホストのアーキテクチャとオペレーティング・システムに合った正しい tools ディレクトリを指定するダイレクト・マップ・エントリの例です。

/tools     -rw     zeus:/tools/${MACH}.${OS}
 

次の例は,明示的に定義した環境変数 NET を使用して,サーバに合ったホスト名を指定するダイレクト・マップ・エントリの例です。

/share/orchard/build/set5     -rw     {$NET}orchard:/share/orchard/build/set5
 

これは,サーバが複数のサブネットに接続され,それぞれのサブネットで異なるホスト名でサーバを参照する場合に便利です。

A.2.3    複数マウント

ダイレクトおよびインダイレクト・マップを記述する場合に,1 つのファイル・システム階層内にあるさまざまなディレクトリが,いろいろなサーバからマウントされるように指定できます。 たとえば,/usr/local ファイル・システムをマシンにマウントする場合,いろいろなサーバから /usr/local 内のさまざまなサブディレクトリをマウントできます。

次の例に,マシン host1,host2,および host3 から,ディレクトリ /usr/local/bin/usr/local/src,および /usr/local/man をマウントする場合のダイレクト・マップのエントリを示します。

/usr/local\
                /bin    -ro        host1:/usr/local/bin \
                /src    -ro        host2:/usr/local/src \
                /man    -ro        host3:/usr/local/man

このエントリは,継続記号 (\) を使用して 4 行に分割され,読みやすくするために継続行が字下げされています。 これは階層化されていない複数マウントの例です。 これらのマウントは,マウント・ポイントはすべて同じ /usr/local ディレクトリにありますが,ユーザがそれぞれのディレクトリに切り替えた時に,個別にトリガがかかるため,階層化されていません。

逆に,ファイル・システムが階層的にマウントされている場合,階層全体が 1 つのオブジェクトとして扱われます。 階層内のサブディレクトリが参照された場合,デーモンは階層全体をマウントします。 アンマウントの場合も,階層全体が 1 つのオブジェクトとしてアンマウントされます。

次の例は,真の階層エントリを示します。

/usr/local \
             /            -ro        host0:/usr/local \
             /bin         -ro        host1:/usr/local/bin \
             /src         -ro        host2:/usr/local/src \
             /tools       -ro        host3:/usr/local/tools

ここでは,管理者はマウント・ポイント / を追加して host0 から /usr/local をマウントして,階層構造を完成させています。 その結果,ユーザが /usr/local 内のいずれかのサブディレクトリ (/usr/local/bin など) に切り替えると,デーモンは同時に /usr/local 階層全体をマウントします。

階層マウントに関する唯一の例外は,AutoFS に特有のものです。

autofsd デーモンも automount デーモン同様,ローカルで使用するファイル・システムへのシンボリック・リンクを作成します。 ただし,ファイル・システムの階層リスト内に,ローカルで使用され,ローカル・システム上でシンボリック・リンクの循環 (/usr/local/bin ディレクトリからのリンクが自分自身に戻る場合など) を引き起こすエントリを autofsd デーモンが検出した場合,グループとしては処理できません。 AutoFS は,各ファイル・システムを個別にマウントおよびアンマウントします。

このような処理が行われるのは,AutoFS がリモート・ファイル・システムを指定マウント・ポイント自体にマウントする (またはシンボリック・リンクを作成する) ように設計されているためです。 Automount はリモート・ファイル・システムが実際にサービスされる特別な一時ディレクトリへのシンボリック・リンクを追加で作成しますが,AutoFS はこのようなリンクは作成しません。 詳細は A.4 節を参照してください。

A.2.4    共用マウント

共用マウントを使用すると,リモート・ファイル・システム内の複数のサブディレクトリがアクセスされたときに,同じリモート・ファイル・システムが重複してマウントされるのを防止できます。 デーモンは,サブディレクトリごとにマウントを重複して作成せず,すでにマウントされているファイル・システムへのシンボリック・リンクを作成します。

共用マウントを指定するには,各サブディレクトリの location フィールドを次のような形式にします。

host:path:subdir

注意

AutoFS は,この構文をサポートしていません。 この構文を検出すると,autofsmount コマンドは最後のコロン (:) をスラッシュ記号 (/) に変換し,このエントリを通常の AutoFS マウントとして扱います。

host フィールドは,ファイル・システムをマウントするリモート・ホストです。 path フィールドは,マウントするディレクトリのパス名です。 subdir フィールドは,シンボリック・リンクが指定されていれば, シンボリック・リンクが対象とするサブディレクトリの名前です。

たとえば,/auto.myindirect というインダイレクト・マップが,マスタ・ファイル内で次のように指定されているとします。

/mydir          /auto.myindirect

また /auto.myindirect は,次のエントリからなるものとします。

mybin           host1:/usr/staff/diane:bin
mystuff         host1:/usr/staff/diane:stuff

ユーザが /mydir/mybin にあるファイルにアクセスすると,automount デーモンによって host1:/usr/staff/diane がマウントされますが,一時的にマウントされたファイル・システム内に,bin サブディレクトリを指す /mydir/mybin という名前のシンボリック・リンクが作成されます。 ユーザが /mydir/mystuff にあるファイルにすぐにアクセスしようとした場合,automount デーモンは stuff サブディレクトリを示すシンボリック・リンクを作成するだけで済みます。 これは,/usr/staff/diane ディレクトリがすでにマウントされているためです。 次に示すマップでは,automount デーモンは 2 つの別のマウント処理を実行します。

mybin           host1:/usr/staff/diane/bin
mystuff         host1:/usr/staff/diane/stuff

A.2.5    ファイル・システムのコピー

単一のマウントに対して,複数の記憶位置を指定できます。 ファイル・システムが複数のサーバに置かれていて,そのうちの 1 台が使用不能である場合に,ファイル・システムは他のサーバからファイル・システムをマウントできます (これは,読み取り専用ファイル・システムをマウントし,ファイルの変更を同期させる必要がない場合にだけ有効です)。

次の例では,リファレンス・ページは host1,machine2,または system3 からマウントできます。

/usr/man\
                -ro,soft        host1:/usr/man \
                                machine2:/usr/man \
                                system3:/usr/man

上記の例も,サーバのリストをコンマで区切り, その後ろにコロンとパス名を付けるという方法で表現できます。

/usr/man  -ro,soft  host1,machine2,system3:/usr/man

この構文が有効なのは,各サーバのパス名が同じ場合だけです。

リファレンス・ページにアクセスすると,automount デーモンによって,指定された各サーバに ping 要求 (NFS v2 のループ要求) が並行送信されます。 この要求に最初に応答したサーバからファイル・システムがマウントされます。

一方,autofsd デーモンは,ネットワーク・アドレスに基づく現在のシステムとの位置関係によって,指定された各サーバをローカル,同一サブネット,同一ネットワーク,その他のネットワークのいずれかに分類します。 続いて,もっとも距離的に近いリソースからファイル・システムのマウントを試みます。 (ローカル・アドレスが最優先されます。)

ローカルのファイル・システムを使用できる場合,autofsd デーモンはシンボリック・リンクによって,そのファイル・システムにアクセスします。 ローカルのファイル・システムを使用できない場合には,同一サブネット,同一ネットワーク,その他のネットワークの順序で,グループ内の各サーバがチェックされます。 ローカル・アドレスをチェックする場合を除き,autofsd デーモンはグループ内の各サーバに ping 要求を並行送信し,最初に応答したサーバからファイル・システムをマウントします。

A.3    マップの例

ここに示す例は,同じマップをさまざまな方法で書き直す方法を図示しています。

図 A-1 には,/etc/auto.direct ダイレクト・マップ,組み込みの -hosts マップ,/etc/auto.home インダイレクト・マップを指す auto.master マップを示しています。 auto.master が指すそれぞれのマップが展開されて,サンプルの内容を示しています。

図 A-1:  自動マウント・マップの例

次の例は,図 A-1/etc/auto.direct マップを,複数マウント (例 A-1),複数マウントと共用マウント (例 A-2),複数マウントと共用マウントとコピーしたファイル・システム (例 A-3) を用いて書き直す方法を示しています。

例 A-1:  ダイレクト・マップでの複数マウント

/mnt/mytmp                          june:/usr/staff/jones/tmp
/mnt/mynotes                        june:/usr/staff/jones/notes
/usr/arch       /             -ro   chester:/usr/arch \
                /bsd          -ro   chester:/usr/arch/bsd \
                /standards    -ro   chester:/usr/arch/standards \
                /dec/uws      -ro   chester:/usr/arch/dec/uws \
                /dec/ultrix   -ro   chester:/usr/arch/dec/ultrix

例 A-2:  ダイレクト・マップでの複数マウントと共用マウント

/mnt/mytmp                          june:/usr/staff/jones:tmp
/mnt/mynotes                        june:/usr/staff/jones:notes
/usr/arch       /             -ro   chester:/usr/arch \
                /bsd          -ro   chester:/usr/arch/bsd \
                /standards    -ro   chester:/usr/arch/standards \
                /dec/uws      -ro   chester:/usr/arch/dec/uws \
                /dec/ultrix   -ro   chester:/usr/arch/dec/ultrix

例 A-3:  ダイレクト・マップでの複数マウントと共用マウントとファイル・システムのコピー

/mnt/mytmp                          june:/usr/staff/jones:tmp
/mnt/mynotes                        june:/usr/staff/jones:notes
/usr/arch       /             -ro   chester:/usr/arch \
                /bsd          -ro   chester:/usr/arch/bsd \
                                    bazel:/src/bsd \
                /standards    -ro   chester:/usr/arch/standards \
                /dec/uws      -ro   chester:/usr/arch/dec/uws \
                                    fiesta:/archive/uws\
                /dec/ultrix   -ro   chester:/usr/arch/dec/ultrix

上記の例に示す /etc/auto.direct マップは,インダイレクト・マップとして書き直すことができます。 /etc/auto.direct マップをインダイレクト・マップとして書き直すと,auto.master マップ内でそのマップを指していたエントリは,次のようになります。

/mnt     /etc/auto.indirect

単純なインダイレクト・マップ (/etc/auto.indirect) として書き直すと,図 A-1/etc/auto.direct マップは 例 A-4 のようになります。

例 A-4:  単純なインダイレクト・マップ

mytmp           june:/usr/staff/jones/tmp
mynotes         june:/usr/staff/jones/notes
arch    -ro     chester:/usr/arch

以下の例は,インダイレクト・マップも,複数マウント (例 A-5),複数マウントと共用マウント (例 A-6),複数マウントと共用マウントとコピーしたファイル・システム (例 A-7) を用いてを書き直せることを示しています。

例 A-5:  インダイレクト・マップでの複数マウント

mytmp                               june:/usr/staff/jones/tmp
mynotes                             june:/usr/staff/jones/notes
arch            /             -ro   chester:/usr/arch \
                /bsd          -ro   chester:/usr/arch/bsd \
                /standards    -ro   chester:/usr/arch/standards \
                /dec/uws      -ro   chester:/usr/arch/dec/uws \
                /dec/ultrix   -ro   chester:/usr/arch/dec/ultrix

例 A-6:  インダイレクト・マップでの複数マウントと共用マウント

mytmp                               june:/usr/staff/jones:tmp
mynotes                             june:/usr/staff/jones:notes
arch            /             -ro   chester:/usr/arch \
                /bsd          -ro   chester:/usr/arch/bsd \
                /standards    -ro   chester:/usr/arch/standards \
                /dec/uws      -ro   chester:/usr/arch/dec/uws \
                /dec/ultrix   -ro   chester:/usr/arch/dec/ultrix

例 A-7:  インダイレクト・マップでの複数マウントと共用マウントとファイル・システムのコピー

mytmp                               june:/usr/staff/jones:tmp
mynotes                             june:/usr/staff/jones:notes
arch            /             -ro   chester:/usr/arch \
                /bsd          -ro   chester:/usr/arch/bsd \
                                    bazel:/src/bsd \
                /standards    -ro   chester:/usr/arch/standards \
                /dec/uws      -ro   chester:/usr/arch/dec/uws \
                                    fiesta:/archive/uws\
                /dec/ultrix   -ro   chester:/usr/arch/dec/ultrix

前述したように,図 A-1-hosts マップは Automount および AutoFS によって提供される組み込みマップです。 この場合,ユーザが Automount や AutoFS が稼働しているシステムの /net/hosts1 ディレクトリに切り替えると,システムは hosts データベースで host1 への参照を調べ,host1 がエクスポートしているファイル・システムをすべてローカル・システム上にマウントしようとします。

図 A-1 に示す /etc/auto.home マップは,ユーザがホーム・ディレクトリをリモートでマウントできるようにするためのインダイレクト・マップです。 必要があれば,次のように置換文字を使用して書き直すこともできます。

user1  host1:/usr/staff/&
user2  host2:/usr/staff/&
user3  host2:/usr/staff/&
user4  host2:/usr/staff/&
user5  host3:/usr/staff/&

A.4    Automount および AutoFS の動作の理解

Automount と AutoFS は,必要に応じてファイル・システムを自動的にマウントできるようにするという点で,基本的には同じサービスです。 ただし,この 2 つのサービスは機能を異なる方法で実現しますが,その差はエンド・ユーザにはほとんど見えません。

以降の項では,次のような内容を説明します。

A.4.1    リモート・ファイル・システムのマウント

Automount と AutoFS の主な違いは,Automount がリモート・ファイル・システムのサービスを行う際に,ローカル・システム上の一時ディレクトリ (省略時は /tmp_mount) にファイル・システムをマウントし,そのディレクトリから目的のマウント・ポイントへのシンボリック・リンクを作成することです。 これに対して,AutoFS はローカル・システム上の目的のマウント・ポイントに直接リモート・ファイル・システムをマウントします (ただし,ローカル・システム自体にそのファイル・システムがある場合は例外で,AutoFS はシンボリック・リンクを作成します)。

次のようなダイレクト・マップがあるとします。

/tools/bin   apollo:/usr/opt/bin 
/tools/lib   apollo:/usr/opt/lib
/tools/man   apollo:/usr/opt/man

Automount がこのマップのサービスを行う場合,ユーザがローカル・システムの /tools/bin に切り替えると,Automount はそれに応えてリモート・ファイル・システム /usr/opt/bin を ローカルの /tmp_mnt/apollo/tools/bin ディレクトリにマウントし,次にそのディレクトリから目的のターゲット /tools/bin へのシンボリック・リンクを作成します。

同じマップを AutoFS がサービスする場合,ユーザがローカル・システムの /tools/bin に切り替えると,AutoFS はそれに応えてリモート・ファイル・システム /usr/opt/bin を,目的のローカル・ターゲット・ディレクトリ /tools/bin に直接マウントします (AutoFS は,ローカル・システムが apollo サーバ自身である場合に限り,/usr/opt/bin から /tools/bin へのシンボリック・リンクを作成します)。

これらの動作には,それぞれに利点があります。 たとえば,Automount はリモート・ファイル・システムを一時ディレクトリにマウントするので,それにより共用マウントを利用して,同じリモート・ファイル・システムが重複してマウントされないようにすることができます。 AutoFS では,これらのリモート・ファイル・システムを個別にマウントしなければなりません。

一方,AutoFS は一時ディレクトリとシンボリック・リンクを扱うオーバヘッドがないため,より効率的に動作します。 また,Automount より可用性も高くなっています。 マウントまたはアンマウントを行うには autofsd デーモンが動作している必要がありますが,このデーモンが強制終了されるか使用できなくなった場合でも,既に自動マウントされている NFS ファイル・システムは継続して使用できます。 automount デーモンが異常終了すると,自動マウントされたファイル・システムは,参照する際に automount デーモンを必要とするため,使用できなくなります。

A.4.2    自動マウントの誘発

Automount と AutoFS は基本的な仕組みが異なるため,介入ポイント (自動マウントの契機となる主要なオブジェクト) を含むディレクトリでファイル処理コマンドを実行すると,サービスごとに結果が大きく異なる場合があります。

たとえば,多くのファイル処理コマンドはデフォルトではシンボリック・リンクをたどらないため,これらのコマンドは介入ポイントから Automount の一時ディレクトリへのシンボリック・リンクをたどりません。 したがって,これらのファイル処理コマンドは,コマンドの実行より前にファイル・システムが自動マウントされた場合でも,Automount がサービスするファイル・システムの内容を処理しないことがあります。

AutoFS では,ファイル処理コマンドが AutoFS による自動マウントを誘発するように設計されていれば,そのコマンドは自動マウントされたファイル・システムを常に処理できます。 これは,AutoFS が介入ポイントに直接ファイル・システムをマウントするためです。 前述したように,AutoFS は,要求されたファイル・システムをローカル・ホストがサービスしている場合にのみシンボリック・リンクを作成します。 多くのファイル処理コマンドはこのタイプのシンボリック・リンクを認識しており,整合性を保つために,AutoFS がサービスする他のファイル・システムと同じように処理します。

以下の例は,Automount と AutoFS の環境で同じコマンドを起動したときの動作を説明しています。 特に明記した場合を除き,AutoFS 環境でのコマンドの動作が異なる場合は,AutoFS の ONC+ (Open Network Computing) 標準に準拠するようにしているためです。

いずれの場合でも,directory は直接的な介入ポイント (ダイレクト・マップで指定されるキー・オブジェクト) が置かれるディレクトリです。

注意

コマンドで特に指定した場合を除き,間接的な介入ポイントは自動マウントを誘発しません。

直接的または間接的な介入ポイント自身であるディレクトリでコマンドを実行すると,必ず自動マウントが誘発され,その後に,自動マウントの契機となったコマンドによって,自動マウントされたファイル・システムの内容が処理されます。