これは、QNAP NASコミュニティのクロス投稿質問です。 http://forum.qnap.com/viewtopic.php?f=35&t=96526&p=427018#p427018 =
コメントや提案、関連情報へのポインタは非常にありがたいです。
NFSサーバー(QNAP NAS)に対してUbuntu 14.04.1(LTS)を実行しているNFSクライアントからNFSマウントできません。私の環境は:
NFSクライアントで、コマンド"mount -t nfs nas:/ nfs/mnt"を実行すると、5分または10分後に「mount.nfs:Connection timed out」という出力が表示されます。 NFSマウントの試行中に-overs = 3オプションでNFSバージョン3プロトコルを指定しても、同じ結果が返されます。また、コマンド "showmount -e"は、最終的にエクスポートされたNFS共有フォルダー(ディレクトリ)名をリストしますが、完了するまでに5分または10分かかります。
NFSサーバーでは、"exportfs -rva"コマンドは次の警告メッセージを返しますが、このメッセージは問題に関連していないと思います(NASにアクセスしていますこのコードのSSHの例):
[~] # exportfs -rva
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/share/MD0_DATA/Public".
Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.x
exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/share/MD0_DATA/nfs".
Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.x
exporting *:/share/MD0_DATA/nfs exporting *:/share/MD0_DATA/Public
NFSクライアントでは、mountコマンドが完了するまでに長い時間(5分以上)かかります。 QNAPはデフォルトでNFS V4をサポートしておらず、NFS V3で十分であると理解しているため、vers = 3オプションを指定しました。 tcpおよび/またはnolockオプションを指定するかどうかは関係ありません(同じ動作)。
root@livak5:~# mount -t nfs -vvv -overs=3,tcp,nolock nas:/share/MD0_DATA/nfs /mnt
mount: fstab path: "/etc/fstab"
mount: mtab path: "/etc/mtab"
mount: lock path: "/etc/mtab~"
mount: temp path: "/etc/mtab.tmp"
mount: UID: 0
mount: eUID: 0
mount: spec: "nas:/share/MD0_DATA/nfs"
mount: node: "/mnt"
mount: types: "nfs"
mount: opts: "vers=3,tcp,nolock"
mount: external mount: argv[0] = "/sbin/mount.nfs"
mount: external mount: argv[1] = "nas:/share/MD0_DATA/nfs"
mount: external mount: argv[2] = "/mnt"
mount: external mount: argv[3] = "-v"
mount: external mount: argv[4] = "-o"
mount: external mount: argv[5] = "rw,vers=3,tcp,nolock"
mount.nfs: timeout set for Sun Aug 24 11:24:44 2014
mount.nfs: trying text-based options 'vers=3,tcp,nolock,addr=192.168.11.50'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.11.50 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=6
mount.nfs: trying 192.168.11.50 prog 100005 vers 3 prot TCP port 41687
mount.nfs: mount(2): Connection timed out
mount.nfs: trying text-based options 'vers=3,tcp,nolock,addr=192.168.11.50'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.11.50 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=6
mount.nfs: trying 192.168.11.50 prog 100005 vers 3 prot TCP port 41687
mount.nfs: mount(2): Connection timed out
mount.nfs: trying text-based options 'vers=3,tcp,nolock,addr=192.168.11.50'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.11.50 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=6
mount.nfs: trying 192.168.11.50 prog 100005 vers 3 prot TCP port 41687
mount.nfs: mount(2): Connection timed out
mount.nfs: Connection timed out
NFSクライアントでは、portmapperは、NFSバージョン2、3、および4に対してうまく機能しているようです。
root@livak5:~# 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
100024 1 udp 57148 status
100024 1 tcp 52831 status
NFSサーバーでは、rpcinfoコマンドがインストールされていないため、NFSクライアントからpormapperが実行されているかどうかを確認しようとしました。
root@livak5:~# nc -zv nas 111
Connection to nas 111 port [tcp/sunrpc] succeeded!
root@livak5:~# rpcinfo -s nas
program version(s) netid(s) service owner
100000 2,3,4 local,udp,tcp portmapper superuser
100011 2,1 tcp,udp rquotad superuser
100005 3,2,1 tcp,udp mountd superuser
100003 3,2 udp,tcp nfs superuser
100227 3,2 udp,tcp - superuser
100021 4,3,1 tcp,udp nlockmgr superuser
100024 1 tcp,udp status superuser
後のコマンド(rpcinfo)が完了するまでに長い時間(5分以上)かかり、問題の根本原因を再現しています。 2049および41687の両方のTCPポートで、適切なデーモンプロセスがNASでリッスンしていることに注意してください。次の出力に示すように、ncコマンドがNASに対してNFSクライアントで即座に戻るため、この事実を確認できます。
root@livak5:~# nc -zv nas 2049
Connection to nas 2049 port [tcp/nfs] succeeded!
root@livak5:~# nc -zv nas 41687
Connection to nas 41687 port [tcp/*] succeeded!
奇妙なことに、次の出力に示すように、NAS自体にNFSバージョン3をマウントできます(このコード例では、SSHを介してNASにアクセスしています)。
[~] # mkdir /mnt2
[~] # mount -overs=3 nas:/share/MD0_DATA/public /mnt2
[~] # df -k
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/ram0 154691 137854 16837 89% /
devtmpfs 1531580 4 1531576 0% /dev
tmpfs 65536 160 65376 0% /tmp
/dev/md9 521684 126312 395372 24% /mnt/HDA_ROOT
/dev/md0 11622485880 410664920 11211296672 4% /share/MD0_DATA
/dev/md13 379888 259868 120020 68% /mnt/ext
tmpfs 32768 0 32768 0% /.eaccelerator.tmp
nas:/share/MD0_DATA/public/11622485888 411189216 11211296672 4% /mnt2
NFSクライアントで何らかのポートのブロックの問題があるように見えますが、Ubuntu 14.04.1は次のwikiに示すようにデフォルトではufw(複雑でないファイアウォール、実際にはiptablesのフロントエンドです)を有効にしていないようですdocument:Uncomplicated Firewall(どういうわけか、wikiのURLをここに入れることができません)。 NFSクライアントでコマンドを実行すると、ブロックされていないことを確認できます。
root@livak5:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
問題の根本的な原因は、私が使用しているイーサネットスイッチ(NetGEAR GS116Ev2)のファームウェアバグであることが判明しました。ファームウェアを2.0.0.23から2.0.1.17に更新すると、問題はなくなりました。