香水についてです。
ここでは、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 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をマウントすると、再び機能しました。 :-)