我花了 3 个晚上和部分时间,在 Google 上搜索并重新配置家庭网络的服务器,其中两个 nfs vers=3 服务器突然停止工作。
他们使用 3-4 个客户端的自动挂载,没有出现任何问题。这没什么用,我把它们放在家里只是为了测试一些东西,但有些照片和电影等放在一台或另一台服务器上的 ZFS 上。
突然什么都不起作用了,也没有取得任何进展…… rm /etc/default/nfs-* apt-get purge&install 都不起作用,启动 rpc.mountd 或 statd 并观察其输出的各种尝试也不起作用…… 好吧,但是有第三台带有 nfs3 服务器的机器,一个带有 OpenWRT 的路由器,只提供一个 USB 密钥。 这台机器在所有电脑上都能正常工作,没有任何问题,尽管那两台 Ubuntu 服务器已经死机…… 所以,我确实怀疑 Ubuntu 更新。 我发现几个月前 nfs-utils 包被删除了…… 我不知道它什么时候停止工作的。
症状:showmount -e 服务器需要 2 到 3 分钟才能显示答案,但答案是正确的。rpcinfo -p 服务器大约需要一分钟或更长时间,显示正确的输出。mount.nfs xx:/x/x /mnt/test -o vers=3 在一两分钟后结束并出现错误。对这些服务器进行 ping 或 mount samba 操作没有任何问题,iperf 显示大约 1gigabit,符合预期(或更少,但当客户端使用 wifi 时仍然很好)。telnet 到 portmapper 端口和 nfs 端口打开一个会话。防火墙已关闭。甚至将 ALL:lanip 添加到 Hosts.allow。- 每个问题都只与 Ubuntu 服务器有关,OpenWrt 在几分之一秒内做出响应并按预期从所有客户端工作。但它不支持 nfs4。- 其中一台服务器是带有 Trusty HWE 堆栈的 12.04.5 LTS,- 第二台服务器是 14.04 LTS Trusty。已安装所有更新。其中一个使用两个接口的网卡绑定(模式0),而第二个则没有。
原因,不解释:
长话短说,几分钟前我有了一个疯狂的想法,想试试,用我的新 ZyXel GS1900-8 管理交换机换了旧的便宜(但也是千兆)tplink。我疯了,因为我的 NFS 服务器在那一刻开始工作了。
看着交换机,我不知道它出了什么问题。现在我记得我确实启用了 LLTP 并在所有 PC 上安装了 lltpd,只是为了在端口列表中看到它们的名字。我使用 803.ad LACP 进行了一些绑定测试,旧交换机不支持该测试,新交换机正在运行,但我将其关闭(返回到模式 0),因为它可以避免 WoL,而 WoL 是我经常使用的并且我认为是必要的。
请告诉我要检查什么,或者猜猜原因是什么。在哪里查看以及使用什么命令来查找差异?我非常好奇。
答案1
最后发现,启用了 DoS(拒绝服务)功能的托管交换机会检测 SYN<1024 端口映射请求并开始阻止它们。关闭此功能可完全解决问题。
除了尝试 rpcinfo -p 或 showmount -e 之外,我无法检测到问题,因为仅尝试 telnet 时所有端口均可访问。
在我已经知道要搜索什么之后,Google 找到了常见的消息,例如https://serverfault.com/questions/367107/cant-mount-nfs-share-over-tcp 并且提到了不同品牌的交换机(我的是 ZyXel,还有他们的 PoweConnect 和 Cisco)。
恕我直言,随着管理型交换机变得越来越便宜和普遍,这个问题可能会多次重现,也许是 askubuntu 上提到的另一个 nfs 问题的原因。