サーバー側には次のものがあります。
CentOS 7 updated
Kernel 4.13.12-1.el7.elrepo.x86_64
nfs-utils-1.3.0-0.48.el7_4.x86_64
libnfsidmap-0.25-17.el7.x86_64
クライアント側ではまったく同じ環境です。
私たちはiptablesを持っていますが、クライアントとサーバー(すべてのプロトコルのすべてのポート)間のすべての通信を可能にします。
ほとんどのクライアントは、問題なくエクスポートしたNFS共有を接続してマウントできます。彼らは同じ環境と同じiptableルールを持っています。
そのうちのいくつかはNFS共有をマウントできませんでした。これに関するログはありません。
問題のクライアントの1つであるCLIENT-Aに電話をかけてNFSを手動でマウントしようとすると、エラーや警告、またはログの種類は表示されません。
[root@]# mount -vvv -t nfs MYSERVER:/home/shared/ /home/shared/
時々、このコマンドは端末を停止したり、そうでないこともあります。コマンドをキャンセルするか、新しいsshを実行して/ homeでlsを実行しようとすると、端末は停止します。
[root@]# ls /home/sha
(Tabを押すとエラーなしでクラッシュします。)手動で作成してEnterを押しても同じ状況が発生します。競合は、サーバーを再起動した後にのみ停止します。 "lsof"コマンドも中断されます。
そして、上記のいずれの場合も、タイムアウトエラーはありません。彼らは決して終わりません。再起動して再試行しましたが、成功しませんでした。繰り返します。彼らは同じ環境を持っています。ハードウェアとIPは異なりますが、ソフトウェアは同じレプリカと考えることができます。はい、同じ結果を保証するわけではありませんが、通常、ソフトウェアのアイデアは同じ結果を表示することです。
NFSサーバーへのTCP接続を手動で作成できます。
[root@localhost]# telnet MYSERVER 2049
Trying MYSERVERIP...
Connected to MYSERVER.
Escape character is '^]'.
私も何が起こっているのかについての記録はありません。私は彼らがnfsバージョン4.1(このモジュールの最後のバージョン)への接続を作成しようとしていると思います。バージョン3を手動で試しましたが、成功しませんでした。
サーバー側で「rpcinfo -p localhost」を実行しましたが、奇妙な問題が見つかりました。一部のクライアントはバージョン4を使用し、一部は3、2、または1(2または1???!!!)を使用していました。
[root@ ~]# rpcinfo -p localhost
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
100024 1 udp 59356 status
100024 1 tcp 50117 status
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 58205 nlockmgr
100021 3 udp 58205 nlockmgr
100021 4 udp 58205 nlockmgr
100021 1 tcp 38641 nlockmgr
100021 3 tcp 38641 nlockmgr
100021 4 tcp 38641 nlockmgr
そのため、NFSV3を使用するクライアントを見つけて、次のようにしました。
[root@ ~]# mount -vvv -t nfs -o vers=4 MYSERVER:/home/shared/ /home/shared/
mount.nfs: timeout set for Sun Nov 12 14:03:02 2017
mount.nfs: trying text-based options 'vers=4.1,addr=MYSERVER,clientaddr=MYCLIENTIP'
停止します。しかし、vers = 3を試してみるとうまくいきます。
[root@ ~]# mount -vvv -t nfs -o vers=3 MYSERVER:/home/shared/ /home/shared/
mount.nfs: timeout set for Sun Nov 12 14:03:12 2017
mount.nfs: trying text-based options 'vers=3,addr=MYSERVERIP'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying MYSERVERIP prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying MYSERVERIP prog 100005 vers 3 prot UDP port 20048
サーバー側では、ディレクトリは同じパラメータを使用して1行ずつ別のIPにエクスポートされます。
(ro,async,all_squash)
CLIENT-A の問題に戻り、CLIENT-A の tcp および udp ポートで新しい接続が発生するたびにサーバー側にログを記録しようとしました。 CLIENT-Aがポートを開こうとしている様子が見えます。そして、多くの努力をしてきました。だから問題は顧客ではないと思います。おそらく。
だから私の質問は次のようになります
- これから問題を解決するには?リモートマウントが成功した場合にのみ、サーバー側RPCのログがあります。
- rpcinfo -pがnfs4のすべてのバージョンを表示するのはなぜですか?
- ((1)に関して)同じ構成サーバーがnfs v4.1では中断されますが、3では中断されないのはなぜですか?さて、信頼性の問題は知っていますが、エラーのログがないことが最大の問題です。
時間をいただきありがとうございます:)