无法挂载 nfs 卷 — 超时

无法挂载 nfs 卷 — 超时

我有一个来自 Linux 文件服务器的 NFSv3 导出,以前可以正常挂载。文件服务器因硬件维护而停机。服务器恢复后,Linux 客户端无法再挂载 nfs 导出。

服务器或客户端上的配置均未发生改变。第一次安装失败后,我确实进行了软件更新并重启了客户端,但这没有帮助。

[root@client ~]# showmount -e ark
Export list for ark:
/mnt/bigraid *

[root@client ~]# mount -t nfs ark:/mnt/bigraid raid

此时它就挂了。在另一个终端...

[root@client ~]# dmesg | tail
[ 2526.676437] nfs: server ark not responding, timed out
[ 2529.183107] nfs: server ark not responding, timed out
[ 2531.689778] nfs: server ark not responding, timed out
[ 2538.196432] nfs: server ark not responding, timed out
[ 2540.703107] nfs: server ark not responding, timed out
[ 2543.209767] nfs: server ark not responding, timed out
[ 2545.716436] nfs: server ark not responding, timed out
[ 2548.223098] nfs: server ark not responding, timed out
[ 2550.729775] nfs: server ark not responding, timed out
[ 2557.236435] nfs: server ark not responding, timed out

...好的,但是我可以通过 showmount 看到导出的内容……

[root@client ~]# ping ark
PING ark.homebase (10.10.10.2) 56(84) bytes of data.
64 bytes from ark.homebase (10.10.10.2): icmp_seq=1 ttl=64 time=0.067 ms
64 bytes from ark.homebase (10.10.10.2): icmp_seq=2 ttl=64 time=0.043 ms
64 bytes from ark.homebase (10.10.10.2): icmp_seq=3 ttl=64 time=0.048 ms
64 bytes from ark.homebase (10.10.10.2): icmp_seq=4 ttl=64 time=0.042 ms
^C
--- ark.homebase ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms

所以我不明白。

服务器正在运行 OpenSUSE。我确保防火墙已关闭(并非一直处于打开状态),并且网络连接正常。

ark:/etc # cat exports
/mnt/bigraid    *(rw,root_squash,insecure,no_subtree_check,sync)

编辑:这是正在使用的 RPC 端口列表

ark:/etc/init.d # rpcinfo -p
program vers proto   port
100000    2   tcp    111  portmapper
100005    1   udp  37599  mountd
100005    1   tcp  33880  mountd
100005    2   udp  37599  mountd
100005    2   tcp  33880  mountd
100005    3   udp  37599  mountd
100005    3   tcp  33880  mountd
100024    1   udp  49522  status
100024    1   tcp  41314  status
100003    2   udp   2049  nfs
100003    3   udp   2049  nfs
100003    4   udp   2049  nfs
100021    1   udp  51887  nlockmgr
100021    3   udp  51887  nlockmgr
100021    4   udp  51887  nlockmgr
100003    2   tcp   2049  nfs
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100021    1   tcp  49804  nlockmgr
100021    3   tcp  49804  nlockmgr
100021    4   tcp  49804  nlockmgr
100000    2   udp    111  portmapper

编辑 2:获得一些 tcpdump 信息

(编辑 3:删除 tcpdump 输出,因为它可能不相关。)

我完全不了解正确的 nfs 协商是什么样子的。如果你想查看数据段,我还转储了一个 pcap 文件。它位于文件投放器

编辑 3:我可能会打这个问题

我遵循了以下@CIA 的建议并这样做了:

ark:/etc/init.d #  ./nfsserver stop
Shutting down kernel based NFS server: nfsd statd mountd idmapd       done
ark:/etc/init.d # ./portmap stop
Shutting down RPC portmap daemon                                      done
ark:/etc/init.d # ./portmap start
Starting RPC portmap daemon                                           done
ark:/etc/init.d # ./nfsserver start
Starting kernel based NFS server: idmapdexportfs: Warning: /mnt/bigraid does not support NFS export.
 mountd statd nfsd sm-notify                                          done

尽管有警告,但现在看来出口还是可以的。

答案1

因此,NFS 很奇怪,因为它依赖于 portmapper 的运行,因此它可以将特定端口映射到 RPC 端口。(我想这并不奇怪。这只是它的工作方式。)如果 NFS 在 portmapper 之前启动,NFS 就不知道如何路由请求,因为它会在进程开始时检查 portmapper。如果 portmapper 在 NFS 之前没有启动,NFS 就不知道如何将端口映射到 rpc。

这里有更多关于该过程的文档(尽管它适用于 CentOS,但仍然具有相关性):http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s2-nfs-methodology-portmap.html

至于您的新错误消息,请重新启动您正在安装的盒子并重新安装以查看错误是否再次出现。

答案2

总结给出的答案的解决方案,以下步骤为我指明了解决 NFS 挂载问题的正确方向无需重申

  1. 在客户端运行 tcpdump 到 NFS 服务器 IP 地址(假设它是 1.2.3.4)

    tcpdump -i <replace-with-correct-INTERFACE_name -n host 1.2.3.4
    
  2. 继续运行 tcpdump 并尝试挂载 NFS 共享路径。

  3. 查找 NFS 与服务器通信的端口以安装路径(在您的例子中为 [tcpdump 导致编辑修订],仅显示那些是端口:880、2049)。

  4. 在 NFS 服务器 IP 上执行 telnet 操作全部您在步骤 3 中从 tcpdump 输出中获得的端口,并确保您具有 telnet 并且端口从服务器端到客户端都是开放的(对于您的情况,仅找到以下两个端口)。

    telnet 1.2.3.4 880
    telnet 1.2.3.4 2049
    
  5. 如果您在步骤 3 中捕获的任何端口上都没有 telnet,那么您需要在网络级别打开这些端口(如果有的话,则在服务器端和/或防火墙)

  6. 现在尝试再次挂载 NFS。

答案3

tcpdump -i $LAN_IF -n host 10.10.10.2

应该会向您显示哪个 NFS 组件出现故障。

答案4

启用以下 TCP 和 UDP 端口,以便客户端访问服务器上的 nfs 共享。

对于 NFS3 tcp:111,662,875,892,2020,2049,32803
udp:111,2049,32769

对于 NFS4

tcp:111,2049 udp:111,2049

编辑:尝试从 nfs 客户端远程登录上述端口

相关内容