RPC로 인해 NFS 마운트 실패: 쓰레기

RPC로 인해 NFS 마운트 실패: 쓰레기

향수에 관한 것입니다.

여기에 SuSE Linux 4.3과 커널 2.2.6을 실행하는 오래된 PC가 있습니다. 모든 하드웨어가 포함되어 있습니다. 이더넷은 제대로 작동하고 있으며 최근 Ubuntu 20.04에서 호스팅하는 NFS 공유를 마운트하려고 합니다.

두 PC 모두 서로 ping을 수행하고 /etc/hosts. 예를 들어 FTP가 실행 중입니다.

출구는 다음과 같습니다:

/data   192.168.3.0/24(ro,no_subtree_check)

내가 이해한 바에 따르면 NFS v2/v3 내보내기가 생성됩니다.

설치하려고 하면 다음과 같은 결과가 발생합니다.

nostalgy:/root # mount -t nfs linus:/data /data
mount: wrong fs type, bad option, bad superblock on linus:/data,
       or too many mounted file systems

/var/log/messages클라이언트 측 에서 :

May 10 15:42:18 nostalgy kernel: nfs warning: mount version older than kernel
May 10 15:42:18 nostalgy kernel: call_verify: server accept status: 2
May 10 15:42:18 nostalgy kernel: RPC: garbage, retrying    0
May 10 15:42:18 nostalgy kernel: call_verify: server accept status: 2
May 10 15:42:18 nostalgy kernel: RPC: garbage, retrying    0
May 10 15:42:18 nostalgy kernel: call_verify: server accept status: 2
May 10 15:42:18 nostalgy kernel: RPC: garbage, exit EIO
May 10 15:42:18 nostalgy kernel: nfs_get_root: getattr error = 5
May 10 15:42:18 nostalgy kernel: NFS: cannot create RPC transport.

/var/log/syslog디버그 로깅이 활성화된 서버 에서는 rpcdebug -m rpc -s all각 설치 시도가 세 번 기록됩니다.

Jul 12 19:35:18 linus kernel: [25882.293061] svc: socket 00000000d25fa09a(inet 00000000ad30a7ef), busy=0
Jul 12 19:35:18 linus kernel: [25882.293096] svc: server 000000006bec18a0, pool 0, transport 00000000d25fa09a, inuse=2
Jul 12 19:35:18 linus kernel: [25882.293138] svc: svc_authenticate (1)
Jul 12 19:35:18 linus kernel: [25882.293144] svc: server 00000000ed86c4fe, pool 0, transport 00000000d25fa09a, inuse=3
Jul 12 19:35:18 linus kernel: [25882.293152] svc: server 00000000ed86c4fe waiting for data (to = 900000)
Jul 12 19:35:18 linus kernel: [25882.293173] svc: 192.168.3.4, port=800: unknown version (2 for prog 100003, nfsd)
Jul 12 19:35:18 linus kernel: [25882.293241] svc: socket 00000000d25fa09a sendto([00000000dc11bc2f 32... ], 32) = 32 (addr 192.168.3.4, port=800)
Jul 12 19:35:18 linus kernel: [25882.293245] svc: server 000000006bec18a0 waiting for data (to = 900000)
Jul 12 19:35:18 linus kernel: [25882.295154] svc: socket 00000000d25fa09a(inet 00000000ad30a7ef), write_space busy=0

unknown version (2 for prog 100003, nfsd)이는 클라이언트가 NFSv2를 사용하고 있고 서버가 더 이상 이를 지원하지 않는다는 의미일 수 있습니다 . 실제로 이전 클라이언트에서는 커널이 NFSv3을 지원하도록 구성되지 않았습니다. 하지만 이렇게 하고 커널을 다시 컴파일한 후에도 여전히 같은 오류가 발생합니다.

서버에서는 다음과 같이 nfsstat말합니다.

Server rpc stats:
calls      badcalls   badfmt     badauth    badclnt
0          7          7          0          0

설치를 시도할 때마다 두 개수가 모두 3씩 증가하고 일치하도록 2번 재시도됩니다. badcalls/badfmt 맞죠 unknown version (2 for prog 100003, nfsd)?

rpcinfo -p의 출력:

dode@linus:~$ rpcinfo -p
   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
    100005    1   udp  59155  mountd
    100005    1   tcp  44609  mountd
    100005    2   udp  56137  mountd
    100005    2   tcp  37447  mountd
    100005    3   udp  56639  mountd
    100005    3   tcp  57329  mountd
    100003    3   tcp   2049  nfs
    100227    3   tcp   2049
    100003    3   udp   2049  nfs
    100227    3   udp   2049
    100021    1   udp  34312  nlockmgr
    100021    3   udp  34312  nlockmgr
    100021    4   udp  34312  nlockmgr
    100021    1   tcp  34245  nlockmgr
    100021    3   tcp  34245  nlockmgr
    100021    4   tcp  34245  nlockmgr

서버에서 Ubuntu 14.04(커널 4.4.0), 16.04(커널 4.15)를 실행 중인 경우 마운트 내보내기가 제대로 작동하지만 18.04(커널 5.3) 이상을 실행하는 경우 내보내기가 실패합니다.

또한 NFS v4를 비활성화하려고 시도했습니다.이것

그렇다면 커널 5에서 관련된 것(RPC?)이 변경되었을 수 있습니까?

답변1

마침내 나는 그것을 작동시킬 수 있습니다.

NFSv3을 지원하는 오래된 SuSE 시스템에서 커널을 컴파일했는데도 여전히 v2를 사용하고 있는 것 같습니다. v3를 활성화하려면 커널 옵션이 필요할 수도 있습니다.

Ubuntu 20.04 서버에서 명령은 다음을 sudo cat /proc/fs/nfsd/versions반환합니다.

-2 +3 -4 -4.0 -4.1 -4.2

따라서 v2는 지원되지 않습니다.

v2를 활성화하려면 다음을 추가해야 합니다 -V 2.RPCNFSDCOUNT/etc/default/nfs-kernel-server

# Number of servers to start up
RPCNFSDCOUNT="8 -V 2 --no-nfs-version 4"

그런 다음 재부팅하면 nfs-kernel-server변경 사항이 적용됩니다.

sudo systemctl restart nfs-kernel-server

그 후 내보낸 이전 SuSE 시스템에 NFS를 마운트하면 다시 작동했습니다. :-)

관련 정보