최신 업데이트를 보려면 아래로 스크롤하세요.
사용자를 위한 NFS 서버 호스팅 홈으로 구성된 인프라가 있습니다. 서버는 Ubuntu 서버를 실행하며 10G 광섬유 이더넷(Myri-10G 이중 프로토콜 네트워크 카드)을 갖추고 있습니다. 지난 2년 동안 잘 운영되어 왔습니다. 이 네트워크 카드 전환 중에는 서버가 변경되지 않았으며 서버는 항상 10G 광섬유였습니다.
인프라 개요:
- 서버: (10.131.39.114) Ubuntu 16.04.4, Myri-10G 이중 프로토콜 네트워크 카드, 펌웨어 1.4.57, nfs-kernel-server 1:1.2.8-9ubuntu12.3, linux 커널 4.4.0-109-generic
- 스위치: Force 10 S2410, Layer 2 전용, 10G 파이버 인터페이스 전용
- 클라이언트: Linux Mint 18.2, Myri-10G 듀얼 프로토콜 네트워크 카드, 펌웨어 1.4.57, autofs 실행, Linux 커널 4.8.0-53-generic(모든 클라이언트에 동일, 참고로 Intel 82579LM 기가비트 네트워크 연결을 사용함) 구리 이더넷)
클라이언트 워크스테이션은 Dell 워크스테이션급 컴퓨터입니다.예내장된 1G 이더넷(Intel 82579LM)을 사용합니다. 우리는 빅 데이터 작업을 진행 중이며 더 많은 Myri-10G 듀얼 프로토콜 네트워크 카드를 확보했습니다.
우리 워크스테이션의 절반은 새로운 네트워크 카드로 업그레이드되었으며 광섬유를 통해 S2410 스위치에 연결되었습니다. 이들 모두~인 것 같다재부팅 후 작동됩니다. Intel을 종료하고 Myricom을 구성했습니다.동일한 IP 주소를 가지고 있음구리 네트워크 카드로서(우리는 구리 네트워크 카드를 껐습니다). 모든 것이 괜찮아 보입니다. 핑, 파일 다운로드 등을 할 수 있습니다.하지만, 클라이언트가 로그인하면 정지됩니다. 짧은 조사 끝에 NFS 서버가 연결되지 않았음을 깨달았습니다.
참고: 우리는 VLAN을 사용하고 있습니다. 처음에는 VLAN 라우팅 문제일지도 모른다고 생각하여 클라이언트와 서버를 동일한 VLAN에 배치했습니다. 우리도 같은 문제에 직면했습니다.
관찰/문제 해결:
lshw -C network
*-network
description: Ethernet interface
product: Myri-10G Dual-Protocol NIC
vendor: MYRICOM Inc.
physical id: 0
bus info: pci@0000:22:00.0
logical name: enp34s0
version: 00
serial: 00:60:dd:44:96:a8
size: 10Gbit/s
width: 64 bits
clock: 33MHz
capabilities: msi pm pciexpress msix vpd bus_master cap_list rom ethernet physical fibre
configuration: autonegotiation=off broadcast=yes driver=myri10ge driverversion=1.5.3-1.534 duplex=full firmware=1.4.57 -- 2013/10/23 13:58:51 m latency=0 link=yes multicast=yes port=fibre speed=10Gbit/s
resources: irq:62 memory:fa000000-faffffff memory:fbd00000-fbdfffff memory:fbe00000-fbe7ffff
*-network
description: Ethernet interface
physical id: 1
logical name: enp34s0.731
serial: 00:60:dd:44:96:a8
size: 10Gbit/s
capabilities: ethernet physical fibre
configuration: autonegotiation=off broadcast=yes driver=802.1Q VLAN Support driverversion=1.8 duplex=full firmware=N/A ip=10.131.31.181 link=yes multicast=yes port=fibre speed=10Gbit/s
rpcinfo -p 10.131.39.114
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
100011 1 udp 787 rquotad
100011 2 udp 787 rquotad
100011 1 tcp 787 rquotad
100011 2 tcp 787 rquotad
100005 1 udp 40712 mountd
100005 1 tcp 45016 mountd
100005 2 udp 44618 mountd
100005 2 tcp 49309 mountd
100005 3 udp 43643 mountd
100005 3 tcp 53119 mountd
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049
100227 3 tcp 2049
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049
100227 3 udp 2049
100021 1 udp 51511 nlockmgr
100021 3 udp 51511 nlockmgr
100021 4 udp 51511 nlockmgr
100021 1 tcp 43334 nlockmgr
100021 3 tcp 43334 nlockmgr
100021 4 tcp 43334 nlockmgr
rpcinfo -u 10.131.39.114 mount
program 100005 version 1 ready and waiting
program 100005 version 2 ready and waiting
program 100005 version 3 ready and waiting
rpcinfo -u 10.131.39.114 portmap
program 100000 version 2 ready and waiting
program 100000 version 3 ready and waiting
program 100000 version 4 ready and waiting
rpcinfo -u 10.131.39.114 nfs
program 100003 version 2 ready and waiting
program 100003 version 3 ready and waiting
program 100003 version 4 ready and waiting
그러나 이는 실패합니다.
showmount -e 10.131.39.114
rpc mount export: RPC: Timed out
참고로 작동 중인 클라이언트(구리)에서는 일반적으로 다음을 볼 수 있습니다.
showmount -e 10.131.39.114
Export list for 10.131.39.114:
/mnt/homes 10.131.84.0/26,10.131.31.187,10.131.31.186,10.131.31.185,10.131.31.184,10.131.31.183,10.131.31.182,10.131.31.181,10.131.31.180
/mnt/clones 10.131.31.0/24,10.131.39.0/24,10.131.84.0/26
(예, 서로 다른 LAN에 있다는 것을 알고 있지만 수년 동안 작동했습니다.)
참고 사항: 네트워크 관리자가 꺼져 있고 /etc/network/interfaces에는 다음이 포함됩니다.
auto enp34s0.731
iface enp34s0.731 inet static
vlan-raw-device enp34s0
address 10.131.31.181
netmask 255.255.255.0
gateway 10.131.31.1
dns-nameservers 10.131.31.53,10.35.32.15
아마도 이 정보가 도움이 될 것입니다:
10G를 사용하는 클라이언트에서 서버에서 내보낸 다른 디렉토리를 마운트하기 위해 디렉토리를 생성하고 /mnt/clones(복제를 위해 엽니다)라고 말하고 NFSv4를 사용하여 수동으로 마운트하면~인 것 같다작동하지만 설치된 디렉토리로 ls 또는 cd를 실행할 수 없습니다. df는 작동하지만 디렉터리의 파일 수는 셀 수 없습니다. 이전에 이 문제를 본 적이 있지만 이유가 기억나지 않습니다.
클라이언트는 기본적으로 nfs4를 사용합니다(예: auto.home이 활성화된 작동 중인 구리 이더넷 클라이언트에서).
10.131.39.114:/mnt/homes/usera on /home/usera type nfs4 (rw,nosuid,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,soft,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.131.31.185,local_lock=none,addr=10.131.39.114)
총:
- 10gig로 업그레이드한 후 NFS가 더 이상 클라이언트 측에서 작동하지 않는 것 같습니다... 저는 과거에 이러한 정확한 NIC를 사용했다는 것을 알고 있습니다(사실 이 정확한 NIC는 제가 2012년에 사용한 것이었습니다). 그리고 이를 다른 클러스터에 배치했습니다. 이는 이 nfs가 작동하지 않는다는 것을 의미하며 이는 훨씬 더 의미가 없습니다).
- nfs 공유를 수동으로 마운트하면 실패합니다.
- v4를 강제로 적용하여 nfs 공유를 수동으로 마운트하면 작동하는 것처럼 보이지만 마운트에만 해당됩니다. df 명령을 제외하고 파일 및 작업이 실패합니다.
- 로그인하고 홈 디렉터리를 자동 마운트하려고 하면 실패합니다.
- 10G 클라이언트에서 v4를 사용하도록 자동 마운트를 강제하면~인 것 같다마운트되었지만 사용자가 여전히 로그인에 실패합니다. 집것 같다마운트되었지만 어떤 작업도 수행할 수 없습니다.
흥미롭게도 서버에는 클라이언트가 시도한 인증 요청에 대한 로그가 없습니다. 예를 들어 작동 중인 Copper 클라이언트에 사용자가 로그인되어 있으면 NFS 서버의 syslog는 인증된 nfs 요청을 기록합니다. 동일한 클라이언트가 10G 워크스테이션에 로그인을 시도하면 NFS 서버에 마운트 요청이 기록되지 않습니다. 요청이 서버에 도달하지 못한 것 같습니다.
다시 말하지만, 10G 워크스테이션부터 시작하면 네트워크의 다른 모든 것이 잘 작동합니다. 파일 전송, 서버 액세스(ssh, http를 통한 NFS 서버, 시도한 모든 포트도 작동함). 이 문제는 NFS에만 영향을 미치는 것으로 보입니다.
이 기사의 기본 질문은 다음과 같습니다. 다음에 어떤 진단을 수행해야 합니까? RPC 시간 초과가 발생하는 것 같지만 인터넷의 모든 도움말/FAQ는 라우팅 또는 네트워킹을 가리킵니다. 이러한 호스트는 동일한 스위치에 연결되어 있으며 동일한 결과를 테스트하기 위해 실제로 동일한 VLAN으로 이동했습니다. 어떤 생각이나 통찰력이라도 대단히 감사하겠습니다.
고쳐 쓰다:나는 이것이 매우 중요하고 내 문제의 원인이라고 생각하지만 이것을 진단하는 방법을 모르겠습니다.
10Gig 파이버 카드를 사용하는 클라이언트에서:
nmap -sC -p111 10.131.39.114
Starting Nmap 7.80 ( https://nmap.org ) at 2021-03-12 15:20 UTC
Nmap scan report for cmixhyperv03.cmix.louisiana.edu (10.131.39.114)
Host is up (0.00011s latency).
PORT STATE SERVICE
111/tcp open rpcbind
MAC Address: 00:60:DD:46:D6:DE (Myricom)
Nmap done: 1 IP address (1 host up) scanned in 3.79 seconds
유사한 클라이언트에서 1G 구리 이더넷을 사용하는 경우:
nmap -sC -p111 10.131.39.114
Starting Nmap 7.01 ( https://nmap.org ) at 2021-03-12 09:21 CST
Nmap scan report for cmixhyperv03.cmix.louisiana.edu (10.131.39.114)
Host is up (0.00044s latency).
PORT STATE SERVICE
111/tcp open rpcbind
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100003 2,3,4 2049/tcp nfs
| 100003 2,3,4 2049/udp nfs
| 100005 1,2,3 43643/udp mountd
| 100005 1,2,3 53119/tcp mountd
| 100011 1,2 787/tcp rquotad
| 100011 1,2 787/udp rquotad
| 100021 1,3,4 43334/tcp nlockmgr
| 100021 1,3,4 51511/udp nlockmgr
| 100227 2,3 2049/tcp nfs_acl
|_ 100227 2,3 2049/udp nfs_acl
Nmap done: 1 IP address (1 host up) scanned in 1.21 seconds
20210315 업데이트
클라이언트와 서버의 Wireshark에 tcpdump를 추가합니다. 작동 중인 Copper 클라이언트와 실패한 Fiber 클라이언트 사이에서 볼 수 있는 유일한 차이점은 서버가 연결되고 모든 것이 Copper 클라이언트가 연결될 때와 동일하게 보인다는 것입니다. 그러나 홈 디렉터리 파일( .bash_profile 등)을 읽기 시작한 후에는 그렇습니다. , 서버가 재전송을 시작하고 가짜 재전송을 받는 것 같습니다. 얼마 후 NFS가 여전히 디렉터리를 로드하려고 시도하고 있는데 TCP RST, ACK 및 RST가 표시된 다음 NFS NFSERR_BADSESSION이 표시됩니다. 지금까지 Wireshark에서 서버가 재전송하는 이유나 클라이언트가 실패하는 이유를 파악할 수 없습니다.
지금까지 10gig 스위치를 다른 스위치로 교체하고 다른 클라이언트도 사용했습니다. 불운.
답변1
이를 갈고 난 후, 문득 깨달았습니다... 언급한 대로, 테스트 중인 구리와 섬유가 모두 포함된 워크스테이션이 있는데 섬유가 작동하지 않습니다... 하지만 제 생각에는 그들 모두가 VLAN 경계를 확장하고 내 스위치는 L2 전용이므로 라우터와 통신 중입니다.
여기서 얻은 답변은...잘못되었습니다. 클라이언트를 1500MTU로 이동하면 문제가 "해결"되어 나와 네트워크 팀은 라우터 MTU도 1500이라고 믿게 되었습니다. 이것은 정확하지 않습니다. 워크스테이션을 별도의 스위치로 이동하고 모든 사람의 MTU를 9000으로 설정하면 작동하지 않습니다. 알고 보니... NFS는 MTU 9000을 좋아하지 않는 것 같습니다.
나는 언급하고있다이것들 기사, 그러나 10Gig 및 Jumbo 프레임을 사용하고 있기 때문에 문제가 "해결"되지 않습니다. 클라이언트를 1500바이트의 MTU로 이동하면 이 문제를 해결할 수 있습니다.