NFSマウントv3とv4の話

NFSマウントのバージョン比較の為にNFS v3 とv4でマウントしようとしたら、

なかなかハマって時間がかかったので忘備録

 

 そもそもv3とv4何が違うんだっけ。

NFS version 3

・利用するポートは固定されてない

UNIXのみ

 

NFS version 4

・portが固定(2049/tcp)

・kerberos認証をサポート

UNIXおよびWindowsをサポート

 

ふーん。これで全部ではないけど、小さく変化している模様。

2008年の記事ではあるがITmedia エンタープライズさんの情報によると、パフォーマンスに差はあまりない模様。

www.itmedia.co.jp

NFSv4はファイル作成ではNFSv3の倍近い時間がかかって、ファイル削除ではNFSv3よりも高速という各バージョンで一長一短みたい。

新バージョンを強くしてくれよ…。

まずサーバーが対応するバージョンを確認した

#cat /etc/redhat-release
CentOS release 6.8 (Final)

うん。CentOS 6.8だしいけるよね。

OSのバージョン的には全く問題なさそう。

コマンドでも確認

 # rpcinfo -p

program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100021 1 udp 33005 nlockmgr
100021 3 udp 33005 nlockmgr
100021 4 udp 33005 nlockmgr
100021 1 tcp 33075 nlockmgr
100021 3 tcp 33075 nlockmgr
100021 4 tcp 33075 nlockmgr
100024 1 udp 48252 status
100024 1 tcp 37308 status
100011 1 udp 875 rquotad
100011 2 udp 875 rquotad
100011 1 tcp 875 rquotad
100011 2 tcp 875 rquotad
100005 1 udp 39881 mountd
100005 1 tcp 34481 mountd
100005 2 udp 33761 mountd
100005 2 tcp 44534 mountd
100005 3 udp 46716 mountd
100005 3 tcp 53488 mountd
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100227 2 tcp 2049 nfs_acl
100227 3 tcp 2049 nfs_acl
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100227 2 udp 2049 nfs_acl
100227 3 udp 2049 nfs_acl

うん。この辺も問題なさそう。

ちゃんとver 4 の表記もあるしね。

じゃあサクッとマウントしよう。と思いきや...

基本的にいつものパターンでサーバー側で/ etc/exports に書いてクライアント側からmountコマンドでいけるだろ。と思いきや、クライアント側から全くマウントができない。

というよりマウントするとNFS v3でNFSマウントされてしまう。

# nfststat -m

/root/nfs4 from IP ○.○.○.○:/TEST_nfsv4/export/root/nfs4 from ○.○.○.○:/TEST_nfsv4/export Flags: rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=○.○.○.○,mountvers=3,mountport=58878,mountproto=udp,local_lock=none,addr=1○.○.○.○

ハマったその1

# mount -t nfs -o vers=4,nfsvers=4 ○.○.○.○:/TEST_nfsv4/export /root/nfs4

mount.nfs: Protocol not supported

 

プロトコルをサポートしていないと怒られる。

そんなわけでサーバー側のconfファイルを確認してみた。

# cat /etc/sysconfig/nfs

 # Turn off v4 protocol support
 RPCNFSDARGS="-N 4"

サーバー側でv4のプロトコルのサポートを外してた...。

そりゃ、つながらないよね。

# cat /etc/sysconfig/nfs

# Turn off v4 protocol support
#RPCNFSDARGS="-N 4"

 コメントアウトして、NFS v4を使えるように変更。

 

ハマったその2

そんなわけでサーバー側で 再度挑戦。

# mount -t nfs -o vers=4,nfsvers=4 ○.○.○.○:/TEST_nfsv4/export /root/nfs4
mount.nfs: mounting ○.○.○.○:/TEST_nfsv4/export failed, reason given by server: No such file or directory
 

 お、メッセージ変わった。でもまだマウントできない。

だけどクライアント側でもサーバー側でも対象のディレクトリは間違いなく作成してる。lsで確認したけどちゃんと表示されるし。

 

そんなとき、バシっと先輩社員さん解決。

ここのサイトにしっかり記載されてました。

kitani3.blogspot.com

 

NFS v4からはマウント時に記載の方法が変わっていて、どこにマウントするであろうと / で問題ないらしい。

結局はサーバー側の/etc/exportsを見てるんすね。

# mount -t nfs -o vers=4,nfsvers=4  ○.○.○.○:/ /root/nfs4