/banana をマウントしているあいだは編集された /banana/baba が見えています。つまり、 ( 透けて見えてい る ) ファイルをいくら更新しても元のファイルは更新され す、重ねられた /banana の上のファイルが更新されてい き、そのファイルだけが見えるというふうになっています。 また、そのファイルを削除しようとすると次のようなこ とが起こります o/monkey/baba を削除するコマンドを 実行すると、一見、完全に削除されたように見えます。と ころが、もともとのファイル /monkey/baba は実際には 削除されていません。順を追って説明しましよう。 ます、削除コマンドを実行する前は、 / monkey の上に TFS マウントされた /banana/baba ともともとの / mon - key/baba との 2 つのファイルが存在しています。そこで 削除コマンドを実行すると、 TFS マウントされたほうの ファイルはほんとうに削除されます。しかし、マウントボ イントにある更新されない / monkey / baba のファイルは 隠されて見えなくなっているだけなのです。これを、、ホワ イトアウト (whiteout)" といいます ( 前ページ図 3 参照 ) 。 root# ls baba root# rm root# ls katayama root# 1s baba root# /banana katayama okayama /banana/baba /ba.nana okayama /monkey katayama okayama ースーバーユーサーへの道 4 ホワイトアウトされたファイルは、普通の ls コマンドで は見ることができません。それには、 lsw というコマンドを 使います。 また前述のように、ホワイトアウトされたファイルは本 当に削除されたわけではありません 3 から、復活させること もできます。そのためのコマンドが unwhiteout です。実 行例を挙げておきます。 root# ls /banana katayama okayama て 00t # 1sw baba て 00t # unwhiteout て 00t # ls て 00t # baba TFS の設定 次に、 TFS の設定の方法をみてみましよう。 katayama okayama ンフィグについては、次回にお話しするつもりですのでお ーネルを作りなおさなけれはなりません ( カーネルのリコ さい。以下のエントリがコメントアウトされていれは、カ のコンフィギュレーション・ファイルを見て確認してくた す。現在のカーネルで TFS が使えるかどうかは、カーネル TFS を使うかどうかは、カーネルを作るときに決めま 楽しみに ) 。 options LOFS options TFS # loopback filesystem ー needed by NSE # translucent filesystem ー needed by NSE カーネルで使えることを確認したら、 tfsd が起動される ように /etc/inetd. conf に以下のエントリがあることを / 1 tfsd/1—2 d 空 1PC/Udp root 、ゝ確かめてください。 /usr/et c/tfsd in. talkd なけれは、追加して inetd を初期化します。これは、 root# kill -HUP [inetd のプロセス ] mount—tfs [ —r ] ディレクトリ ... マウントボイント ー r オプションは、 read ー only でマウントするときに指定 します。また、 mount コマンドで次のように実行すること もできます。 UNIX MAGAZINE 1991.8 ー、、のようにします。これで、 TFS が使える環境になります。 次に、実際にマウントします。これには、 mount-tfs と いうコマンドを使います。 3 ホワイトアウトされたファイルは、 . tfs-info というファイルに記録されていま mount —t tfs ディレクトリマウントボイント す。 53
MONKEYFD 0 Ⅱ /monkeydev type rfs ( ) て 00t 0 ey02 # これで、 monkey01 の FDD が monkey02 でマウント、、よう。 tar コマンドを用いて、 / FI のバックアップをとって できました。 それでは、実際にマウントしたデバイスを使ってみまし root 0 取 key02 # tar tvf /monkeydev/rfdO tar cf /monkeydev/rfdO . /FI root 01 】 key02 # cd / みます。 ーー X6228 / 620 rw ー r ーー r ーー 6228 / 620 ー r ーー r ーー 6228 / 620 珥ー r ーー r ーー 6228 / 620 ー r ーー r ーー 6228 / 620 ー r ーーて一一 6228 / 620 rw ーて一一て一一 6228 / 620 root 011keY02 # 0 Jun 19 18 : 40 1991 2350 Mar 13 15 : 39 1991 4150 Mar 26 17 : 13 1991 2302 Apr 30 17 : 23 1991 2234 May 14 19 : 02 1991 1821 Jun 4 13 : 34 1991 2581 Jun 19 18 : 40 1991 . /FI/USA . /F1/Brazi1 . /F1/Sanmarino /F1/Monaco . /F1/Canada . /F1/Mexico これで、デバイスもマウントされていることが確認でき ました。 ・リソース名の取消し 解除 adv コマンドで通知したリソース名は、設 nadv コマンド さて、設定を解除するにはどうしたらよいのでしようか。 で取り消せます。すでに、 リモートでマウントされている もののアクセスには影響しません。 ・マウント解除 RFS でマウントしたものの解除は、 umount -d リソース名 でおこないます。また、アクセスしているユーザーは fuser コマンドで調べられます。 root@monkey02# umount -d MONKffFD /FI : Device busy r00t510nkeY02 # fuser -u MONKEYFD 72 1822C (baba) ドですべてのリモートマウントが強制的に解除できます。 いちはんいいのですが、非常手段として fumount コマン ます。リモートの管理者に連絡してアンマウントできれば リソースのマウントを解除しなけれはならないときがあり ファイルサーバー側に緊急事態が発生し、提供している ・ファイルサーバー側での取消し root@monkey02# MONKEYFD ・ 1157C (root ) 使い方は、 UNIX MAGAZINE 1991.8 次は、 RFS クライアントの /etc/fstab の設定です。 root okeyOI # chmod 755 /etc/rstab ンを実行可能に変更するのを忘れないでください。 ミツン′ヨ を書けばいいわけです。なお、 /etc/rstab のパー シェルスクリプトなので、各行に実行する adv コマンド adv —d " S ートの " MONKEYFD /dev/monkey adv —d 'tF—I GP data in ' 91 " FIDATA /FormuIa1 # ! /bin/sh 次のように書きます。 /etc/rstab はシェルスクリプトで、たとえば上の例では きをします。 す。これは、 NFS における /etc/exports と同しような働 ます、 RFS ファイルサーバーで /etc/rstab を設定しま をおこないます。 た、 RFS クライアントでは /etc/fstab にマウントの設定 タイズするための / etc / rstab ファイルを設定します。ま す。そして、 RFS ファイルサーバーではリソースをアドバ ます。ます、 / etc / rc で RFS を起動するように設定しま プート時に RFS マウントするためには、次のようにし プート時にマウントするための設定 で、 -w オプションで警告できます。 リソース名 fumount [ -w 〃秒 ]
ユーサーへの道 4 anon は、 sanonymous" の略で、、、匿名の〃という意味が あります。これは、サーバー側に登録されていないユーサ ーに対して仮のユーサー id を設定するオプションです。 れを指定しなかった場合、匿名ューサーのユーサー id は ー 2 に設定され、一 1 を指定すると匿名ューサーのアクセスは 禁止されます。 ・ root = ん OS 切〃襯お [ : ん os 切 4 川召 ] . このオプションで指定したクライアントのスーパーユー サーは、ディレクトリに対してスーパーユーザーの権限で アクセスできるようになります。指定しないと、どのクラ イアントに対してもスーパーユーサーの権限は認められま せん。 このオプションで指定していないクライアントのスーパ ーユーサーはつねに匿名ューサーとみなされ、 anon オプ ションで指定されたユーサー id になります。 ・ access = ん OS / 〃襯お [ : ん OS / 4 襯 e ] . 指定したクライアントに対してだけェクスポートします。 このオプションでは、ホスト名の代わりに「 NIS 」の章で 説明するネットグループ名を指定することもできます。ホ スト名を何も指定していないと、どのマシンからもマウン トできなくなります。 また、このオプションを指定しなけれはすべてのマシン に工クスポートします。 これらの設定でとくに注意が必要なのは、スーパーユー サーの扱いです。何も考えすにスーパーユーサーのアクセ スを許してしまうと、不注意でファイルが消えてしまうな ど、取返しのつかない事態が起こることもあります。スー パーユーザーは、、なんでもあり〃ですから、スーパーユー サーのアクセスを許可するのは必要最小限のクライアン トにとどめましよう。また、書き込む必要のないディレク トリに対しては、なるべく書込み禁止で工クスポートしま 冖 exportfs コマンド さて、 /etc/exports ファイルの設定はこれで完璧 ( ? ) ですが、これだけではまだマシンが認識してくれません。 設定ファイルの情報をマシンに認識させるためには、 exportfs コマンドを使います。一般に、このコマンドはマ シンの立ち上げ時に / etc / rc. local ファイルから実行され るようになっています。 UNIX MAGAZINE 1991.8 ース root# exportfs —a root# exportf s /util -access=monkeys ,root=monkey01 /usr/local —ro , access=monkeyOI :monkey04 /home root# exportfs コマンドは、 /etc/exports ファイルに従って ディレクトリをェクスポートします。 -a オプションをつけ ると、 /etc/exports ファイルに書かれているすべてのデ ィレクトリをェクスポートします。引数に何も指定しない と現在の工クスポートの状態が表示されるので、これで確 認することができます。また、工クスポートの状態は / etc /xtab ファイルに書かれていますから、これを見て確認す ることも可能です。 一方、一 u オプションのあとにディレクトリを指定すれ ば、工クスポートを解除することもできます。 root# exportfs —u /util root# exportf s /usr/local —ro , access=monkey01 : monkey04 /home root# オプションはこれ以外にもありますが、詳しくはマニュ アルの exportfs の項などを参照してください。 = NFS クライアントの設定 NFS のクライアントは、サーバーによって工クスポー トされたディレクトリをマウントしますが、その際には次 のような点を考えなくてはなりません。 ・どのマシンからマウントするのか ・どのディレクトリにマウントするのか ・どのようにマウントするのか ( read ー 0 ⅲ y など ) 実際のマウントには後述する mount コマンドを使いま すが、コマンドを実行するたびにオプションなどを指定す るのは面倒です。そこで NFS ではマウントする場所やオ プションなどをファイルに書いておき、 mount コマンドは そのファイルを参照する仕組みになっています。そのファ イルが、これから紹介する /etc/fstab です。 / etc / fstab については特集の第 1 回でも紹介しました が、ローカルなファイルシステムだけでなく NFS の情報 も書いておくことができます。たとえば、 monkey04 の /etc/fstab ファイルは次のようになっています。 47
、、、レスではありません。 IP アドレスは、 hostrfs コマンドで求めることができま ます、 RFS ドメイン名、 RFS ネームサーバー ( プライマ す。 リ、セカンダリ ) マシンを決めます。ここでは RFS ドメイ root# hostrf s monkey00 ン名を、、 rfsmonkey" 、プライマリ RFS ネームサーバ ーを \ X00021450C09848010000000000000000 root# hostrfs monkey10 、、 monkey00 〃、セカンダリ RFS ネームサーバーを、、 mon - \ X00021450C09848110000000000000000 key10" とします。 次に、 RFS ドメイン内のすべてのマシンに RFS ネーム この IP アドレスを、 /usr/nserve/rfmaster ファイル サーバーと IP アドレスを登録します。なお、 IP アドレス に次のように登録します。このファイルがないときには、 は RFS 用のもので、 /etc/hosts に書かれている IP アド 新たに作ります。 r00t@nonkeyOO# cat rfmaster rfsmonkey rfsmonkey. monkeyOO rfsmonkey rfsmonkey. monkey10 て 00t0 onkeyOO # rfsmonkey. mo keyOO \ X00021450C09848010000000000000000 rfsmonkey. monkey10 \ X00021450C09848110000000000000000 1 つのエントリは 2 行から構成され、各行のフィールド 冖日 FS ネームサーバー はスペースかタブで区切ります。 1 行目の最初のフィールドが RFS ドメイン名、 2 つ目 /usr/nserve/rfmaster が設定できたら、 RFS ネーム のフィールドがサーバーの種類 ( プライマリ、、 P 〃、セカンダ サーバーで RFS を初期化します。これは、 dorfs コマンド リヾ S つ、 3 つ目がホスト名 ( 、、 RFS ドメイン名 . ホスト名〃 にⅲ it オプションをつけて実行します。 と表記 ) です。 て 00t 011keY00 # dorfs init rfsmonkey tcp 2 行目の最初がホスト名、 2 番目がアドレスを表す 、、 A 〃、最後が RFS 用 IP アドレスです。 3 つ目の引数には RFS ドメイン名、 4 つ目には通信プロ さらに、 rfmaster を root だけが書き込めるパー ツン トコルである tcp をつけます。 ョンに変更します。 セカンダリ・サーバーがあるときは、以降で説明するプ ライマリ・サーバーの RFS の起動前にセカンダリ・サー root# chmod 644 /usr/nserve/rfmaster ーも同様に初期化します。 設定が終ったら、これらすべてを RFS ドメインのマシ 次に dorfs の start オプションでサーバーを起動し、 ンにコピーします。これで登録が終了します。 RFS サービスを開始します。 root@monkeyOO# dorfs start rfstart : P1ease enter machine password: rfstart : warnlg: Ⅱ 0 entry for this host in domain passwd fi1e 0 Ⅱ current name server RFS started. root@rnonkeyOO# また、セカンダリ・サーバーがある場合、プライマリ、セ 、、 dorfs start" を実行すると、 listener デーモンが起動さ オ L 、 rfudaemon, rfs.•server 、 rfs:recovery 、 rfs:rfdaemon カンダリの順番に 2 分以内に起動しなければなりません。 などが起動されます。 プライマリ・サーバーだけを起動すると、失敗します。 パスワードの入力を要求してきますが、とりあえすはリ これで、 RFS のネームサービスの環境ができあがりま ターンを入力しておきます。 す。次は、ファイルサービス側の設定です。 68 UNIX MAGAZINE 1991.8
ースー リストー ypinit ー m の実行例 root@master# /usr/etc/yp/ypinit —m lnstalling the yp data base will requlre that you answer a few questions. Questions w 土 11 a11 be asked at the beginnlng of the procedure. DO you want this procedure to quxt on non-fatal errors? [y/n: 司く return 〉 OK, please remember to go back and redo manually whatever fails. If you don't , some part of the system (perhaps the yp itself) won't work. At this point, we have to construct a list of the hosts wh1Ch will run yp ぐ D 〉 slave master me current list of yp servers 100kS like this: next host to add: next host to add: next host to add: list , type a く control D>. the names for the Ot れ e て hosts, one per line. When you are done with the servers. master is in the list Of yp server hosts. P1ease continue tO add ユーサーへの道 4 master slave ls this correct? [y/n: y] There ⅵ 11 be Ⅱ 0 further questions. 5 to 10 minutes . Bui1ding /var/yp/saru/ypservers.. Running / v 矼 / / M efile. updated passwd updated 空 0 Ⅱ p updated netid updated netmasks く return> lhe remainder of the procedure s 五 0 Ⅱ ld take master has been set up as a yp master server without any errors. If there are Ⅱ 1 Ⅱ g slave yp servers , run yppush no 臂 fo て any data bases 土 ch have been changed. If there are no running slaves, run ypinit on those hosts 土 ch are to be slave servers . root&aster# c ) 計算機名は合っているか ? b ) で入力した hostname の確認です。間違っていたら、 迷わす、、 n 〃を入力してやりなおしてください。 また、 /etc/networks などいくつかのファイルは用意 されていないことがあります。その場合、いちいち、、ない よ〃というメッセージを表示しますが、これは無視してか まいません。実際の例をリスト 1 に挙げておきます。 root@master# /usr/etc/yps erv root@mast er# /usr/et c/ypbind とくに注意したいのが、作成されたデー タベース・ファ イルの種類です。ここで作られたデータベースから情報が 提供されるからです。リスト 1 の例では、、、 updated" で始 まる行にそのファイル名が記されています。 6 ) NIS のデーモンの起動 リプートするか、あるいは自分で ypserv 、 ypbind 、 rpc. yppasswdd を起動します。 root@master# /usr/et c/rpc. yppasswdd /et c/passwd ¯m root&aster# 以上で、マスターサーバーの基本的な設定が終了しま す。 / v / yp / 襯 4 切襯召に各種のマップファイルが格 納されているはすですから、確認してみてください。 UNIX MAGAZINE 1991.8 スレープサーバーの設定 ほば同しです。ただし、マップファイルを自分で作成する スレープサーバーの設定は、マスターサーバーの場合と 59
ースーバーユーサーへの道 4 せん。つまり、マスターサーバーで管理されている NIS の は、、 NIS ドメイン saru に属し、計算機 monkey00 を利用 データベース・ファイル ( NIS マップ ) を変更しないかぎ しているユーザー katayama" を表します。また、計算機 り、 NIS クライアントが得る情報に反映されないのです。 名、ユーサー名、ドメイン名のところに何も書かないとワ NIS マップの変更は簡単で、次の手順でおこないます。 イルドカード、すなわちすべての計算機、ユーザー、ドメ こでは、 hosts を変更したときの様子を例にしています。 イン名を表します。たとえば、 (monkey00 , , ) 1 ) マスターサーバーにログインし、スーパーユーザーにな は、、、任意のドメインに属し、計算機 monkey00 を利用し る 2 ) マスターサーバーのファイルを変更する ている任意のユーザー〃ということになります。 該当するファイルをエデイタで編集します。 各フィールドにヾ英数字およびアンダースコア〃以外の 己述があると、これとは逆の意味になります。すなわち、 root@master# vi /etc/hosts root@lnaster# (monkeyOO , ー 3 ) NIS マップを更新する は、、、計算機 monkey00" を表します。要するに、そのフ /var/yp で make コマンドを実行します。 ィールドは冒刊面されないわけです。 通常、 netgroup を利用するファイルは次のものです。 roottnaster# cd /var/yp root@rnaster# make /etc/passwd /etc/hosts. equiv updated hosts pushed hosts /etc/exports /etc/hosts. lpd root@nast er# /etc/rho sts 以上のようにすれば変更できます。マスターサーバー 実際に利用できるネットグループの一般的な定義方法 は、スレープサーバーがあれば変更されたデータをスレー プサーバーに転送します。このため、スレープサーバーが は、次の 3 種類に分けられます。 動いているかどうかを確認します。 1 ) ューザーによる定義 netgroup について 2 ) 計算機による定義 3 ) ューザーと計算機の組合せによる定義 NIS で管理するデータベース・ファイルの大半は、 NIS を使わないときでも必要です。しかし、 NIS を使っている これらの定義を用いた具体的なグループの分類には、次 ときだけ有効なものもあります。これが /etc/netgroup で のようなケースが考えられます。 す。 1 ) 研究室や作業グループなどのユーサーを 1 つのネット netgroup とは、ユーサー、計算機、 NIS ドメイン名で 特徴づけられるあるかたまり ( group ) に分けるものです。 グループにする /etc/passwd ファイルの設定で有効な手法です。その研 従来も、ユーザーは /etc/passwd で指定されるグループ 究室に属しているユーザーをグループに分けることにより、 に属していました。これに対して netgroup は、 研究室単位でアカウントの有効・無効が設定できます。た ( 計算機名 . ユーザー名 , ドメイン名 ) とえは、新入生を 1 つのグループにまとめ、そのグループ では練習用の計算機以外は使えないようにすることがで で定義される、 NIS 環境でのみ利用可能なネットワーク環 きます。 境でのグループです。たとえば、 2 ) 研究室や作業グループなどで使われている計算機を 1 (monkeyOO ,katayama, saru) つのネットグループにする 1 三ロ 63 UNIX MAGAZINE 1991.8
がるまでそのほかの処理ができなくなってしまいます。実 際にはサーバー上のファイルがないと仕事にならないこと が多いので、通常は hard を使います。 soft は、 ro でマウ ントするとき以外は使いません。なお、 hard にしたときは 同時に intr も指定し、キーポードから処理を中断できるよ うにしておきます。 ・ fg ? それとも bg ? 人間の世界にたとえれば、、、借金返すまですっとつきまと うでえ〃というのが fg 、、、まあ、思いだしたときに催促する わ〃というのが bg でしよう ( たとえが悪い ? ) 。それだけ必 要度に差があるわけですが、一般にはディスクレス・マシ ンなどのプートに絶対必要なものや / usr は fg 、そうでな けれは bg を指定しておきます。 このほかにも、マシンおよびネットワークの性能や負荷 によってバッフアサイズを変えてみたり、再送回数やタイ ムアウト時間を変えてみるなど、調整の方法はたくさんあ ります。 NFS の応答か極端に悪くなったら、やみくもにオ プションをいしるのではなく、ますそれが一時的なものな のかどうかを調べてみましよう。 ネットワークではあるマシンの不調が全体に影響を及 ほすことがよくありますから、そちらへの対応のほうが先 決です。 mount と umount 実際にディレクトリをマウントするには mount コマン ドを使います。ふつうはマシンの立ち上げ時に実行し、 / etc / fstab ファイルに書かれているディレクトリをマウ ントするので、手動で mount コマンドを実行することは / , root onkey04 % mount /dev/sdOOa on / type 4.2 ( ) /dev/sdOOh on /usr type 4.2 (rw) /dev/sdOOe on /home type 4.2 (rw) /dev/sdOOd on /tmp type 4.2 (rw) /dev/sdOOf 0 Ⅱ /export type 4.2 (rw) ースーバーユーサーへの道 4 、ゝあまりないと思います。手動での実行は、次のような場合 におこないます。 ・マウントの状態を確認する。 ・ umount コマンド ( 後述 ) でマウントが解除されたディ レクトリを再びマウントする。 ・新たにディレクトリをマウントする場合、とりあえす mount コマンドでマウントしておき、それをもとに /etc/fstab ファイルで設定をおこなう (mount -p)o このように、手動での mount コマンドの実行はデバッ グ的な意味合いが強いといえるでしよう。 一例として、 monkey00 の /home/monkey00 を mon- key04 の /home/monkey00 にマウントしてみることに します。 て 00t onkey04 # cd /home て 00t 011keY04 # mkdir monkey00 て 00t onkey04 # mount /home/monkey00 root&onkey04# ls monkey00 okayama katayama root 0 key04 # baba /etc/fstab に必要なエントリを書いておくと、 mount の引数に fstab の書式のところで説明した万ん s 襯ま たは市尾 0 なを指定するだけで、オプション類は /etc / fstab ファイルから判断してくれます。さもなけれは、オ プションの設定などもすべて mount コマンドの引数で えなければなりません。 引数に何も指定しないと、次のように現在のマウントの 状態が表示されます。 monkey00 :/home/monkey00 on /home/monkey00 type nfs (rw,hard, intr,bg) monkey02 : /home/monkey02 on /home/monkey02 type nfs (rw,hard, intr,bg) monkeyOO : /usr/local on /usr/local type nfs ()o ,hard, intr,bg) root onkey04 % 現在のマウントの状態は /etc/mtab ファイルに書かれ ているので、これを見て確認することもできます 2 。 mount コマンドのオプションもたくさんありますが、お UNIX MAGAZINE 1991.8 もなものをいくっか挙げておきます。 2 ただし、 /etc/mtab ファイルに書かすにマウントすることもできるので、マウ ントの状態を完全に反映しているとは言い切れません。 49
ースー ユーサーへの道 4 FIDATA read/write rfsmonkey. monkey01 て 00t0 Ⅱ 011keY02 # adv rootGnonkey02# monkey02 ではリソースを提供していないので、 adv で も確認できます。 トができたかどうかが確認できます。また、 df コマンドで 引数をつけすに mount コマンドを実行すると、マウン root 011keY02 # FIDATA on /FI type rfs (rw) /dev/sd0g 0 Ⅱ /usr type 4.2 (rw) /dev/sd0a 。 / type 4.2 (rw) roottnonkey02# mount rootGnonkey02# mount -d FIDATA /FI ここでは次のようにします。 けれはなりません (read/write は失敗します ) 。 供されている場合はかならす read ー only でマウントしな write のどちらでもマウントできますが、 read-only で提 リソースが read/write の場合は read ー only 、 read/ ます。 -r" オプションをつけると、 read-only でマウントし n10 収れ t [ -r ] -d リソース名マウントボイント これには、次のように mount コマンドを使います。 次に、 RFS クライアントでリソースをマウントします。 冖マウント は何も出てきませんね。 F—I GP data in ) 91 テパイスファイルのマウント 今度は、 RFS の最大の特徴であるリモートデバイスの マウントです。 方法は前述の通常ファイルのマウントの場合とほとんど 同しで、 RFS ファイルサーバー ( そのデバイスをもつマシ ン ) の / dev をリソースとして提供します。ただし、 / dev 全 部を提供すると面倒なことが多いので、必要なデバイスだ けに限定します。また、 RFS クライアント側では、マウン トしたデバイスを raw デバイスとしてアクセスするので 注意が必要です。 こでは、 monkey01 の 3.5 インチ FDD ( フロッピー ディスク・ドライプ ) を monkey02 にマウントしてみま す。 / dev 全部をリソースにしないで、 FDD のテンヾイスファ イルだけをリソースとして提供します。それには、ダミ のディレクトリを作り、そこからリンク ( ハードリンク ) を 張ります。 rootGnonkeyOI# mkdir /dev/monkey rootGnonkeyO 1 # cd /dev/monkey て 00t 01 ⅸ ey01 # ln /dev/rfd0 rfd0 ダミーのディレクトリは /dev/monkey です。そこで、 リソースを /dev/monkey 、リソース名を、、 MON- KEYFD" として RFS ドメインに提供します。 r00tGnonkeyOI# adv —d " S つ " MONKEYFD /dev/monkey マウントボイントが / monkeydev だとすると、 RFS ク ライアント ( monkey02 ) 側では次のように mount コマン root 0 れ key02 # nsquery 0 ( CE FIDATA MONKEYFD ACCESS Sn.VER read/write rfsmonkey. monkey01 read/write rfsmonkey. monkey01 ドを実行します。 S 一 F—I GP data in ' 91 DESCRIvrION root&nkey02# mkdir /monkeydev て 00t 0 ⅸ ey02 # mount —d MONKEYFD /monkeydev て 00t onkey02 # mount /dev/sd0a on / type 4.2 ( ) /dev/sd0g on /usr type 4.2 ( ) FIDATA 0 Ⅱ /FI type rfs ( ) UNIX MAGAZINE 1991.8 71
マウントしたディレクトリをアンマウントするには、 umount-tfs または umount コマンドを用います。使い方 は、 umount-tfs umount -t /banana 、、、です。 プート時にマウントしたいときは、 NFS と同しように /etc/fstab にマウントするディレクトリを書いておきま す。たとえは、 /monkey に /banana をマウントする場合 マウントボイント マウントボイント /monkey tfs rw, llltr ファイルのタイプは tfs にします。 にどちらを上に重ねるのかもう一度 ( 何度も ) 確認して TFS マウントの際には、 mount コマンドを実行する前 冫王′ マウントされていますね。 root# /banana on /monkey type tfs ( ) /dev/sd0g 0 Ⅱ /usr type 4.2 ( ) /dev/sd0a 0 Ⅱ / type 4.2 (rw) root# mount root# mount—tfs / b 田 1 田 /monkey てみましよう。 それでは、 /monkey に /banana をマウントして確かめ は、次のようなエントリを追加します。 0 0 書込み禁止にするなどします。 か、ローカルなディレクトリであれはパー ミツン・ヨンを NFS マウントであれば read ー only でマウントすると にしておくのがよいでしよう。下側のディレクトリが トリが TFS マウントの下側になるときは、書込み禁止 また安全のために、ファイルを変更したくないディレク 形もない、といったことになります。 残っているはすだった実際の / monkey のファイルが跡 ( 自分ではホワイトアウトしたと思っている ) 、消えすに ます。気がっかすに、 /monkey のファイルを削除すると ろを、逆に /banana に /monkey を重ねてしまったとし たとえば、この例で /monkey に /banana を重ねるとこ ください。逆にすると、とんでもないことになります。 NIS 前回から計算機がネットワークで接続され、お互いにネ ットワーク・サービスを利用しあうようになりました 0 、一 のような利用形態では、ネットワークに接続された計算機 どうしで同し情報を共有するようになっていきます。たと えば、 /etc/passwd 、 /etc/hosts 、 /etc/networks などが それにあたります。 これらの情報を記録しているファイルを、それぞれの計 算機がもっているとどうなるでしよう。 1 台の計算機で情 報の更新があると、情報の整合性を保っためにすべての計 算機でそのファイルをコピーするなどの対応を施さねは なりません。計算機が数台のうちはそれでもかまわないの ですが、数十台以上になってくるとたいへんな手間がかか ります。 こんな面倒な作業は、できればしないですませたいもの です。もっと簡単に管理する方法はないでしようか ? そこで、共有可能なファイルを 1 台の計算機に集めてお 54 き、ほかの計算機はその計算機から情報の提供を受けるよ うにすることが考えられました。こうすれば、情報の更新 も 1 台の計算機だけですみますよね。 このような機能を提供するのが NIS (Network lnfor- mation Service) です。これは Sun Microsystems が開 発したもので、かっては YP と呼ばれていました。 この NIS の機能を、簡単にまとめておきましよう。 ・ UN Ⅸの運用に必要な情報をもったファイルの共有が 可能 ・そのファイルの自動更新が可能 ・情報の共有ばかりでなく、ローカルな設定も可能 ・ネットワーク環境でのグループ設定が可能 もうすこし具体的にみてみましよう。 UNIX MAGAZINE 1991.8
e $ & 第 0 ee 0 ee たちの設定に問題があるのかもしれませんが、 NIS の ypbind デーモンが動作していると NIS を利用するプ ログラムの立ち上がりが目に見えて遅くなります。たと えば、ー 1 ク "ypmatch" などで NIS のデータ べースを参照する場合、その実行ははっきりとヾ遅い〃 と感しさせるぐらいで、通常の使用にも問題があるはど です。これは ypbind の問題と考えられるので、新しい ypbind の登場に期待したいと思います。 ・ NFS4.0 RISC / os は SVR3 寄りの OS という印象がありま すが、ファイルシステムは BSD 系の FFS(Fast File System) をもとにしており、リモート・ファイルシステ ムも BSD 系の SunOS をオリジナルとする NFS が搭 載されています。今回の評価のなかでは、 NFS マウント の相手 ( サーバーでもクライアントでも ) が N FS 4.0 な ら問題はなかったのですが、 SunOS3.5 などに搭載され ている旧い NFS の場合には、 root が 9 以上のグループ に属していると、、 authentification error" が出て正常 に動作しませんでした。この場合 /etc/group などを適 当に編集し、 root を含むグループを減らすと正常に動作 します。 NFS4.0 では、あるユーサーが同時に 16 までの グループに属せるようになりました。以前は 8 までだっ たことを考えると、原因はこの点にあると考えられます。 ・ DNS NIS と同様の機能を提供する、、 DARPA Domain Name Service" も搭載されています。 NIS 同様に、各 種設定の整備が必要です。 ・ /etc/vis. conf による情報サービスの選択 /etc/vis. conf というファイルを利用して、 NIS およ び DNS を使用するか否かという選択をするようになっ ています。このファイルはデフォルト・インストールの 状態ではそもそも存在していないので、一から書かなけ ればなりません。記述の詳細はマニュアル Cman vis" でオンライン・マニュアルが参照できます ) に譲ります UNIX MAGAZINE 1991.8 のように記述します。簡単に説明すると、それぞれのフ netgroup : ms group: IS passwd : nis host : files n1S が、 NIS を全面的に使用する場合には、 ァイル ( さきほどの例では hosts や passwd など ) に関 して files(UNIX の通常ファイル ) 、 nis(NIS) 、 dns (DNS) を指定します。サーピスに対する要求の処理は、 ここで指定した順番でおこなわれます。 これらが OS の特徴ですが、正直なところ BSD 系の マシンばかりのなかで生活している私たちにとって、 BSD 系のマシンでの /etc/rc に相当する /etc/inittab ( 後述 ) の編集などはかなり苦労させられました。 SVR3 と BSD を統合した点は評価できるのですが、やはり SVR3 べースの OS であることを忘れてはいけないよ うです。 端末のセットアップ RISC/os の SVR3 機能を利用したシステム管理の 例として、シリアル端末 ( ttyline ) のセットアップをとり あげます。 tty は、 SystemV 流にしか管理できません。 つまり、 /etc/inittab や /etc/ttytype で管理するので すが、通常の SystemV の管理手順に従って sysadm コ マンドを動かすことにより、対話的に設定していくこと ができます。設定作業そのものもたいへん簡単で、とて も快適です。もちろん、直接 /etc/inittab などを自分で 編集してもかまいません。 tty の設定作業で興味深いの は、 BSD 流の tty 管理ファイルである /etc/ttys が 、、 fakedversion" として起動時に自動生成されることで す。これらは、 BSD 系との融合にともなう苦肉の策とい うところでしよう。ちなみに、 / etc / ttys を編集しても意 味がありません ( これは、 / etc / ttys ファイルにも書かれ ています ) 。 なお tty 設定に関しても、 root が属するグループ数を 8 以下に抑えないと getty が正常に動作しないという 症状がみられました。 プリンタのセットアップ RISC/os の BSD 機能を利用したシステム管理の例 として、プリンタのセットアップに触れましよう。プリ ンタは SVR3 機能でも管理できますが、 BSD 系の機能 も問題なく重川乍します。このため、すでに LAN に BSD 系の機械が多数存在する場合には、リモートプリントな どとの兼合いを考えて、 /etc/printcap と lpd 、 lpr 、 29