amdというのは、automount、つまり、必要になったときだけファイルシステムをマウントして、使っていないときはアンマウントしてしまうデーモンさんの一種です。SunのSolarisやLinuxでは、automount(autofs)というのがよく使われていますが、BSD系OSでは、昔からamdが使われています。
amdは、NFSのときによく使われます。NFSマウントしている最中に、NFSサーバ・マシンが落ちてしまうと、NFSクライアントは、NFSアクセス待ちになって、処理がとまってしまいます。amdを使っていれば、使っていないとき自動でアンマウントされるので、サーバのトラブルに引きづられることがありません。
また、マシンの起動順序にある程度融通をきかせることもできます。NFSを利用している場合、NFSサーバ・マシンを起動してから、NFSクライアント・マシンを起動させなければなりません。しかし、amdは、NFSサーバ上のファイルへのアクセスが発生した時点ではじめてNFSマウントされるので、通常状態でNFS上のファイルへのアクセスがないのなら、NFSサーバ・マシンを先に起動する必要がなくなります。2台のマシンが互いにNFSマウントしあうような場合も、amdを使えばデッドロックを防ぐことができます。
NFS以外にも、CD/DVD-ROMをマウントしたりするのにも、amdを使うことができます。
■ 準備
○NFSの設定
で書いてあるようにして、NFSを使えるようにしておきます。
○ /etc/hostsファイルの作成
ところで、いつまでもIPアドレスで指定するのはナニなので、/etc/hostsファイルに登録しておきます。
FreeBSD、玄箱ともに、こんなかんじで、2台分を登録しておきます。
192.168.0.21 freebsd.my.domain freebsd
192.168.0.41 kuro-box.my.domain kuro-box
左から、IPアドレス、ホスト名の順です。ホスト名のところには、複数書いておけば、別名として使えるようになります。
○ FreeBSD側でamdを動かす設定をする
amdを動かすためには、/etc/rc.confに、以下の1行を追加します。
amd_enable="YES"
/etc/defaults/rc.confを見るとわかりますが、amd_flagsという変数で、いろいろとパラメータを渡すこともできます。しかし、今回の場合とくに必要ありません。
本格的にamdを使う場合は、パラメータを渡すよりも、設定ファイルを作ったほうがいいかもしれません。man amd.confでマニュアルが表示されますが、・・・けっこう上級者向けかもしれませんね。そもそもamd.confのサンプルファイルさえ用意されていませんし。
■ FreeBSD上でamdを動かす
FreeBSDを再起動すればamdが起動しますが、とりあえず今すぐ動かすには「/etc/rc.d/amd start」を実行します。
freebsd# /etc/rc.d/amd start
Starting amd.
amqコマンドを実行すると、amdの動作状況を見たり、amdを制御す
ることができます
freebsd# amq
/ root "root" freebsd:(pid3232)
/net toplvl /etc/amd.map /net
/host toplvl /etc/amd.map /host
■ 玄箱にNFSアクセスする
amqコマンドで表示されるように、/netと/hostというディレクトリが、amdの管理下にあります。
「/net/玄箱のホスト名/うんたらかんたら」というパスにアクセスすると、amdによって、玄箱のファイルシステムが自動的にNFSマウントされます。
(そうなるように/etc/amd.mapに秘密の呪文が書いてあるのです)
「ls /net/kuro-box」を実行すると・・・
freebsd# ls /net/kuro-box
bin home lost+found root usr
dev home2 mnt sbin var
etc lib proc tmp www
前回NFSの設定をしたとき、玄箱の/etc/exportsで、大胆にもすべてのファイルシステムを公開するようにしたので、上のように、全部、みえちゃっています。
/mntだけexportするように設定した場合は、たぶん、ls /net/kuro-boxを実行すると、mntだけが見えると思います。
さて、さらに、「ls /net/kuro-box/mnt」を実行すると・・・
freebsd# ls /net/kuro-box/mnt
kuro-box.iso lost+found share share-mac
どんどん、中を見ていけますよ。
freebsd# ls /net/kuro-box/mnt/share
NFS-setup.sh hello.c tcsh-6.14.00
a.out hello.o tcsh-6.14.00.tar.gz
binary tcsh
amdで、どのようにマウントされているか、amqで見えます。
freebsd# amq
/ root "root" freebsd:(pid3232)
/net toplvl /etc/amd.map /net
/host toplvl /etc/amd.map /host
/net/kuro-box host kuro-box:/net/kuro-box /.amd_mnt/kuro-box/host
なれないとわかりにくいですが、最後の1行は、NFSサーバkuro-boxのファイルシステムをマウントしてるよん、ということです。
実際にどのようにNFSマウントされているかは、mountコマンドのほうが、見やすいでしょう。
freebsd# mount | grep kuro-box
kuro-box:/ on /.amd_mnt/kuro-box/host (nfs, nosuid)
kuro-box:/mnt on /.amd_mnt/kuro-box/host/mnt (nfs, nosuid)
■ アンマウントする
玄箱上のファイルにアクセスしないまま、数分たつと、自動的にアンマウントされます。amqコマンドやmountコマンドで、マウントされているかどうか確認できます。
amq -uコマンドで、即座にアンマウントさせることもできます。
freebsd# amq
/ root "root" freebsd:(pid3232)
/net toplvl /etc/amd.map /net
/host toplvl /etc/amd.map /host
/net/kuro-box host kuro-box:/net/kuro-box /.amd_mnt/kuro-box/host
となっているとき
freebsd# amq -u /net/kuro-box
とすると
freebsd# amq
/ root "root" freebsd:(pid3232)
/net toplvl /etc/amd.map /net
/host toplvl /etc/amd.map /host
アンマウントされました。ただし、/net/kuro-box/以下のファイルにアクセスしているプロセスがいる場合、アンマウントできません。
0 件のコメント:
コメントを投稿