サーバが複数台あると、それぞれのサーバでホームディレクトリを作っていては、 管理が面倒になってきます。NFS を用いてホームディレクトリを共有するように すれば、どのマシンからも同じ環境で扱えるので便利です。
本研究室では、以前は SunOS を NFS のサーバとしてきましたが、最近では、 ワークステーションよりも PC の互換機の方が安価で高いスペックを追求できる ので、大容量の HDD を接続した PC(FreeBSD3.1-Release)を NFS のサーバと することにしました。また、ホームディレクトリの他に、研究で使用するデータ ファイルも NFS で共有するようにします。
FreeBSD
NFSサーバには FreeBSD3.1-Release を使用します。 まず、以下の設定ファイルを編集します。
- /etc/hosts
NFS を利用する研究室内のマシンのホスト名とIPアドレス が記述されているか確認します。
- /etc/hosts.equiv
NFS クライアントのホスト名を追加します。 1行に1ホストずつ記述します。
- /etc/exports
NFS で共有するディレクトリを指定します。例えば、クライアントのホスト名 cliant1,cliant2,cliant3 に NFSサーバのホームディレクトリ(/home)と、 データファイルを置くディレクトリ(/data,/data1)を公開する場合には、/data -alldirs cliant1 cliant2 cliant3 /data1 -alldirs cliant1 cliant2 cliant3 /home -alldirs cliant1 cliant2 cliant3のように記述します。他にもいろいろな書き方があるので、詳しくは man exports で 調べてみてください。
/etc/exports ファイルを記述したら、このファイルを有効化します。SunOS などには exportfs というコマンドで /etc/exports ファイルを有効化できます。今回の FreeBSD の場合には、# kill -HUP `cat /var/run/mountd.pid`とします。
- NFSサーバデーモンの起動
/etc/exports ファイルの設定が終わったら、NFS サーバのデーモンである /sbin/mountd と /sbin/nfsd を起動します。mountd のオプションには -r を指定し、 通常のファイルに対してもマウント要求を許可するようにします。 nfsd のオプションには -u -t -n 6 を指定し、TCP & UDP を用いた NFS を有効にし、 nfsd のデーモンの数を 6 とします。詳しくは、man mountd , man nfsd を御覧 ください。# mountd -r # nfsd -u -t -n 6正しく設定されていれば、showmount コマンドで export されている ディレクトリが確認できます。
- /etc/rc.conf
システムの起動時に自動的に /sbin/mountd と /sbin/nfsd が立ち上がるように、 /etc/rc.conf ファイルを編集します。今回は NFS サーバに FreeBSD3.1-Release を使用しているので、/etc/rc.conf ファイルに以下の内容を追加します。nfs_server_enable="YES" nfs_server_flags="-u -t -n 6" # nfsd のオプション mountd_flags="-r" # mountd のオプション編集後、再起動すれば設定は終了です。Linux
NFSサーバには Vine Linux 1.1 を使用します。 まず、以下の設定ファイルを編集します。
- /etc/hosts
NFS を利用する研究室内のマシンのホスト名とIPアドレス が記述されているか確認します。
- portmap
ポートマッパ(portmap)が起動しているかどうかを以下のようにして確認します。 ポートマッパは「DARPAポートをRPCプログラム番号にマップするプログラム」です。% ps ax | grep portmap 221 ? S 0:00 portmap または % rpcinfo -p起動していない時は、以下のように起動します。# /etc/rc.d/init.d/portmap start または、 # /sbin/portmap- /etc/exports
NFS で共有するディレクトリを指定します。例えば、クライアントのホスト名 cliant1,cliant2,cliant3 に NFSサーバのホームディレクトリ(/home)と、 データファイルを置くディレクトリ(/data,/data1)を公開する場合には、/data cliant1(rw) cliant2(rw) cliant3(rw) /data1 cliant1(rw) cliant2(rw) cliant3(rw) /home cliant1(rw) cliant2(rw) cliant3(rw)のように記述します。(rw)のようにして、NFSマウントのオプションを指定します。 他にもいろいろな書き方があるので、詳しくは man exports で 調べてみてください。
/etc/exports ファイルを記述したら、このファイルを有効化します。 以下のようにします。# exportfs または、 # killall -HUP /usr/sbin/rpc.mountd # killall -HUP /usr/sbin/rpc.nfsd- NFSサーバデーモンの起動
/etc/exports ファイルの設定が終わったら、NFS サーバのデーモンである /usr/sbin/rpc.mountd と /usr/sbin/rpc.nfsd を起動します。以下のように 引数無しで起動します。# /etc/rc.d/nit.d/nfs start または # /usr/sbin/rpc.mountd # /usr/sbin/rpc.nfsdオプションについては、man rpc.mountd、man rpc.nfsd を御覧ください。
正しく設定されていれば、showmount コマンドで export されている ディレクトリが確認できます。% showmount Host on server: client1 client2 client3 ...rpc.mountd と rpc.nfsd がきちんと実行されているかを確認します。 正しく起動していれば、rpcinfo -p を実行すると、以下のような表示が出ます。% rpcinfo -p program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100005 1 udp 745 mountd 100005 1 tcp 747 mountd 100003 2 udp 2049 nfs 100003 2 tcp 2049 nfs- /etc/hosts.allow、/etc/hosts.deny
ポートマッパ(portmap)へのリモートからのアクセスは、 /etc/hosts.allow と /etc/hosts.deny ファイルによって制限されます。
まず、/etc/hosts.deny ファイルは以下のように記述し、全てのアクセスを拒否する ようにします。/etc/hosts.deny ALL: ALL (portmap以外も対象) または portmap: ALL次に、/etc/hosts.allow ファイルで、portmap にアクセスを許可する クライアントマシンをリストアップします。ポートマッパ(portmap)は、 nfsd、mountd、ypbind/ypserv、pcnfsd、rcptimeなどのr系コマンド などが 対象となるので、これらのサービスをする必要があるマシンを記述します。
例えば、192.168.1.0/255.255.255.0 のネットワークにあるホストにアクセスを 許可したい場合には、以下のように記述します。/etc/hosts.allow ALL : 192.168.1.0/255.255.255.0 (portmap以外も対象) または portmap: 192.168.1.0/255.255.255.0詳しくは、man hosts.allow、man hosts.deny を参照してください。
- 自動起動
システムの起動時に自動的に /sbin/portmap や /usr/sbin/rpc.mountd、 /usr/sbin/rpc.nfsd が立ち上がるように設定します。Vine Linux 1.1 では ntsysv という管理ツールを用いて、システム起動時に実行したいサービスに "nfs"を 選択します。また、"portmap"にもチェックがついていることを確認します。
または、例えばランレベルが5(xdmを使用)の場合には、以下のように シンボリックリンクを張ります。rpc.mountd、rpc.nfsd の場合 # ln -s /etc/rc.d/init.d/nfs /etc/rc.d/rc5.d/S60nfs portmap の場合 # ln -s /etc/rc.d/init.d/portmap /etc/rc.d/rc5.d/S11portmapその後、再起動すれば設定は終了です。
FreeBSD
- /etc/hosts
NFS を利用する研究室内のマシンのホスト名とIPアドレス が記述されているか確認します。
- キャッシングの設定
以下の処理は必ずしも必要というわけではないですが、 NFS クライアントで nfsiod というデーモンを走らせておくと、 NFS を介した読み書きに対してキャシングを行ってくれます。 つまり、NFSクライアントから、NFSサーバへデータを書き出す際は、 そのリクエストを nfsiod が受け付けてバックグラウンドで書き込みます。 nfsiod のデーモンを起動するには、# nfsiod -n 4のようにします。-n オプションでデーモン数を指定します。システム起動時に 自動的に nfsiod が立ち上がるようにするには、/etc/rc.conf を以下のようにします。nfs_client_enable="YES" # nfsiod を起動 nfs_client_flags="-n 4" # nfsiod のオプション- マウントディレクトリの作成
FreeBSD の場合は、/home が /usr/home のシンボリックリンクになっているので、 このシンボリックリンク /home を削除して、新しくディレクトリ /home を 作成します。また、研究用のデータを置く /data や /data1 も作成します。# rm /home # mkdir /home # mkdir /data # mkdir /data1- NFSマウント
NFS サーバの /etc/exports ファイルで指定したディレクトリを NFS マウント します。NFSサーバのホスト名を server とすると、server の /home , /data , /data1 をクライアントの /home , /data , /data1 に マウントします。# mount -t nfs server:/home /home # mount -t nfs server:/data /data # mount -t nfs server:/data1 /data1- /etc/fstab ファイルの編集
うまくマウントできたなら、システムの起動時に自動的にマウントされるように /etc/fstab ファイルを編集します。ここで、Options は rw とし、読み書き可能で マウントできるようにします。Dump はバックアップ用の dump コマンドが 参照するものですが、NFS の場合は 0 にします。Pass# はシステム起動時に行う fsck によるファイルシステムのチェックの順番ですが、NFS クライアントでは 必要ないので、0 とします。# Device Mountpoint FStype Options Dump Pass# server:/home /home nfs rw 0 0 server:/data /data nfs rw 0 0 server:/data1 /data1 nfs rw 0 0以上で再起動すれば設定は終了です。SunOS
- /etc/hosts
NFS を利用する研究室内のマシンのホスト名とIPアドレス が記述されているか確認します。
- マウントディレクトリの作成
マウントディレクトリを作成します。ホームディレクトリ用の /home と、 研究用のデータを置く /data や /data1 を作成します。# mkdir /home # mkdir /data # mkdir /data1- NFSマウント
NFS サーバの /etc/exports ファイルで指定したディレクトリを NFS マウント します。NFSサーバのホスト名を server とすると、server の /home , /data , /data1 をクライアントの /home , /data , /data1 に マウントします。# mount -t nfs server:/home /home # mount -t nfs server:/data /data # mount -t nfs server:/data1 /data1- /etc/fstab ファイルの編集
うまくマウントできたなら、システムの起動時に自動的にマウントされるように /etc/fstab ファイルを編集します。ここで、Options は rw とし、読み書き可能で マウントできるようにします。Dump はバックアップ用の dump コマンドが 参照するものですが、NFS の場合は 0 にします。Pass# はシステム起動時に行う fsck によるファイルシステムのチェックの順番ですが、NFS クライアントでは 必要ないので、0 とします。# Device Mountpoint FStype Options Dump Pass# server:/home /home nfs rw 0 0 server:/data /data nfs rw 0 0 server:/data1 /data1 nfs rw 0 0以上で再起動すれば設定は終了です。Solaris
- /etc/hosts
NFS を利用する研究室内のマシンのホスト名とIPアドレス が記述されているか確認します。
- マウントディレクトリの作成
マウントディレクトリを作成します。ホームディレクトリ用の /home と、 研究用のデータを置く /data や /data1 を作成します。# mkdir /home # mkdir /data # mkdir /data1- NFSマウント
NFS サーバの /etc/exports ファイルで指定したディレクトリを NFS マウント します。NFSサーバのホスト名を server とすると、server の /home , /data , /data1 をクライアントの /home , /data , /data1 に マウントします。(FreeBSD や SunOS とはオプションが異なります)# mount -F nfs server:/home /home # mount -F nfs server:/data /data # mount -F nfs server:/data1 /data1- /etc/vfstab ファイルの編集
うまくマウントできたなら、システムの起動時に自動的にマウントされるように /etc/vfstab ファイルを編集します(FreeBSD や SunOS の場合の /etc/fstab とは 異なります)。mount option は rw とし、読み書き可能でマウントできるように します。mount at boot を yes にしておくと、システム起動時に mountall コマンド により、ファイルシステムを自動的にマウントします。また、NFS クライアントでは ファイルシステムをチェックする fsck を実行する必要がないので、 device to fsck や fsck pass は - (ハイフン)にします。#device device mount FS fsck mount mount #to mount to fsck point type pass at boot option server:/home - /home nfs - yes rw server:/data - /data nfs - yes rw server:/data1 - /data1 nfs - yes rw以上で再起動すれば設定は終了です。Linux
- /etc/hosts
NFS を利用する研究室内のマシンのホスト名とIPアドレス が記述されているか確認します。
- マウントディレクトリの作成
マウントディレクトリを作成します。ホームディレクトリ用の /home と、 研究用のデータを置く /data や /data1 を作成します。# mkdir /home # mkdir /data # mkdir /data1- NFSマウント
NFS サーバの /etc/exports ファイルで指定したディレクトリを NFS マウント します。NFSサーバのホスト名を server とすると、server の /home , /data , /data1 をクライアントの /home , /data , /data1 に マウントします。(FreeBSD や SunOS とはオプションが異なります)# mount -t nfs server:/home /home # mount -t nfs server:/data /data # mount -t nfs server:/data1 /data1- /etc/fstab ファイルの編集
うまくマウントできたなら、システムの起動時に自動的にマウントされるように /etc/fstab ファイルを編集します。ここで、Options は rw とし、読み書き可能で マウントできるようにします。Dump はバックアップ用の dump コマンドが 参照するものですが、NFS の場合は 0 にします。Pass# はシステム起動時に行う fsck によるファイルシステムのチェックの順番ですが、NFS クライアントでは 必要ないので、0 とします。# Device Mountpoint FStype Options Dump Pass# server:/home /home nfs rw 0 0 server:/data /data nfs rw 0 0 server:/data1 /data1 nfs rw 0 0以上で再起動すれば設定は終了です。