Japanese only. Character encoding is ISO-2022-JP (JIS). Lynx is recomended.
Last modified: Wed Nov 25 15:01:34 JST 1998

am-utilsへのいざない


目次

  1. インストール
  2. /etc/amd.confの記述
  3. amd.mapの記述
    1. fs Option
    2. sublink Option
    3. nfslは使えない
    4. CD-ROM Filesystem(`cdfs')

インストール

amdは必ずOSのバージョンごとにインストールしてください。これはamdのバイナリにOSのバージョンが埋め込まれるためです。研究室ではamdのmapでosverを利用します。

展開したソースのトップディレクトリにあるREADMEにはコンパイルの仕方等が書かれているので読んでください。INSTALLには特定機種の問題と対処方法が書いてあるので、必ず読んでください。

% tar xzf am-utils-6.0a16.tar.gz
% cd am-utils-6.0a16

研究室ではprefixを/usr/am-utilsにしてインストールします。本来はconfigureにきちんと--prefixで指定しなければいけないのですが、コンパイル回数が多いのでconfigureとbuildallを書き換えてしまいます。

% mv buildall{,.orig}
% sed 's,/usr/local/AMD,/usr/am-utils,g' buildall.orig > buildall
% chmod +x buildall
% mv configure{,.orig}
% sed 's,/usr/local,/usr/am-utils,g' configure.orig > configure
% chmod +x configure

あとはこれだけ。全機種とも同じ場所でこれだけ。難しいとは言わせない。

% ./buildall
# cd A.hogehoge
# make install

インストールしたら、今動いているamdを終了して、試してみましょう。

# /usr/am-utils/sbin/amd -r -l syslog /home amd.home.map /share amd.share.map


/etc/amd.confの記述

am-utilsのamdはコマンドラインオプションで指定していた内容をすべてamd.confに書いておくことができます。amd.confを使うとamdにオプションを指定する必要がなくなり、am-utilsについてきた便利なscriptが利用できるようになるので、ぜひ使いましょう。

am-utilsをインストールすると${prefix}/etc/amd.conf-sampleが出来上がります。これをベースに記述すれば良いのですが、デフォルト設定と異なるもの以外は記述しない方が、後の管理者に分かりやすいです。さきほどamdを起動するときにつけたオプションを/etc/amd.confに書くと以下のようになります。

[ global ]
# (amd -r)
restart_mounts =	yes
# (amd -l)
log_file =		syslog

[ /home ]
map_name =		amd.home.map

[ /share ]
map_name =		amd.share.map
でも、当分はlogをいろいろ取りたいとか、amd.runが欲しいとか、amdが落ちるときにumountして欲しいとか、icsドメインが分離していて...とかいろいろ要求は出てきて、以下がよろしいかと思います。
[ global ]
# (amd -p)
print_pid =		yes
pid_file =		/var/run/amd.pid
# (amd -r)
restart_mounts =	yes
unmount_on_exit =	yes
# (amd -l)
log_file =		/var/log/amd
# (amd -x)
log_options =		fatal,error,user,warn,info,nomap,nostats

[ /home ]
map_name =		amd.home.map

[ /share ]
map_name =		amd.share.map
/etc/amd.confが書けたら、今起動しているamdを終了して、もう一度起動してみましょう。

# /usr/am-utils/sbin/ctl-amd stop
# /usr/am-utils/sbin/ctl-amd start
もしくは
# /usr/am-utils/sbin/ctl-amd restart


amd.mapの記述

ここではam-utilsで新しくなったマウントマップの記述の仕方について研究室での注意点について書きます。当然マウントマップの記述の仕方はam-utils付属のinfoを読んでください。書き換えたマップはamq -fするかamdにhupシグナルを送れば読み直してくれます。そのときちゃんとlogを見てエラーがないか調べましょう。

# amq -f
もしくは
# kill -1 `/usr/am-utils/sbin/amq -p`
もしくは
# kill -1 `cat /var/run/amd.pid`
もしくは
FreeBSD# killall -1 amd
もしくは
# ~keisuke/bin/all/killproc -1 amd

題目



fs Option

am-utils.infoの * Mount Maps:: →* Localtion Format:: →* Map Options:: →* fs Options::
For NFS and UFS filesystems the value of `${fs}' is used as the local mount point. For other filesystem types it has other meanings which are described in the section describing the respective filesystem type. It is important that this string uniquely identifies the filesystem being mounted. To satisfy this requirement, it should contain the name of the host on which the filesystem is resident and the pathname of the filesystem on the local or remote host.
昔は研究室のdefaultはfs:=${autodir}/${key}となっていましたが、sublink Optionを有効に使うために、amdのデフォルト(${autodir}/${rhost}${rfs})を使います。


sublink Option

am-utils.infoの * Mount Maps:: →* Localtion Format:: →* Map Options:: →* sublink Options::
The subdirectory whithin the mounted filesystem to which the reference should point. This can be used to prevent duplicate mounts in cases where multiple directories in the same mounted filesystem are used.
簡単に言えば普通は${path}→${autofs}/${rhost}${rfs}のリンクが張られるのが${autofs}/${rhost}${rfs}/${sublink}へのリンクになります。

例えば、ホストnovaでは/export/projをnfs exportしており、projディレクトリの中にはasca、attempt、juten、markov、oscar、sed、snail、wasmii、vlsi等が存在します。これらを単独のkeyにしてマウントしたい場合、従来は

asca	host!=nova;rhost:=nova;rfs:=/export/home/proj/asca \
	host==nova;type:=link;fs:=/export/home/proj/asca
と記述していましたが、この調子でマップを書いていくと、
path link to mount pt. mount from
/home/asca /a/asca nova:/export/home/proj/asca
/home/attempt /a/attempt nova:/export/home/proj/attempt
:
とnova:/export/homeは何重にもマウントされてしまいます。これを防ぐために
asca	host!=nova;rhost:=nova;rfs:=/export/home;sublink:=proj/asca \
	host==nova;type:=link;fs:=/export/home/proj/asca
と書きます。fs Optionは再定義せずにamdのデフォルトを使います。そうするとまずnova:/export/homeが/a/nova/export/homeにマウントされ、そこのproj/ascaへリンクが張られるので、以下のように重複マウントはなくなります。
path link to mount pt. mount from
/home/asca /a/nova/export/home/proj/asca /a/nova/export/home nova:/export/home
/home/attempt /a/nova/export/home/proj/attempt
:


nfslは使えない

なんとnfsl(type:=nfsl)は使い物になりません。
*	host!=${key};type:=nfs;rhost:=${key};rfs:=/export/home \
	hoge==${key};type:=link;fs:=/export/home
と言った記述が
*	type:=nfsl;fs:=/export/home;rhost:=${key};rfs:=${fs}
と書けるのかと思いきや、nfsマウントするときにhoge:/export/homeを/a/hogeでなく/export/homeにマウントしてしまいます。もちろんtype:=nfsの動作は${rhost}:/${rfs}を${fs}へマウントして、${key}から${fs}へリンクが張られるので、nfslがtype:=linkとtype:=nfsをミックスしただけならば、この記述ではこの動作はある意味正しいです。しかし、研究室の事情には合いません。


CD-ROM Filesystem(`cdfs')

例えばマウントマップに
cd	type:=cdfs;dev:=/dev/cd0c
と書けば、SCSI CDROMがつながっているFreeBSDでcdromをautomountできるようになります。全機種統一マップだとOSごとにCD-ROMのdeviceが違うので、まともに記述するとマウントマップが複雑になってしまいます。これを防ぐために、automountしたいCD-ROMはそのデバイスのリンクを/dev/cdromへ張っておくようにしましょう。
cd	type:=cdfs;dev:=/dev/cdrom
mo	type:=ufs;dev:=/dev/od0a
mopc	type:=pcfs;dev:=/dev/od0
fd	type:=pcfs;dev:=/dev/diskette
この例ではさらにMOとFloppy Diskも使えるようにしています。fdはSolarisに習ってdisketteにするとして、MOはどうしましょう? 私はFreeBSD以外知りません。


井上 敬介 / keisuke@am.ics.keio.ac.jp