내장된 NFS 서버는 ver=2를 지원하지 않지만 1,3을 지원합니다. 이것이 가능합니까?

내장된 NFS 서버는 ver=2를 지원하지 않지만 1,3을 지원합니다. 이것이 가능합니까?

내 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'

관련 정보