この付録では,AutoFS マップと Automount マップの記述方法を説明します。
これは,automount
デーモンまたは
autofsd
デーモン (4.1.2 項
および
4.6.3 項
を参照) でマウントするファイル・システムを指定する際に使用します。
また,Automount と AutoFS の基本的な違い,特に,指定したマウントをこれらのサービスがどのように解釈して実行するかについても説明します。
注意
Automount デーモンは,Tru64 UNIX の将来のリリースでは廃止される予定です。 Automount から AutoFS への移行については,4.6.3.5 項を参照してください。
この付録と
の「Restrictions」の項で説明しているように多少の制限はありますが,Automount マップと AutoFS マップは同じように使用できます。 autofsmount
(8)
Automount マップと AutoFS マップは,自動マウントの対象とするリモート・ファイル・システム,それをマウントする位置,使用するマウント・オプションを指定する構成ファイルです。 また,他のマップ・ファイルを階層的に指すエントリを含めることもできます。
慣習的に,これらのマップ・ファイルには
auto
で始まる名前がつけられ,ローカル・システムの
/etc
ディレクトリに置かれます。
ただし,NIS でマップを配置することもできます。
Automount や AutoFS を実行しているシステムでは,ローカル・マップ,NIS マップ,またはその組み合わせのいずれかを使用できます。
詳細は
4.6.3.4 項
を参照してください。
マップには次の 4 種類があります。
以降の項では,これらのマップの目的と構文について説明します。
A.1.1 マスタ・マップ
マスタ・マップは Automount や AutoFS に対するトップレベルのマップ・ファイルです。 このマップは,他のマップ (ダイレクト,インダイレクト,スペシャル) を指すエントリのみを含み,マウントの記述は行いません。 ただし,指定されたマップにリストされているマウントのすべてに適用されるマウント・オプションを記述することはできます。
マスタ・マップの各行の構文は,次のとおりです。
key map
[
mount-options]
マップを適用するディレクトリを指定します。
map
引数がインダイレクト・マップまたはスペシャル・マップの名前の場合は,ローカル・ディレクトリのフルパス名を入力します。
map 引数がダイレクト・マップの場合は,定義済みのダミー・ディレクトリ
/-
を使用します。
詳細は
A.1.2 項と
A.1.3 項を参照してください。
automount
または
autofsmount
コマンドがマウント・ポイントと位置を見つける際に使用するマップを指定します。
ファイル名,NIS マップ名,スペシャル・マップ名のいずれかを指定します。
map にリストされたエントリのマウントを制御するために使用されるオプションのリストです。
/- auto.tools -nosuid,hard,intr [1] /home auto.home -nosuid,hard,intr [2] /net -hosts -nosuid,hard,intr [3]
このマスタ・マップのエントリには,次のような目的があります。
auto.tools
という名前のダイレクト・マップを指します。
このマップは共用アプリケーションのマウントを記述します。
[例に戻る]
auto.home
という名前のインダイレクト・マップを指します。
このマップはユーザのホーム・ディレクトリのマウントを記述します。
[例に戻る]
-hosts という名前のスペシャル・マップを指します。 このマップについては A.1.4 項で説明しています。 [例に戻る]
エントリはすべて,それぞれのマップ・ファイルに記述されたマウントすべてに適用されるマウント・オプションの文字列を含んでいます。
これらのマウント・オプションについては,
mount
(8)A.1.2 ダイレクト・マップ
ダイレクト・マップは,ローカル・システムにマウントするリモート・ファイル・システム,そのファイル・システムをサービスするリモート・ホスト,そのファイル・システムをマウントするローカル・ディレクトリを指定します。 また,ダイレクト・マップを使用して各ファイル・システムのマウント・オプションを指定することもできます。
ダイレクト・マップという名前は,記述するマウントが完全修飾マウント・ポイントに関連付けられているためです (逆に,インダイレクト・マップのエントリは,マスタ・マップで指定する親ディレクトリに関連付けられています)。
ダイレクト・マップの構文は次のとおりです。
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
-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
(ここで
hostname
は
hosts
データベースにリストされているサーバ) に切り替えると,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
コマンドは,ローカル・マップ・ファイルの中でアスタリスクの後ろに続くエントリをすべて無視します。
環境変数名にドル記号 ($) 接頭辞を付加すると,マップ内で環境変数の値を使用できます。 また,付加された英字や数字と変数名とを区別するために,中カッコ({})を使用できます。
環境変数は,環境から継承することができますが,コマンド行に
-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
単一のマウントに対して,複数の記憶位置を指定できます。 ファイル・システムが複数のサーバに置かれていて,そのうちの 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 つのサービスは機能を異なる方法で実現しますが,その差はエンド・ユーザにはほとんど見えません。
以降の項では,次のような内容を説明します。
各サービスがリモート・ファイル・システムをマウントする方法
各サービスに対して自動マウントのトリガがかかる方法
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 は直接的な介入ポイント (ダイレクト・マップで指定されるキー・オブジェクト) が置かれるディレクトリです。
注意
コマンドで特に指定した場合を除き,間接的な介入ポイントは自動マウントを誘発しません。
直接的または間接的な介入ポイント自身であるディレクトリでコマンドを実行すると,必ず自動マウントが誘発され,その後に,自動マウントの契機となったコマンドによって,自動マウントされたファイル・システムの内容が処理されます。
ls
コマンド
ls -al /directory
Automount は自動マウントを誘発しますが,AutoFS は誘発しません。
ls -R /directory
Automount では,自動マウントの契機にはならず,ls
コマンドは事前に自動マウントされたファイル・システムの処理は行いません。
AutoFS では,自動マウントの契機になり,ls
コマンドは自動マウントされたディレクトリを処理します。
find
コマンド
find /directory expression
Automount は自動マウントを誘発せず,find
コマンドは事前に自動マウントされたファイル・システムを処理しません。
AutoFS は自動マウントを誘発し,find
コマンドは,自動マウントされたファイル・システムを検索します。
chown -R
コマンド
chown -R /directory
Automount と AutoFS はいずれも自動マウントを誘発します。
ただし,chown
コマンドは AutoFS ファイル・システム内にあるファイルとディレクトリの所有権を変更しますが,Automount ファイル・システムは処理しません。
chgrp
コマンドも同じような結果になります。
chmod
コマンド
chmod -R /directory
Automount は自動マウントを誘発しません。
また,chmod
コマンドは自動マウントされたファイル・システムを処理しません。
AutoFS は自動マウントを誘発します。
また,chmod
コマンドは自動マウントされたファイル・システム内のファイルとディレクトリのパーミッションを変更します (介入ポイント自身であるディレクトリを除きます)。
du
コマンド
du /directory
Automount と AutoFS のどちらも自動マウントを誘発しません。
du
コマンドは自動マウントされたディレクトリは処理しません。
この場合,AutoFS の動作は Sun の実装と異なります。 Sun の実装ではどちらも自動マウントを誘発し,自動マウントされたディレクトリを処理します。
vdump
コマンド
vdump -0u /directory
Automount と AutoFS のどちらも自動マウントを誘発しません。
vdump
コマンドは,事前に自動マウントされたファイル・システムは処理しません。