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各インストールの試行が3回記録されます。

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 2RPCNFSDCOUNT/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をマウントすると、再び機能しました。 :-)

関連情報