NFSv4 오류가 있지만 NFSv3에는 오류가 없습니다.

NFSv4 오류가 있지만 NFSv3에는 오류가 없습니다.

저는 RHEL6.5 및 RHEL7 호스트를 사용하여 RHEL6.5 클라이언트(모든 가상 머신)용 NFS 솔루션을 개발 중입니다. 현재 RHEL7 호스트와 RHEL6.5 클라이언트는 정상적으로 작동합니다. 문제는 RHEL6.5 호스트에 있습니다.

이러한 문제는 작년에는 없었던 문제가 최근 서버에 발생했기 때문에 제가 제어할 수 없는 서버의 일부 측면으로 인해 발생할 수 있습니다. 이것이 문제라고 생각하시면 상사에게 이를 증명할 수 있는 방법을 제안해 주시고 새 기계 구입 절차를 시작하시기 바랍니다.

솔루션은 원래 NFSv4를 사용하도록 설계되었으며 솔루션이 잘 작동했습니다. 그러나 RHEL6.5 호스트는 RHEL7 호스트만큼 열정적이지 않습니다. 마운트가 성공했지만 파일 액세스가 작동하지 않습니다. 예를 들어 터미널 cp에서 정지됩니다. - 고객의 쇼를 시청하세요 . 표준에 따르면 이 오류 코드는 문서화되어 있습니다.lesstail/var/log/messagesstate manager: lease expired failed on NFSv4 server nfs_master with error 10018NFS4ERR_RESOURCE여기. 리소스 문제를 해결하려는 시도는 nfsd명령줄을 통해 프로세스 수를 늘리는 것이 었지만 /etc/sysconfig/nfs도움이 되지 않았습니다. 내보낸 디렉터리가 NFS 서버 자체에 탑재된 경우에도 이 문제가 발생할 수 있습니다.

호스트나 클라이언트의 로그에 표시되지 않는 것은 또 다른 오류 10022이거나 적어도 NFSv4 오류 코드라고 가정합니다. tcpdumpNFS 트래픽이 통과하는 인터페이스 인 경우에만 표시됩니다. IP test-host.nfs > test_client-1.3297002672: reply ok 52 getattr ERROR: unk 10022이 오류 코드가 실제로 NFSv4 오류 코드인 경우 기록 NFS4ERR_STALE_CLIENTID합니다 .여기.

mount명령이 set 으로 변경 되면 nfsvers=3유사한 작업이 cp성공하고 클라이언트나 호스트에 오류가 생성되지 않습니다. 첫 번째 시도에는 약 5초 정도 시간이 걸리며 이후 동작은 훨씬 빨라집니다.

한 번에 최대 4개의 클라이언트 설치를 내보내고 읽을 수 있으며 동일한 파일이 있을 수 있습니다.

그래서 내 질문은 다음과 같습니다.

  1. 설명에서 어떤 서버 측 리소스가 참조됩니까 NFS4ERR_RESOURCE?
  2. NFS4ERR_RESOURCE오류 를 어떻게 해결하나요 NFS4ERR_STALE_CLIENTID?
  3. NFSv3은 예상대로 작동하지만 NFSv4는 작동하지 않는 이유는 무엇입니까?

nfs-utils버전 및 릴리스(클라이언트 및 RHEL6.5 호스트용): 1.2.3.39.el6

mount주문하다:

  • mount -n -t nfs -o ro,noexec,timeo=10,retrans=3,retry=0,soft,rsize=32768,intr,noatime
  • mount -n -t nfs -o nfsvers=3,ro,noexec,timeo=10,retrans=3,retry=0,soft,rsize=32768,intr,noatime

편집하다: 이 문제에 대한 해결책은 NFSv3 프로토콜로 대체하는 것입니다. 모두 괜찮습니다. 나는 이 질문에 "NFSv3으로의 폴백"으로 대답하지 않을 것입니다. 그러나 이 질문은 아마도 대답을 찾기에는 너무 틈새적인 질문일 것입니다.

답변1

문제의 RHEL 6.5를 제어할 수 없다고 말씀하셨으니 NFS 도메인이 일치하는지 확인하셨나요? NFSv3에는 그런 것이 없지만 NFSv4에서는 필요합니다. 그렇지 않으면 마운트는 계속 작동하지만 설명대로 파일 액세스는 이상하게 작동합니다.

/etc/idmapd.conf에서 NFS 도메인을 구성하면 살펴볼 가치가 있습니다.

답변2

테스트를 시도 -fstype=nfs4,rw,intr,hard,proto=tcp,port=2049,acl하고 2049/tcp가 서버의 클라이언트에 열려 있는지 확인하세요. 중간에 방화벽이 있는 경우 2049/tcp도 통과해야 합니다.

관련 정보