nfsマウント

ネットワークを通じてクライアントホストにサーバの特定のディレクトリをマウントすることができるnfsマウント。bvmeにrikkyo_vineの/home/gauge以下をマントしたいので、とりあえずやってみた。

NFS のサーバー側(ファイルを提供する側)は portmap(もしくは rpc.portmap), rpc.mountd(もしくは mountd), rpc.nfsd(もしくは nfsd)という3つのプログラムを使ってファイルの提供をおこなう。上記全てが正しく動作していることが必要。

そして、それらのプログラムが参照する設定ファイルの記述で、どのディレクトリを公開するかを決め、また、ディレクトリにアクセスできるサーバーを決定する。

まずサーバ側。今でいうと提供する側なのでrikkyo_vineになる。

設定するファイルは以2つ。
・/etc/exports
・/etc/hosts.allow

IPの方が信頼できるので、/etc/hostsはいじりませんでした。

■■サーバ側

■/etc/exports
クライアントに export するファイルシステムを指定する。XXはクライアントのIPアドレス

今は/home/gaugeをマウントさせてあげたいわけだから

/home/gauge 172.27.224.XX(rw,no_root_squash)

(rwは読み書きおk、no_root_squashはオプションで、クライアントの root が NFS サーバにアクセス要求したときに匿名を表す nobody に置き換えるかどうかを設定する)
を書き加える。

■/etc/hosts.allow

/etc/hosts.allow の設定
NFS は portmap を使うから、/etc/hosts.allow で クライアントがサーバの portmap を使ってもいいように設定する。

portmap : 172.27.224.XX : allow

変更を加えたら、


# /etc/rc.d/init.d/nfs stop
# /etc/rc.d/init.d/nfs start

または、

# /etc/rc.d/init.d/portmap restart
# /etc/rc.d/init.d/inet restart
# /usr/sbin/rpc.mountd
# /usr/sbin/rpc.nfsd

# /usr/sbin/exportfs -a

で変更を反映出来る。また、既にportmapを起動しているときは、

# exportfs -ra

で、/etc/exportsの変更を反映出来る。
NFSで起動しているソフト、デーモンは以下

   プログラム バージョン プロトコル ポート
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  55685  status
    100024    1   tcp  48852  status
    100011    1   udp    875  rquotad
    100011    2   udp    875  rquotad
    100011    1   tcp    875  rquotad
    100011    2   tcp    875  rquotad
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100021    1   udp  33017  nlockmgr
    100021    3   udp  33017  nlockmgr
    100021    4   udp  33017  nlockmgr
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100021    1   tcp  55161  nlockmgr
    100021    3   tcp  55161  nlockmgr
    100021    4   tcp  55161  nlockmgr
    100005    1   udp  46327  mountd
    100005    1   tcp  58391  mountd
    100005    2   udp  46327  mountd
    100005    2   tcp  58391  mountd
    100005    3   udp  46327  mountd
    100005    3   tcp  58391  mountd

■■クライアント側

# less /proc/filesystems | grep nfs

で、nfsが出てこなかったら、

#modprobe nfs

を実行、他のプログラムと関連性があるので、insmodよりもmodproveで行う。

とりあえず、マウント出来るかためしてみる。YYはサーバのIPアドレス

# showmount -a 172.27.224.YY
mount clntudp_create: RPC: Port mapper failure - RPC: Unable to receive
# mount -t nfs -o rsize=1024,wsize=1024 172.27.224.YY:/home/gauge /mnt/gauge
mount: RPC: Remote system error - No route to host

うーむ。
出来ない。
クライアントのポートマッパも起動してるんだけどなー。
とりあえずクライアント側もnfsを起動させてみる。

[root@bvme /]# /etc/rc.d/init.d/portmap stop
Stopping portmapper:                                       [  OK  ]
[root@bvme /]# /etc/rc.d/init.d/portmap start
Starting portmapper:                                       [  OK  ]
[root@bvme /]# /etc/rc.d/init.d/nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
[root@bvme /]# mount -t nfs -o rsize=1024,wsize=1024 172.27.224.YY:/home/gauge /mnt/gauge
mount: RPC: Remote system error - No route to host

変わらない!

# 5/7 追記

/etc/rc.d/init.d/iptable stop

で、一時的にファイアウォールの設定をなくすことで出来た。