AMD - みる会図書館


検索対象: UNIX MAGAZINE 1994年7月号
25件見つかりました。

1. UNIX MAGAZINE 1994年7月号

表 1 の AMD を提供している anonymous FTP サイト 連載 .. / UN Ⅸ Communication Notes—・ ホスト src . dOC . i C . ac . uk ディレクトリ /pub/packages/adm/c01umbia/amd920824up175. tar ・ gz ftp. cs . C011 b 土 a. edu /pub/amd/amd920824up175. tar. gz Archie などを使って、・職万版の AMD 尉寺している国内のアーカイプサイトを捜したが、この原稿を筆している 皆では発見できなかったそこで、すこし手間はカ功、るが、米または英から入手するしかない。糸融止、どちらの FTP サーバーも、日 : 和判の午・前 6 日判ⅱ後か、すいているようである。こク判り帯には、日米を孑Æする太嚼羊リンクの トラフィックか歩、しているので、上効商に FTP できる。 とともに配布された。そして、 AMD 5.3 beta 1 を最後 に、 lmperial College からのリリースは停止している。 その一方で、米国の CoIumbia 大学からは新たな機能 をとりいれたバージョンがリリースされている。その職斤 版は、 AMD 920824 version patchlevel 75 である 2 。最 新のバージョンは、表 1 に示した anonymous FTP サー バーから入手できる。 今回は、 AMD 920824 patchlevel 75 をもとに解説 する。 AMD は、多くのアーキテクチャに対応している。表 2 ~ 3 に、現バージョンがサポートしているオペレーティン グ・システムとアーキテクチャを示す AMD は、前節で述べた自動ウントの機能を提供して こでは、その概要といくつかの相念について説明 いる。 する。 AMD におけるモデル AMD では、ファイルサーバーカ甘是供するファイルに ついて次のような階層的モデルを適用し、システムを構築 している。 ・ファイルサーパー (file server) AMD のネットワーク竟は、 1 つまたは複数のファイ ルサーバーから構成される。 ・ファイノレシステム (filesystem) 各ファイルサーバーは、 1 つまたは複数のファイルシス テムを提供する。ファイルシステムはファイルサーバー における管理の単位であり、 UNIX でのファイルシス テムと同様の概念である。 2 Anonymous FTP サイトでのタイムスタンプを見たかぎりでは、 のバージョンは 1993 年 9 月 30 日にリリースさそれ以ド ) バージョ ンアップはおこなわれていないようである。 概要 42 ・ポリューム (volume) 各ファイルシステムは、 1 つまたは複数のポリューム から構成される。ポリュームは、 1 つの機能的なまとま りを表す。たとえは、ホームディレクトリや X ウイン ドウ・システム関連のファイルの集合などがこれに相 当する。各ポリュームは、ファイルシステム内の 1 つ のサプディレクトリとして構成される。ファイルシステ ム内でポリュームを参照するためのパスを、サプリンク (sublink) と呼ぶ。 言い換えれば、 AMD は各ファイルサーバーから提供 されるポリュームを、必喫に応してローカルのファイルシ ステムにマウント、あるいはアンマウントする機能を提供 する。各ポリュームは、 AMD のモデルにおけるファイ ルサーバー、ファイルシステム、サプリンクによって特定 される。 AMD では、各ポリュームに対する読出しや書込 みか発生した場合、サプリンクを除くファイルサーバーと ファイルシステムを言叫面し、ローカルのファイルシステム にマウントされているかどうかを調べる。マウントされて いなければ、ローカルのファイルシステムのどこにマウン トするかを決定し、マウントを実行する。 現実の実装では、 AMD は決められたマウント・ディ レクトリ (mount directory) にリモート・ファイルサー バーのポリュームをマウントする。ターゲットのディレ クトリからは、マウント・ディレクトリ内のディレクト リへのシンポリック・リンクが生成される ( 図 1 ) 。 AMD は、ここでポリュームのマウント、アンマウントと、シン ポリック・リンクの生成を管理するのである。 Automount P0int と mount-map AMD では、ローカルのファイルシステム内ク寺定のマ ウントボイント (automount point) を設定し、ファイル サーバーカ甘是供するファイルシステムをそのポイント以下 にマウントする。したがって、 AMD の運用にあたって UNIX MAGAZINE 1994.7

2. UNIX MAGAZINE 1994年7月号

連載 /UNIX Communcation Notes リスト 3 NIS の Makefile に対する変更 $ (YPTSDIR) /amd. home . time : $ (ETCDIR) /amd. home awk ' \ for (i 1 ; i く = NF ; i + + ) \ if (substr($$i, length($$i) , 1 ) printf ("%s" substr ($$i , else \ 1 , length($$i) ー 1 ) ) ; \ $ (MAKEDBM) $ (YPDBDIR) /amd. home ; \ printf ("%s else \ の \ touch $ (YPTSDIR) /amd. ome . time ech0 "updated amd. home" if [ ! $(NOPUSH) ] ; then \ $ (YPPUSH) amd. home ; \ ech0 "pushed amd. home" else \ 続行を 1 行にまとめる。次に、 NIS のデータベース password ファイル (/etc/passwd) を用いたものであ AMD でのマウントマッフ。のなかで変わっているのが、 Password マップ amd では NIS マッフ。の機能は利用できない。 えは、 BSDI の BSD/386 1.1 には NIS がないので、利属の ンでコンパイルした amd では NIS マップは使えない。たと これも当り前だが、 NIS をもっていないワークステーショ 意 4 かのファイルと同様である。 マッフ情報も更新する。これは、 NIS て管理されているは のマップ情報を更新するたびに make を実行し、 NIS の える。これ以後は、 NIS マスターサーバー上にある AMD この成正カ鮗ったら、 AMD の NIS マッフ。の機能力イ吏 のように、直接 NIS のマッフ。名を指定すればよい。 amd /home amd. home 2 の例でいえは、 ンド引数に NIS のマップをそのまま指定する。 3. NIS マップを使用する場合は、 AMD の起重加のコマ ている。 にマップのデータを配送する、という処理をおこなっ YPPUSh ( $ (YPPUSH) ) を実行し、スレープサーバー を更新し、さらにタイムスタンプを更新する。変に、 を作るコマンド makedbm ( $ (MAKEDBM) ) でマップ 48 る。 Password マップを利用する場合、各ューザーのホ ームディレクトリが AMD の管理対象となる。このと き、 AMD のコマンド引数で与えるマウントマップとし て /etc/passwd を指定する。 しかし、マウントマップとして任意の password ファ イルが使えるわけではない。各ューザーのホームディレク トリが、以下の条件を満たしていなければならない。 Password マップが使える条件 たとえば、あるユーサーのホームディレクトリが、 がマウント可能なファイルシステムであること。 /topdir/dom れ ・さらに、 というホスト名でアクセスできる。 dO 〃 ~ れ ... a07 れ 2. dO ? れ 1 このとき、ホームディレクトリを提供するファイルサー という形式になっていること。 / … /domn/home 〃夘市 / dornl /dom2 ・各ューザーのホームディレクトリが、 UNIX MAGAZINE 1994.7 /home/jupiter/yamaguchi

3. UNIX MAGAZINE 1994年7月号

連載 UNIX Communication Notes いときは、 56 は自重加勺にファイルシステムのタイプを error とする。 cation がなかったり、サーバーがダウンした場合、 AMD ファイルシステムのマウントに失敗したり、適当な lo- (error りえない。 ルシステムとなる。ューサーが、これを指定することはあ 結合している部分 ( つまりトップレベル ) が、このファイ point のうち、名前空間がローカノレのファイノレシステムと ァイルシステムである。 AMD が管理する automount Automount FiIesystem により作られる仮想的なフ Top-IeveI FiIesystem (toplvl) 用できる可能性がある。 しかし、複数の read-only ディレクトリの融合には利 このディレクトリ内ではファイルの作成しかうまくいか しても、 Union FiIesystem には . 央されない。 まり、既存のディレクトリにあとからファイルを追加 ・ amd か起動された点でのファイルしか扱えない。っ ・このファイルシステムは自動第勺にマウントされない。 がある。 は未完成 " と書かれており、以下のようないくつかの欠点 このファイルシステム AMD のドキュメントにも、 際のディレクトリは /var/tmp には作成されす失敗する。 ようとすると、シンポリック・リンクは生成されるが、実 /TMP に mkdir コマンドでサプディレクトリを作成し (/var/tmp に作られたファイル ) は削除されない。 ンクのファイルを / T で削除しても、実際のファイル シンポリック・リンクが生成される。シンポリック・リ に実際のファイルが作ら /TMP にはそのファイルへの リ・リストの最後のディレクトリ ( 刎列では / va て / tmp ) このディレクトリでファイルを作成すると、ディレクト クトリ ) へのシンポリック・リンクが生成される。 /var/tmp のトップレベルにあるファイル ( またはディレ このようにすれは、ディレクトリ / p には、 /tmp と として AMD を起動すれはよい。 amd / union : /tmp : /var/tmp —type : =union このファイルシステムにアクセスすると、アクセス要求が かならす工ラーになる。したがって、ユーザーがそのファ イルシステムにアクセスすると、つねに、、 No such file or directory" というエラーメッセージカ芍区される。 Error FiIesystem が存在しているあいだは、 AMD は マウントを再試行しない。しかし、一定日判肋釜過すると、 そのファイルシステムのエントリは AMD のテーフフレか ら削除さ AMD は再度マウントを試みるようになる。 このような Error Filesystem を作ることで、サー / ヾーの 異常により、プロセスが、、刺さる " 状態に陥るのを防ぐよ うになっている。通常、このファイルシステムをユーザー lnheritance Filesystem (inherit) というワイルドカード・エントリを作っておけばよい。 ype : =error したいのなら、 もちろん、どのようなアクセスに対してもつねにエラーと カ甘旨定することはない。 UNIX MAGAZINE 1994.7 ( やまぐち・すぐる奈良先端科学オ支術大完大学 ) ユーティリティである amq の使い方などについて述べる。 した。次回は、 AMD のコマンド行オプション、 AMD の 文法、そして AMD でのファイルシステムについて解説 今回は、 AMD の概要とそのモデル、マウントマップの ☆ カ甘旨定することのないファイルシステム・タイプである。 システム・タイプが inherit になる。これも、ユーサー ていたファイルシステムは、 AMD の内部ではファイル うに扱うことができる。このとき、最初からマウントされ イルシステムを、あたかも AMD がマウントしたかのよ れるディレクトリ ) 以下にすでにマウントされているファ AMD のマウント・ディレクトリ (${autodir} て指定さ AMD デーモンを一 r オプションを付けて起動した場合、

4. UNIX MAGAZINE 1994年7月号

連載 /UNIX Communication Notes—・ リスト 2 生成した AMD のバージョン・チェック % A. s Ⅱ n4 ー sos4 ー 4 . 1 .3/amd —v Copyright (c) 1990 Jan—Simon Pendry Copyright (c) 1990 lmperial C011ege 0f Science' Tech1i010gy & Medicine Copyright (c) 1990 The Regents 0f the University 0f California. Unofficia1 patch level 75. amd 5 . 2.2.2 of 1992 / 05 / 31 16 : 53 : 21 bsd44—beta # 0 : Sat May 19 21 : 58 : 34 JST Bui1t by suguru@umsun07 for a sun4 running sos4 version 4.1.3 (big-endian) . Map support for : root , passwd' union' nis , file , error. FS: ufs, nfs, nfsx, host, link, linkx, lofs, hsfs, pcfs, program, union , autO , direct , top1v1 , error. Primary network : primnetname=" 133.152.80.0 " (primnetnum=133.152.80 ) . カリ用できる 3 。 7. 最後に、 /etc/rpc に AMD のためのエントリを追加 config/Makefi1e. local ュを用意して竹業する。 の MANDIR を変更する。この場合、 3 で述べたように 別のディレクトリに置きたいときは、 Makefi1e . com ジは / usr / 10Ca1 / man / m58 にインストールされる。 com の ETC の設定を変える。また、マニュアルペー ンストールされる。これを変更するには Makefi1e. local/etc/ ディレクトリにすべてのプログラムがイ で完了する。 Makefi1e. com の標準設定では、 /usr/ % make install これは、 6. 実際にインストールする。 する。 どうか、自分の希望するものが入っているかをチェック クチャ、 OS 、ファイルシステムの不頁などが正しいか 彳列をリスト 2 に示す。このとき、表示されるアーキテ amd コマンドに一 v オプションを付けて実行する。実 5. 実行形式から AMD のバージョンを石忍する。 amd rpc に」助日する。 、 300019 " である。 する。 300019 amq したがって、以下に示す行を /etc/ AMD では Sun RPC を用いており、 RPC 番号は 46 使ってみたのである。どちらも蛎乍に岸題はないようだ。 し、乍 &i 忍したそのあとで、今度はシステムの hasmntopt() を ntoptX() に書き換えて、強引に AMD イ具ものを利用するように変更 は鮹夬できると考え、プログラム内の hasmntopt() をすべて hasm- 認しここでの間題は AMD カ甘是供する hasmntopt() だけを使え 3 しつは、これを発見する前に少々饂暴なことをして AMD の重川乍を確 NIS を利用している場合、 /etc/rpc の管理はマスター サーバーでおこなわれる。したがって、 NIS のマップ はかならすマスターサーバーのホストで更新しなけれは ならない。 マウントマップの作成 「 Automount Point と mount-map 」の負行て , ヾたよ うに、 AMD では automount point 以下に、リモート のファイルサーバーから提供されるポリュームをどのよう にマウントするかを記したマウントマップを作成する必 こでは、マウントマッフ。の言当方法について 要がある。 述べる。 マウントマッフ。の不頁 AMD で扱われるマウントマップはイ研頁かあるが、通 常はテキストファイルとして作成する。この場合、作成し たマッフへの高速アクセスを可能にするために、 ndbm を 用いてマップをハッシュ化する機能も用意されている。さ らに、 NIS や Hesiod などのネットワーク竟で情報を管 理するサーバーから提供されるデータやパスワード・ファ イル (/etc/passwd) をマップとして使うこともできる。 運用している AMD でどのような不鶤頁のマップか利用 できるかは、 amd コマンドに一 v オプションを付けて、 % amd —v とすれは調べることができる。リスト 2 を見ると、出力の Wd 、、 nIS 、 file, . Map support for: 最後のほうに、 UNIX MAGAZINE 1994.7 file 、 error カイ吏えることが分かる。 と表示されている。この場合、マップとして root 、 pass- root, passwd, union, niS,

5. UNIX MAGAZINE 1994年7月号

連載 /UNIX Communication Notes リスト 1 os-type の実彳」 % os—type No OS= option specified; SOS4' OS appears to be dynamically determining OS type SOS4 数のアーキテクチャや OS への対応は、 よって実現されている。 意 1 このようなイはみに arch と os-type を実行して表示されたアーキテクチャと OS が、インストールするシステムと異なる場合には注意が必 要である。 config/arch と config/os-type は AMD の 生成に使われる MakefiIe から実行さその結果をもとに必 要なコンパイル・オプションか訣められるからである。このよ うなときは、はは確実に AMD のポーティングが必要になる。 ターゲットとするシステムに似た OS ( 仮に A とする ) を選び、 config/os-A. 五をもとに定義を記していくのが簡単であろ う。 AMD は多数の OS やアーキテクチャをサポートしてい るため、たいていはこのヘッダファイルを変更するだけて利用 できる。 3. Makefile をチェックする。 AMD のソースツリーのルートには Makefile が 5 つ あるが、このうち M efile . com がもっとも重要であ る。 Makefi1e . com には、コンパイル・オプションや AMD がインストールされるディレクトリか立義されて いる。これらを変更したい場合、すなわち、コンパイラ として gcc などを使ったり、ライプラリか丿財票準のディ レクトリに置かれていたりするときは、別の Makefile を用意する。たとえば、ターゲットの OS が s 。 s4 だと すると、 config/Makefi1e.10Ca1. sos4 というファ イルに、必な変更点を言己すればよい。 make の実行時によく使われるのが MakefiIe ・ top で ある。先頭部分を見れは分かるように、この Makefile では AMD がサポートする OS をチェックしている。したがっ て、別の環境に AMD をポーティングするために、ディレ クトリ config に新しいへッダファイルを用意した場合は、 Makefi1e. top のなかの変数 OS-SUPPORTED に、新たに定 義した OS の名前を付け加えなければならない。標準てサポー トされていない竟で AMD をコンパイルするときは、この点 UNIX MAGAZINE 1994.7 % make オプションを指定せずに、 4. make を実行する。 に注意する。 と実行する。 make か終了すると、 AMD で用いられ る amd 、 amq 、 fsinfo などの実行形式ファイルカら れる。ターゲット・システムのアーキテクチャの名前 をェェ、 OS の名前を yy リ、 OS のバージョンを 2 と すると、 A. ェ剛ー 2 というディレクトリに実行形 式ファイルが置かれる。さきはどの SPARCstation2 (SunOS 4.1.3 ) であれは、 A. sun4-sos4-4.1.3 とい うディレクトリに実彳丁形式ファイルかできる。 この原稿を印しながら、いくっかの OS で AMD を インストールしてみた。 ・ SunOS 4.1.3 (JLE を含む ) と ULTRIX 4.3 ( 日本語 ULTRIX を含む ) いっさい変更を加えずに、そのままコンパイルできる。 ・ BSD/386 1.1 コンパイルには失敗するが、 Net2 リリースに含まれて いた AMD か驃準で用意されているので、これを利用 すればよい。 ・日本語 Solaris 2.3 いくつかの問題が発生した。ます、ディレクトリ con- f ig のシェノレ・フ。ログラム arch 、 os-type 、 os-version がうまく動かない。どうやら、プログラム実行中に /bin/sh が core を吐いて死んでしまったようだ。そ こで、 /bin/sh の代わりに /bin/ksh を使うように うに変更した。これで、日本語 Solaris 2.3 でも AMD をコメントアウトし、 OS 側の hasmntopt() を使うよ #def ine NEED_MNTOPT_PARSER らしい。そこで、 config/os-sos5. h のなかにある、 し、 Solaris 2.3 ではどうやら OS 側で提供されている ないことを前提としてプログラムカ嘯かれている。しか ない。 Solaris の環竟では、 OS 側に hasmntopt() が のヘッダファイルと二重に旦言されており、うまくいか コンパイルしてみると、関数 hasmntopt() が OS 側 を用いた。 Makefi1e. top を変更した。コンノヾイラは、 gcc 2.5.8 45

6. UNIX MAGAZINE 1994年7月号

連載 UNIX Communication Notes—の (selector) と呼ばれる条件を付けることができる。セレク タを上手に利用すれば、マウントの牛がきが田かく設定 できる。 複数の location カ甘旨定されている場合、 AMD はリス トに指定された順番に各 location を評価していき、最初 にみつかった利用可能なポリュームを使う。この機能によ り、あるファイルサーバーか古郊章しても、自重加勺にバック アップ・ファイルサーバーのポリュームをマウントする ため、障害を回避することができる。 自動アンマウント AMD では、不要になったポリュームはアンマウントさ れる。 AMD の側でタイマーを管理しており、マウントさ れているポリュームについての参照が一定時間おこなわれ ないと、そのポリュームをアンマウントするイ督はみになっ ている。アンマウントを決定する嗤間、すなわちタイマー 刎直は AMD のコマンド行オプションで設定できる。 ファイルサーバーへのチェック さきほども孑商したように、 NFS には、サーバーがダ ウンするとクライアント側での処理も止まってしまうとい ース う問題がある。これに対処するために、 AMD はファイル サーバーか動いているかどうかを定期的にチェックする。 ファイルサーバーがダウンしていると判断した場合、別 のファイルサーバーのポリュームをマウントする ( もちろ ん、この機能を利用するには代替サ→ヾーの情報をマウン トマップに言当しておかなければならない ) 。 ファイルサーバーか力いているかどうかは、 NFS が使 っている RPC の 1 つである NULLPROC をサーバーに 送り、サーバー側からの応答の有無によって判定する。具 イ勺には、サーバーの状態カ坏明確 ( すなわち、 NFS のリ クエストがタイムアウトするなどの状態 ) になった場合、 AMD は NULLPROC を 3 移澗隔てサ→ヾーに送り、 4 回試行しても返答がないときは、そのサーバーはダウンし たと考える。返答があったときは、サーバーは動いている ものとみなして通常の処理を続行する。 サーバーがダウンしたと判定されると、次の処理がおこ なわれる。 ・そのサーバーから提供されるポリュームに対して複数の location が定義されている場合は、はかのサーバーの 自重加勺な切替え機能により管理の負担カ吠きく軽減される 用する側にとっては、障害にともなうファイルサーバーの 題をある程度は鮹肖できる。また、ネットワーク竟を運 その日判爿カ鉄併宿されるため、従来の NFS カえていた問 動できなくても、あるいは仮にプロセスが、、刺さって " も バーのダウンによって、その復旧まて新しいプロセスか起 実行などを完全凵描することはできない。しかし、サー イルシステム内のファイルをオープンしていたプロセスの この機能では、ユーサーのファイルや、ダウンしたファ で Operation would block" というエラーを返す。 処理が発生しても、その処理をおこなうシステムコール ける。そのあいだにポリュームに対する読出し / 書込み が復旧したと判定されるまで 30 秒間隔でチェックを続 複数の location が定義されていない場合は、サーバー ポリュームへのマウントを試みる。 1. 入手したソースファイルを展開する。 インストールは、以下の手順でおこなう。 インストール手順 から実行形式ファイルを生成しなければならない。 AMD はソースファイルで提供されるので、ますソ AMD のインストール というメリットがある。 44 2. インストールするシステムの OS とアーキテクチャを これは、サプディレクトリ config にある 3 つのシェ ノレ・フ。ログラム、 arch 、 os-type 、 os-version を 使ってチェックする。これらは、それぞれアーキテク チャ、 OS の不頁、 OS のバージョンを知るためのもの である。たとえば、 SPARCstation2 (SunOS 4.1.3 ) で os-type を実行すると、リスト 1 のような結果カ斫等 られる 。ここで得られる名前が、 AMD で用いられる OS の名前になる。 ノート 2 AMD では、 os-type の実行結果がェだった場合、コ ンパイル時にファイル config/os-mc.h を読み込む。この ファイルには、 AMD の生成に必な定義が含まれている。複 UNIX MAGAZINE 1994.7

7. UNIX MAGAZINE 1994年7月号

連載 /UN Ⅸ Commurucation Notes—・ AMD てサポートしているマップは、以下のような機能 を提信ける。 File マップ 通常のテキストファイルに記述されたマウントマップ で、 key とそれに対応するいくつかの value から構成さ れる。 key は、 AMD か管理するファイルシステム空間 にファイルアクセスすることで生成される。 value には、 key に応してファイルシステムをどのようにマウントする かを記す。 FiIe マップは、次のような文法に従って する。 基本的に、 key とそれに対応する value は一行に言己 する。 ・複数の value を言当する場合、区切りとして空白文字か タブを用いる。 1 行が長くなる場合は、、、 \ " ( 逆スラッ シュ ) を用いて継続を宣言し、複数行にわたって言己し てもよい。たとえば、 key va1A va1B; \ va1C は、 ke y va1A va1B; va1C と同じである。 ・行頭の空白文字とタブは、 value の区切りとはみなされ なら。したがって、見やすくするために各行をインデン トしてもよい。 ・ 1 つの key に対するは、 2 , 047 文字以内でなけれは・ ならない。 ・行豆勣ゞ # 文字の場合は、行末までをコメントとみなす。 意 2 行頭の空白文字とタブは無視されるので、行を言己す るときは注意が必要である。たとえば、 key va1A va1B ; \ va1C は、 key va1A va1B ;va1C と同しと刊面される。一見、前記の例と同しように見えるが、 実際の評価は大きく異なる。 key に対応する value は、列で は va1A 、 vaIB 、 va1C と 3 つ定義されていたが、こ刎列では、 va1A と va1B ; vaIC の 2 っとみなされる。この種の間違いは UNIX MAGAZINE 1994.7 複雑なマップを書くときに犯しやすく、発見もしにくい。継続 行を言当するときには、ヨー分に注意しなけれはならない。 NDBM マップ AMD には、作成した File マップを ndbm を用いて ノ、ツシュ化し、そのマップに局速にアクセスできるよう にする機能がある。そのためには、 AMD に付属するユー ティリティ mk-amd-map を用いて通常の FiIe マップ から ndbm を用いた形式に変換し、それをマップとして 指定する。 注意 3 この機能は、 ndbm のライプラリをもつシステムでしか 利用できない。利用の可否を調べるには、コマンド amd -v を 実行し、 NDBM マッフ。の機能の有無を石忍すればよい。 NIS マップ NIS を利用して、マウントマップを作成することも可 能である。この場合、複数のワークステーションでマウン トマップか共有できる。これは、大莫な竟で NFS マ ウントを一元管理するときにたいへん便利な機能である。 この機能を利用するためには、 NIS でマップ情報を 提供するように NIS マスターサーバーを作成する。そ れには、 NIS のデータベースを作る Makefile ( 通常は /var/yp/Makefi1e) を書き換えて新たな NIS のマッ プを作成し、それを配布するようにしなければならない。 NIS のスレープサーバーを利用している場合は、スレープ サーバー側にも正しくマップか転送されるよう、 cron で 実行される ypxfr のスクリプトを変更しておく必要があ る。 NIS マップは、以下のようにして利用する。 1. 通常のファイルマップと同しように、ファイルにマッ フ精報を記する。 2. NIS の Makefile を書き換える。 対象となるマッフ。が / etc / d ・。 me であるとすると、 リスト 3 のようなエントリを Makefile に追加する。 以前、 NIS について解説したとき ( 1991 年 6 ~ 7 月 号 ) も述べたが、この変更では、マッフ。のタイムスタン プ amd. home. time を利用して、実際のデータ /etc/ amd. home ( $ (ETCDIR) /amd. home) の更新時刻を判 別し、マップに央する。マップの更新では、最初の awk による処理でコメントと空行を削除し、さらに継 47

8. UNIX MAGAZINE 1994年7月号

連載 /UNIX Communication Notes 表 4 AMD て可能なセレクタ 意味 セレクタ その引機のアーキテクチャ。 AMD のコンバイル時に決定される。この値は、表 3 に示したタイフ。のいすれかであ arch る。各計算機でどのような値か設定されているかは、 amd -v を実行して石忍する。 AMD のマウント・ディレクトリ。 automount point ではない点に注意すること。これは、 AMD 起重加のコマ autodir ンド行オプション -a で与える値になる。 その計算機のバイトオーダー。バイトオーダーが little-endian の場合は little が、 big-endian の場合は big が、そのセレクタの値となる。 ファイルサーバーのグループを表すために用意されているセレクタ。 AMD 起重加寺のコマンド行オプション -C て指 cluster 定する。コマンド行オプションて指定しないと、 ${domain} カイ直として用いられる。 ローカルのドメイン名。 AMD 起重加のコマンド行オプション -d で与えることができる。 ローカルのホスト名。関数 gethostname() を用いて得られた値か設定される。コマンド行オプション -d でドメイ " ( ピリオド ) を含む場合は、最初のピリオドから前を host に、残り ン名カ甘旨定されておらす、かっホスト名に の部分を dorn れに設定する。たとえは、 gethostname() で得られたホスト名が indians. aist-nara ・ ac ・ jp だとすると、 host には indians が、 dom れには aist-nara ・ ac. jp がそれぞれ設疋される。 gethostname( て得られた名前が indians だけだった場合は、面 m れには何も設定されない。 ${host}. $ { 面 rn れ } か設定される。ただし、面 m れの値か空 (empty) の場合は、 ${host} と同し値が設定さ れる。 カーネル・アーキテクチャを得るためのセレクタ。通常は $ { ar 曲 } の値が設定されているが、コマンド行オプショ ン一 k で値を設定することもできる。 その計算機の OSO arch と同様、 AMD のコンパイル時に決定される。この値は、表 2 のいすれかになる。 マウントマップを検索するときのキー。たとえは、 /home が automount point で、 /home/jupiter かアクセ スされたときに発生するマウントマッフ。の検索では、 ${key} には jupiter か設定される。こで、 pref オプショ ンに文字列が諚定されている場合は、それを前に付けたものになる。たとえは、 pref に remote / か設定されていた とすると、 ${key} は remote/jupiter になる。 マウントマッフ。の名前。 マウントマッフ。の検索を発生させたアクセスの糸寸パス。 key のところで挙げた例では、 /home/jupiter になる。 プライマリネットワーク・インターフェイスか接続されているネットワークの名前。 /etc/networks にネット ワーク名カ己されていれば、その名前か第殳定される。言己されていない場合は、ネットワークのアドレスをドット 言己去で表したものになるサプネットカイ吏われているときは、サプネットも含めて設定される。この値は、コマンド 行オプションの一 v でも定できる。 使われる。 AMD て利用可能なセレクタを表 4 に示す。 には注意が必要である。たとえば、 target オプションに tex か設定されている状態で、調面する location に、 セレクションには、同値条件 ( = = ) と否定条件 ( ! = ) が 利用できる。、、 VAX 以外のアーキテクチャ " という条件 target : =emacs ; fs : =/usr/local/${target} は、 arch!=vax と言当できる。 という記述が含まれていたとする。このエントリの言刊面では、 fs に /usr/local/tex か轂定される。通常のプログラミン 利用可能なオプション グ言語とは異なり、 /usr/local/emacs にはならない。 AMD のオプションは、実際にポリュームをマウント 利用可能なセレクタ するときに使われる。その値はマウントマッフで設定し、 セレクタは、ポリュームの 1 。 cati 。 n を利用するかどう 詔面はセレクタの評価と同時におこなわれる。オプション かの条件設疋に使われる。セレクション ( セレクタを用い には、各ファイルシステムに固有のものと、共通のものが た条件式 ) は左から右に詔面され、偽のものを含む loca- こでは、上交洪通に使われるオプションを表 5 ある。 tion は使われない。 に示し、各ファイルシステムに固有のものについては朝行 たとえば、 で説明する。 arch==sun3 ; os==sos4 という言当があった場合、その location はアーキテクチ ャが sun3 で、かっ OS が SunOS 4. x であるときだけ byt e domai n host hostd kar ch OS ke y map path W1re 0 一三 51 UNIX MAGAZINE 1994.7

9. UNIX MAGAZINE 1994年7月号

連載 /UNIX Communication Notes— 表 5 AMD て啝可能なオプション オプション de 1 ay opt s sublink fs type rem マウントが可能かどうかを試す前に待つ ( 移うを指定する。たとえば、あるエントリで 2 つの location を記 述し 2 番目の location のオプションに de1ay:=5 と指定していたとする。この場合、 2 番目の location で 指定されたポリュームがマウントできるかどうかを謌べる前に 5 移澗待つ。このように指定しておけば、 1 番目 の location が〕尺される確率か高くなる。 ファイルシステム・タイプが nfs 、 ufs の場合、ローカルのマウントボイントを指定する。デフォルトでは、 ${autodir}/${rhost}${rfs} が fs の値となる。 ${rhost} はファイルサーバーのホスト名、 ${rfs} はファ イルサーバー上での糸寸パスに展開される。 マウント・システムコールに渡されるオプションを指定する俵 6 参照 ) 。 マウントされているファイルシステムのサプディレクトリ。同しファイルシステムが、同時に 2 回以上マウント されるのを防ぐために使用する。すなわち、ファイルサーバーで同しファイルシステム内に複数のポリュームが 用意されている場合、 sublink オプションを指定すれは、必要以 - E のマウントの発生を防ぐことができる。 ファイルシステム・タイプを指定する。指定できるファイルシステムについては、本文の「 AMD でのファイ ノレシステム」の節を参具のこと。 このオプションは opts と同しように使われるが、リモートホストがローカルなネットワークに接続されていな いときに適用される。ゲートウェイでの遅延などを勘案して評価するような場合に利用できる。このオプション カ甘旨定されていないと、 opts に指定されたものと同じオプションがローカルでないネットワークに接続されて いるサーバーに適用される。 リスト 6 Network Filesystem を第囲したマウントマップ host ! =indians ;type :=nfs;rhost :=indians ; \ マップファイル内でのオプションなどの指定ガ去について こでは、 AMD でのファイルシステムと、 て指定する。 の不頁は、マップファイル内で type オプションを用い ルシステムがいくつか用意されている。ファイルシステム 用意されている ufs 、Ⅱ fs のほかに、 AMD 独自のファイ テムの不頁を指定しなければならない。通常の UNIX で なファイルシステムになっているか、つまりファイルシス AMD では、 AMD か管理するポリュームがどのよう AMD でのファイルシステム rfs : =/home/indians ; sublink: =suguru ・ rhost トする。以下のオフションカ甘旨定できる。 これカ甘旨定されたファイルシステムは、 NFS でマウン Network FiIesystem (nfs) 説明する。 52 ローカルホストカ甘旨定されたものとみなされる。 ならない。このオフションカ甘旨定されていない場合は、 できない。かならず、ホスト名を用いて指定しなけれは ンでは、 IP アドレスによるファイルサーバーの指定は リモートのファイルサーバーを指定する。このオプショ ・ rf S リモートのファイルシステムを糸寸パスて指定する。変 数などを用いたもできる。このオプションカ甘旨定さ れていない場合は、別にデフォルトとして指定されてい る $ { path } か第叫面される。 たとえば、計算機 indians 以外では、 indians のフ ァイルシステム /home/indians のサプディレクトリ /home/indians/suguru を automount point 以下 の suguru にマウントする場合、リスト 6 のようにマウ ントマップを指定する。 このファイルシステムでは、複数の location カ甘旨定さ れた際に、原則としてすべての location に並列にマウン トのリクエストが送ら最初に応答したファイルサー ーが用いられる。したがって、特定のサーバーを利用した いのであれは、 delay オプションを使ってリクエストの 送出に間隔を空け、サーバーにプライオリティをつけるよ うな設定をする。 Network Host FiIesystem (host) Network FiIesystem の拡張で、ファイルサー / ヾーで 公開されているファイルシステムをすべてマウントする。 UNIX MAGAZINE 1994.7

10. UNIX MAGAZINE 1994年7月号

連載 UNIX Communication Notes—の マウントボイントの管理 ムの登場か望まれていた。 合、それを本剱ロして自重加勺にサーハーを切り替えるシステ 以 - ヒのようなことから、サーバーで障害が発生した場 バーが復旧してクライアント側で竹喋ができるようになること 筆者の周りでは、これを「 NFS カ喇さった」、 NFS サー しまう。 ると、クライアント側ではまったく竹業かできなくなって 実装になっているからである。通常、このような状態にな で NFS サ→ヾーに対して何度でもリクエストを再送する マウントの場合、ファイルに対するアクセスカ院了するま に繰り返し、プロセスがハングアップしてしまう。ハ いると、サーバーカ夏旧するまでリクエストの再送を無艮 イルにアクセスするプロセスがクライアント側て川乍して バーがダウンしたとき、そのサーバーカ甘是供しているファ ドマウントにするのが一勺である。しかし、 NFS サー どの書込みが発生するファイルシステムについては、ハー 書込みは保証される。このため、ホームディレクトリな ハードマウントでは、 NFS サーバー上のファイルへの ー - 鉄豆である。 (soft mount) の 2 通りの方法があるが、どちらも一長 ードマウント (hard mount) とソフトマウント NFS でサーバーのファイルシステムをマウントする場 ハードマウント vs. ソフトマウント 管理を一元化する樹冓が必要とされていた。 なんらかのガ去で各クライアントでのマウントボイントの 台にもなると、この作業には膨大な労力がかかる。そこで、 なければならない。管理するクライアントか数十台、数百 う場合、各クライアントの /etc/fstab も適切に変更し リの追加、あるいはサーバーとなる計算機の変更をおこな ルサーバーのディレクトリ構成の変更や新たなディレクト /etc/fstab に言することが多い。このため、ファイ たように、 NFS でのマウントボイントはクライアントの 指定されたディレクトリ ) をマウントする。上にも述べ 動的にファイルサーバーのファイルシステム ( あるいは 通常、 NFS ではクライアントがプートしたときに自 UNIX MAGAZINE 1994.7 を「抜けた」という。 この、刺さった " 状態にならないように、ファイルシス テムをソフトマウントする去も考えられる。しかし、ソ フトマウントでは書込み処理 ( ゴ正されていない。このた め、サ→ヾーがダウンしていたり、きわめて負荷か高くて NFS リクエストの通信をとりこばしてしまうようなとき は、ファイルの書込みに失敗する。したがって、ソフト マウントの場合は、ファイルの書込みに失敗したら、ユー サーがなんらかのガ去でもう 1 度書込みをおこなわなけれ ばならない。 そうした竹業をユーサーに強いるのではなく、ハードマ ウントをしながら、プロセスがハングアッフする状態を避 ける、あるいはハングアッフする可能生を少なくする樹冓 が必要である。 自動マウント こまで述べてきた問題点を鮹夬するために開発された のが、自重丿ウント (auto mount) の樹冓である。これ は、以下のような機能を提供する。 ・必要に応してファイルシステムのマウントとアンマウン トを自重加勺におこなう。 ・どのファイルシステムをどこにマウントするかを集中管 理するための樹冓を提供する。 ・ある NFS サーバーがダウンしたときは、それと同等の ほかの NFS サーバーに自重加勺に切り替える。 この樹冓を具イ材ヒしたものが、 SunOS 4.0 以降 ( すな わち NFS 4.0 ) で提供された automount デーモンや今 回角見する AMD である。 AMD AMD は、英国 lmperial College の Jan Simon Pendry が開発したフリー・ソフトウェアで、インター ネット上でひろく配布されている。 4.4BSD における自 動マウント機構 (automounter) として採用されたこと もあって、多数のプラットホームて利用できる。 AMD のリリースは、通常のソフトウェアとくらべて いささか変わった道をたどっている。 AMD 5.1 までは lmperial College からリリースされていたが、 AMD 5.2 になると 4.3BSD Reno に含まれて配布されるようになっ た。さらに、 AMD 5.3 alpha バージョンは BSD Net2 41