私の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'