NFSマウントのバージョン比較の為にNFS v3 とv4でマウントしようとしたら、
なかなかハマって時間がかかったので忘備録
そもそもv3とv4何が違うんだっけ。
NFS version 3
・利用するポートは固定されてない
・UNIXのみ
NFS version 4
・portが固定(2049/tcp)
・kerberos認証をサポート
ふーん。これで全部ではないけど、小さく変化している模様。
2008年の記事ではあるがITmedia エンタープライズさんの情報によると、パフォーマンスに差はあまりないらしい。
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"
ハマったその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で確認したけどちゃんと表示されるし。
そんなとき、バシっと先輩社員さん解決。
ここのサイトにしっかり記載されてました。
NFS v4からはマウント時に記載の方法が変わっていて、どこにマウントするであろうと / で問題ないらしい。
結局はサーバー側の/etc/exportsを見てるんすね。
# mount -t nfs -o vers=4,nfsvers=4 ○.○.○.○:/ /root/nfs4