无法从Ubuntu 14.04.1 LTS对QNAP NAS进行NFS安装

请注意,这是QNAP NAS社区中的交叉发布问题: http : //forum.qnap.com/viewtopic.php? f = 35&t = 96526& p = 427018#p427018

任何意见和建议,以及相关信息的指针非常感谢。


我无法从运行Ubuntu 14.04.1(LTS)的NFS客户端对我的NFS服务器(QNAP NAS)进行NFS安装。 我的环境是:

  • NFS服务器:QNAP TS-669 Pro运行固件4.1.0(日期:2014/06/12)
  • NFS客户端:运行Ubuntu 14.04.1 LTS Desktop的ECS LIVA(小型准系统PC)。
  • 这两个系统通过1000Base-T以太网连接,IP可达。
  • 名称解析由本地注册表(/ etc / hosts)完成, getent hosts host-name命令在两个节点上返回正确且一致的IP地址。
  • 在NFS服务器上启用NFS服务,并在“共享文件夹”配置应用程序的“NFS主机访问”选项卡上的特定共享文件夹上给出NO_LIMIT访问权限,即“/ nfs”:事实上,我可以确认它是通过在NAS上发出“exportfs -rva”命令导出的世界NFS。
  • 由于Ubuntu(NFS客户端)默认不安装NFS客户端软件包,因此我明确安装了nfs-common软件包,如下所述:设置NFS HOW-TO( https://help.ubuntu.com/community/SettingUpNFSHowTo# NFS_Client ); rpcbind包似乎默认安装。

在NFS客户端上,如果我运行命令“mount -t nfs nas:/ nfs / mnt” ,它会在五或十分钟后给出输出“mount.nfs:Connection timed out”。 即使我在尝试NFS挂载时指定了带有-overs = 3选项的NFS版本3协议,也会返回相同的结果。 此外,命令“ showmount -e ”最终会列出导出的NFS共享文件夹(目录)名称,但也需要5或10分钟才能完成。

在NFS服务器上, “exportfs -rva”命令返回以下警告消息,但我确实认为该消息与问题无关(我在此代码示例中通过SSH访问NAS):

[~] # 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命令需要很长时间(超过五分钟)才能完成。 我指定了vers = 3选项,因为我了解QNAP默认不支持NFS V4,NFS V3满足我的要求。 无论是否指定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服务器上,我尝试检查pormapper是否从NFS客户端运行,因为它没有安装rpcinfo命令:

 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 )需要很长时间(超过五分钟)来完成,这会复制问题的根本原因。 请注意,在TCP端口2049和41687上,相应的守护程序进程正在侦听NAS。 我可以确认这个事实,因为nc命令会立即在NFS客户端上针对NAS返回,如以下输出所示:

 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默认情况下不启用ufw(简单的防火墙,它实际上是iptables的前端),如下面的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 

事实certificate问题的根本原因是我使用的以太网交换机的固件错误(NetGEAR GS116Ev2)。 从2.0.0.23更新固件到2.0.1.17后,问题就消失了。

我最近几个晚上都在寻找麻烦的原因,这对你来说很常见(长时间回复showmount或rpcinfo)。 它通过关闭阻止nfs portmap的两个不同的MANAGED SWITCHES的DoS防止function结束(默默地,没有日志)。 nfs使用新的托管交换机不可行 – 不知道为什么 – 两个ZyXel交换机的DoS打破了端口映射