mount nfs挂起客户端

mount nfs挂起客户端

在服务器端我有:

CentOS 7 updated
Kernel 4.13.12-1.el7.elrepo.x86_64
nfs-utils-1.3.0-0.48.el7_4.x86_64
libnfsidmap-0.25-17.el7.x86_64

在客户端,完全相同的环境。

我们有一个 iptables,但它允许客户端和服务器之间的任何通信(任何协议的任何端口)。

大多数客户端可以正常连接并挂载导出的 NFS 共享目录,没有任何问题。他们有完全相同的环境和完全相同的 iptable 规则。

其中一些无法挂载 NFS 共享,我没有相关日志。

将有问题的客户端之一称为 CLIENT-A,如果我尝试手动挂载 NFS,则不会出现错误或警告或任何类型的日志:

[root@]#  mount -vvv -t nfs MYSERVER:/home/shared/ /home/shared/

有时该命令会挂起终端,有时不会。如果我取消该命令或执行新的 ssh 并尝试在 /home 中执行 ls,终端将挂起:

[root@]# ls /home/sha

(当我按下 TAB 时,它崩溃了,没有错误)。即使我尝试手动写入并按回车键,我也会遇到同样的情况。只有重新启动服务器后才会停止崩溃。 “lsof”命令也会挂起。

并且在上述两种情况下都没有超时错误。他们永远不会完成。我已经尝试过重新启动并重试,但没有成功。我再说一遍:他们有完全相同的环境。您可以将其视为具有不同硬件和 IP 但相同软件的克隆。是的,它不能保证相同的结果,但总的来说,软件的想法是显示相同的结果。

我可以手动创建与 NFS 服务器的 tcp 连接:

[root@localhost]# telnet MYSERVER 2049
Trying MYSERVERIP...
Connected to MYSERVER.
Escape character is '^]'.

我双方都没有关于正在发生的事情的日志。我认为他们正在尝试创建与 nfs 4.1 版本(该模块的最后版本)的连接。我手动尝试过版本 3,但没有成功。

我在服务器端执行了“rpcinfo -p localhost”,发现了一个奇怪的问题:一些客户端正在使用版本 4,其中一些是 3、2 或 1(2 或 1???!!!)。

[root@ ~]# rpcinfo -p  localhost
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  59356  status
100024    1   tcp  50117  status
100005    1   udp  20048  mountd
100005    1   tcp  20048  mountd
100005    2   udp  20048  mountd
100005    2   tcp  20048  mountd
100005    3   udp  20048  mountd
100005    3   tcp  20048  mountd
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100227    3   tcp   2049  nfs_acl
100003    3   udp   2049  nfs
100227    3   udp   2049  nfs_acl
100021    1   udp  58205  nlockmgr
100021    3   udp  58205  nlockmgr
100021    4   udp  58205  nlockmgr
100021    1   tcp  38641  nlockmgr
100021    3   tcp  38641  nlockmgr
100021    4   tcp  38641  nlockmgr

所以我找到了一个正在使用 NFSV3 的客户端,我做了:

[root@ ~]# mount -vvv -t nfs -o vers=4     MYSERVER:/home/shared/ /home/shared/
mount.nfs: timeout set for Sun Nov 12 14:03:02 2017
mount.nfs: trying text-based options 'vers=4.1,addr=MYSERVER,clientaddr=MYCLIENTIP'

它挂了。但如果我尝试 vers=3,它就会起作用。

[root@ ~]# mount -vvv -t nfs -o vers=3 MYSERVER:/home/shared/ /home/shared/
mount.nfs: timeout set for Sun Nov 12 14:03:12 2017
mount.nfs: trying text-based options 'vers=3,addr=MYSERVERIP'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying MYSERVERIP prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying MYSERVERIP prog 100005 vers 3 prot UDP port 20048

在服务器端,目录被逐行导出到具有相同参数的不同IP:

(ro,async,all_squash)

返回 CLIENT-A 问题,我尝试在服务器端记录来自 CLIENT-A 的 tcp 和 udp 端口​​的每个新连接。我可以看到 CLIENT-A 尝试打开端口。并且它尝试了很多。所以我认为问题不在于客户。或许。

所以我的问题是:

  1. 从现在起如何排除故障?当远程挂载成功时,我只在服务器端有来自 RPC 的日志。
  2. 为什么 rpcinfo -p 显示有关 nfs4 的所有版本?
  3. 为什么(可能与(1)有关)同样配置的服务器在 nfs v4.1 中损坏,而在 3 中则不然?好的,我知道稳定性问题,但没有关于错误的日志是主要问题。

感谢您的时间 :)

相关内容