Solaris ネーミングの管理

第 25 章 ファイルコンテキストの管理

この章では、アプリケーション固有のコンテキストをどのように管理するかについて説明します。

ファイルコンテキストの管理

ファイルコンテキストには、以下のようなものがあります。

fncreate_fs を使ってファイルコンテキストを作成する

fncreate_fs コマンドにより、組織やサイト用にファイルコンテキストが作成できます。fncreate コマンドによって作成されたホストやユーザーのためのデフォルトのファイルコンテキストを無効にするために使用されることもあります。

fncreate_fs コマンドの使用には、以下のような 2 つの方法があります。

fncreate_fs の 2 つの方法には、以下のような構文があります。


fncreate_fs [-v] [-r] -f file  composite_name
fncreate_fs [-v] [-r]  composite_name [options] [ location...]
表 25-1 fncreate_fs コマンドのオプション

オプション 

説明 

composite_name

ファイルコンテキストの複合名 

-f file

file という名前の入力ファイルを使用する

options

マウントのオプション 

location

マウントする位置 

-v

詳細出力に設定。作成および修正されるコンテキストに関する情報を表示 

-r

composite_name で名前付きコンテキスト、およびそのサブコンテキストのすべてのバインディングを、入力で指定したものだけで置き換える。これは、コンテキスト (およびそのサブコンテキスト) を削除し、このオプションなしで、fncreate_fs を実行するのと同じ。-r オプションは、注意して使用する必要がある

fncreate_fs コマンドは、FNS コンテキスト、および onc_fn_fs リファレンスタイプのバインディングを操作します。これは、onc_fn_fs_mount タイプのアドレスを使って、それぞれのリモートのマウント先を表わします。このタイプのアドレスに関連するデータは、XDR で符号化された 1 つの文字列で示した、対応するマウントのオプションやマウント先になっています。

入力ファイルを使って、ファイルコンテキストを作成する

入力ファイルには、composite_name のコンテキストでバインドされる名前や値が入っています。この形式は、間接自動マウントマップの形式に基づいてはいますが、全く同じではありません。入力ファイルには、以下のような形式のエントリが 1 つあるいは複数含まれています。


name [options] [location...]

各エントリについて、マウントの位置や対応するマウントのオプションのリファレンスは、composite_name/name に割り当てられます。

optionslocation の両方が省略されると、リファレンスは composite_name/name にバインドされません。既存のリファレンスもすべてバインドされません。

たとえば、kuanda のファイルシステムを図 22-4 に示すように、ホスト altair からディレクトリ /export/home/kuanda に NFS マウントするとしましょう。コマンドは以下のように実行されます。


% fncreate_fs -f infile user/kuanda/fs 

ここでは、以下を含む infile を使用します。


. altair:/export/home/kuanda

図 22-5 に示されるような、複数のサーバーに分散された複雑なファイルシステムを設定する場合、以下のコマンドを実行します。


% fncreate_fs -f infile org/sales/fs

ここでは、以下を含む infile を使用します。


tools/db	 	altair:/export/db
project		 	altair:/export/proj
project/lib             altair:/export/lib
project/src	 	deneb:/export/src 

プロジェクトやそのサブコンテキストの srclib の NFS マウントを、読み取り専用に変更する場合、infile を以下のように変更します。


tools/db          svr1:/export/db
project          -ro     svr1:/export/projproject/lib altair:/export/lib
project/src          svr2:/export/src

-ro は、3 行目と 4 行目では必要ありません。なぜならば、src および lib は、project のサブコンテキストであり、これらは、上から -ro マウントオプションを継承するからです。

以下の入力ファイルは、org/sales/fs/project/src を除いて、すべてのマウントを読み取り専用にします。


.       -ro
tools/db    svr1:/export/db
project     svr1:/export/proj
project/lib altair:/export/lib
project/src      -rw      svr2:/export/src

コマンド行の入力によりファイルコンテキストを作成する

fncreate_fs コマンドにより、以下のようにバインディングの説明をコマンド行で入れることもできます。


fncreate_fs composite_name [ mmount_options] [mount_location ...] 

これは、コマンドの入力ファイル書式を使用し、キーボードから個々のバインディングを入力するのと同じです。先の kuanda のファイルシステムを設定した例は、コマンド行からは、以下のように設定できます。


% fncreate_fs user/kuanda/fs altair:/export/home/kuanda 

同様に、図 22-5 に示した階層構造は、以下のような一連のコマンドを実行することによって、設定できます。


% fncreate_fs org/sales/fs/tools/db altair:/export/db 
% fncreate_fs org/sales/fs/project altair:/export/proj 
% fncreate_fs org/sales/fs/project/lib altair:/export/lib
% fncreate_fs org/sales/fs/project/src deneb:/export/src

これら 3 つすべてのマウントを読み取り専用にするには、以下のコマンドを実行します。


% fncreate_fs org/sales/fs -ro

詳細入力フォーマット

以下の 2 つの項で述べる内容は、入力ファイル、およびコマンド行入力の両方の形式に適用されます。

多重マウントの位置

複数の location フィールドが、機能的には同じである複数の位置からエクスポートされた NFS ファイルシステムに対して指定できます。


% fncreate_fs org/sales/fs altair:/sales cygnus:/sales 

オートマウンタが、選択肢の中から最適のサーバーを選択します。リストの中のいくつかの位置が同じパス名を共有している場合、これらは以下のようにコンマで区切ったホスト名のリストを使用して、結合されます。


% fncreate_fs org/sales/fs altair,cygnus:/sales 

ホストは、丸括弧で囲った整数の形でホストに追加された重み係数により加重されることがあります。この場合、数字が小さければ小さいほど、望ましいサーバーであることを示します。デフォルトの重み係数は、ゼロ (もっとも望ましい) です。マイナスの数字は使用できません。

以下の例では、cygnus が望ましいサーバーになっていることを示す 1 つの方法を表わしています。


% fncreate_fs org/sales/fs altair(2),cygnus(1):/sales 

変数の置き換え

前に $ の付く変数名を、fncreate_fsoptionslocation のフィールドで使用できます。たとえば、マウントの位置は、以下のように指定できます。


altair:/export/$CPU

対応するファイルシステムにマウントする際、オートマウンタにより、これらの変数がクライアントに固有の値に置き換えられます。上の例の場合、$CPU は、uname -p の出力結果、たとえば sparc で置き換えられます。

下位互換入力フォーマット

さらにオートマウントマップとの互換として、以下の入力ファイル書式も fncreate_fs で使用できます。


name	 [mount_options ] [mount_location ...] ¥
 / offset1 [mount_options1]  mount_location1 ... ¥
 / offset2  [mount_options2] mount_location2 ... ¥
 ...

ここでは、各 offset フィールドは、スラッシュで区切った階層構造になっています。バックスラッシュ (¥) は、1 つの長い行の続きであることを示します。これは、以下を行うのと同じことです。


name [mount_options ] [mount_location ...] ¥ 
  name/offset1 [mount_options1 ] mount_location1 ... ¥ 
  name/offset2 [mount_options2 ] mount_location2 ...... 

最初の行は、mount_optionsmount_location の両方が省略されている場合、省略します。この書式は、互換のためだけのものです。これ以外の機能はないので、あまり使用しないでください。