마운트 nfs가 클라이언트를 중단합니다.

마운트 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을 누르면 오류 없이 충돌이 발생합니다.) 수동으로 작성하고 Enter를 눌러도 같은 상황이 발생합니다. 충돌은 서버를 다시 시작한 후에만 중지됩니다. "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에서는 중단되지 않는 이유는 무엇입니까? 좋아요, 안정성 문제는 알고 있지만 오류에 대한 로그가 없는 것이 가장 큰 문제입니다.

시간 내 주셔서 감사합니다:)

관련 정보