내 MontaVista 2.6.37 Linux는 NFS 모듈로 컴파일되었습니다. 순서대로 시작합니다.
rpcbind
rpc.nfsd 4
rpc.mountd
rpc.statd
기본 구성 파일 및 etab은 다음과 같습니다.
/mnt/sda1 192.168.50.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,fsid=1,anonuid=65534,anongid=65534)
클라이언트로서 내 FC32에서는 모든 것이 잘 작동합니다.
[root@leonp mnt]# mount -v 192.168.1.1:/mnt/sda1/ srv
mount.nfs: timeout set for Mon Aug 3 16:04:08 2020
mount.nfs: trying text-based options 'vers=4.2,addr=192.168.1.1,clientaddr=192.168.1.57'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'vers=4,minorversion=1,addr=192.168.1.1,clientaddr=192.168.1.57'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'vers=4,addr=192.168.1.1,clientaddr=192.168.1.57'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'addr=192.168.1.1'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.1.1 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 192.168.1.1 prog 100005 vers 3 prot UDP port 39445
[root@leonp mnt]#
NFSv2만 지원하는 클라이언트에 연결하려고 하면 문제가 발생합니다. 따라서 PC에서 테스트하려면 다음을 수행하십시오.
[root@leonp mnt]# mount -vvv -o vers=2 192.168.1.1:/mnt/sda1/ srv
mount.nfs: timeout set for Mon Aug 3 13:50:14 2020
mount.nfs: trying text-based options 'vers=2,addr=192.168.1.1'
mount.nfs: prog 100003, trying vers=2, prot=6
mount.nfs: trying 192.168.1.1 prog 100003 vers 2 prot TCP port 2049
mount.nfs: prog 100005, trying vers=1, prot=17
mount.nfs: trying 192.168.1.1 prog 100005 vers 1 prot UDP port 36357
mount.nfs: mount(2): Protocol not supported
mount.nfs: Protocol not supported
왜 이런가요? 나는 다음을 확인했다:
[root@leonp mnt]# rpcinfo 192.168.1.1
program version netid address service owner
100000 4 tcp 0.0.0.0.0.111 portmapper superuser
100000 3 tcp 0.0.0.0.0.111 portmapper superuser
100000 2 tcp 0.0.0.0.0.111 portmapper superuser
100000 4 udp 0.0.0.0.0.111 portmapper superuser
100000 3 udp 0.0.0.0.0.111 portmapper superuser
100000 2 udp 0.0.0.0.0.111 portmapper superuser
100000 4 local /var/run/rpcbind.sock portmapper superuser
100000 3 local /var/run/rpcbind.sock portmapper superuser
100003 2 tcp 0.0.0.0.8.1 nfs unknown
100003 3 tcp 0.0.0.0.8.1 nfs unknown
100003 2 udp 0.0.0.0.8.1 nfs unknown
100003 3 udp 0.0.0.0.8.1 nfs unknown
100021 1 udp 0.0.0.0.148.56 nlockmgr unknown
100021 3 udp 0.0.0.0.148.56 nlockmgr unknown
100021 4 udp 0.0.0.0.148.56 nlockmgr unknown
100021 1 tcp 0.0.0.0.228.206 nlockmgr unknown
100021 3 tcp 0.0.0.0.228.206 nlockmgr unknown
100021 4 tcp 0.0.0.0.228.206 nlockmgr unknown
100005 1 udp 0.0.0.0.142.5 mountd superuser
100005 1 tcp 0.0.0.0.130.95 mountd superuser
100005 2 udp 0.0.0.0.218.108 mountd superuser
100005 2 tcp 0.0.0.0.174.251 mountd superuser
100005 3 udp 0.0.0.0.154.21 mountd superuser
100005 3 tcp 0.0.0.0.132.150 mountd superuser
v2를 지원하지 않는 유일한 것은 nlockmgr입니다. 마운트 거부의 원인이 될 수 있습니까? 이를 테스트하기 위해 nlockmgr 실행을 제거하려고 시도했지만 성공하지 못했습니다. 나는 /etc/rpc에서 100021을 주석 처리하여 이를 방지하려고 시도했지만 성공하지 못했습니다.
고쳐 쓰다:
#rcp.nfsd -d
rpc.nfsd: Checking netconfig for visible protocols.
rpc.nfsd: Enabling inet udp.
rpc.nfsd: Enabling inet tcp.
rpc.nfsd: knfsd is currently down
rpc.nfsd: Writing version string to kernel: +4.1 +2 +3 +4
#cat /proc/fs/nfsd/versions
+2 +3
============
어떤 도움이라도 대단히 감사하겠습니다.
답변1
버전 2를 제공하려면 NFS 커널 서버를 조정해야 합니다(알다시피 기본적으로 더 이상 이 버전이 포함되어 있지 않습니다). 서버에서 이 명령을 실행하면 제안된 수정 사항이 작동하는지 테스트할 수 있습니다.
rpc.nfsd 0 && sleep 1 # Stop all previous threads
rpc.nfsd --nfs-version 2,3 8 # Restart 8 threads with versions 2 and 3
작동한다면 영구적으로 만들어야 합니다. 내 Debian("buster") 시스템에서는 여전히 편집이 필요한 것 같습니다 /etc/default/nfs-kernel-server
. 귀하의 시스템에서는 다를 수 있습니다.
원본 코드
# Number of servers to start up
RPCNFSDCOUNT=32
수정된 코드
# Options and number of servers to start up
RPCNFSDCOUNT='--nfs-version 2,3 8'