私の理解では、NFSv4クライアントはサーバー上のNFSv4サービスにすぐに接続し、rpcbindポートマッパーとマウントされたサービスの相互作用を完全にスキップする必要がありますが、RHEL6クライアントは常に最初にrpcbindサービスに接続してマウントされたポートを取得し、マウントされたフォームをエクスポートし、最後にNFSv4サービスに接続します。 tcpdumpを使用して監視されます。
すべての指示(マウントコマンドの出力とTCPの検査)により、マウント操作が完了すると、クライアントとサーバーはNFSv4を使用します。
これは、クライアントにNFSv4のみを強制しようとするために遭遇したすべてのことを実行した場合でも発生します。例:
私は完全にベースから外れていますか、それとも何かが正しくありませんか?これは私にとって問題です。NFSクライアントは、NFSv4エクスポートをマウントする前にUDP経由でサーバー上のrpcbindに到達できることを要求し、不思議なUDPパケット損失が発生します(はい、私はネットワーク担当者と協力していますこのフロント)は、マウントが完全に失敗するか、完了するまでに長い時間がかかる原因になっています。
Libtirpcソースを調べて、常にUDPを使用してRPCポートマッパーに接続していることを確認しましたが、ポートマッパーとマウントされたサービスを完全に排除したいと思います。
「rpcinfo-d」を使用してNFSサーバーでUDPポートマッパーサービスの登録を解除しようとしましたが、そのサーバーをターゲットとするすべてのNFSマウントが失敗します(クライアントは、RPCbindがUDPポート111でリッスンしているサーバーを要求します)。また、運が悪かったので/ etc/netconfigをいじってみました。
誰かがこの動作に出くわしたり、NFSv4について十分に知っているので、私には非現実的な期待があると教えてくれますか?
私はこれをautofsまでさかのぼりました。 /etc/auto.netを使用して、showmountコマンドを使用してエクスポートのリストを取得するように設定されています。 showmountコマンドは、NFSマウントが発生する前に、rpcbindおよびmountdへのアクセスを担当していたため、マウントオプションを変更しようとしても効果がありませんでした。
/etc/auto.netを改訂し、問題を修正しました。
補足:さまざまな場所で見たように、auto.masterの「-hosts」オプションを使用すると、rpcbindおよびmountdアクセスも発生しました。すべてのホストがNFSv4であると仮定すると、auto.netにすべてのNFSv4サーバーのルートをマウントさせるだけで問題ないことがわかりました。