NFSv4はrpcbindを実行しないとnfsdのソケットを設定できません


8

Red Hatのドキュメントによると、「rpcbind」はもう必要ありません。

プロトコルサポートがv4プロトコルに組み込まれているため、NFSv4は、ポートマップ、rpc.lockd、およびrpc.statdデーモンと対話しません。NFSv4は、よく知られているTCPポート2049でリッスンします。これにより、ポートマップの相互作用が不要になります。マウントおよびロックプロトコルがV4プロトコルに組み込まれ、rpc.lockdおよびrpc.statdとの対話の必要がなくなりました。rpc.mountdデーモンはサーバー上でも必要ですが、有線操作には関与しません。

ただし、「rpcbind」サービスが実行されていないときにNFSデーモンを開始できません。

# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno = Connection refused
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
                                                           [FAILED]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
rpc.nfsd: unable to set any sockets for nfsd
                                                           [FAILED]

NFS v2とv3を無効にしました:

# grep -v "^#" /etc/sysconfig/nfs
MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
RPCNFSDARGS="-N 2 -N 3"

以下にリストされているものから、サーバーとクライアントで必要な/必須のサービスを確認してください(基本的に、不要なサービスを無効にしたい):

# rpm -ql nfs-utils | grep 'init.d'
/etc/rc.d/init.d/nfs
/etc/rc.d/init.d/nfslock
/etc/rc.d/init.d/rpcgssd
/etc/rc.d/init.d/rpcidmapd
/etc/rc.d/init.d/rpcsvcgssd

nfsを許可するようにファイアウォールを設定しましたか?
user9517 2013

はい、NFSエクスポートをクライアントにマウントできますが、なぜrpcbindv4 でも引き続き使用する必要があるのでしょうか
HTF

3
NFSv4はrpcbindを必要としません。しかし、その情報に依拠しているクライアントやツール、たとえば「showmount」などがあります。さらに、Linux nfsdは/ proc / fs / nfsd / portlistファイルを使用してポート番号をrpcbindに通信します。このファイルは実行中のrpcbindプロセスに依存しています。
kofemann 2013

カーネル3.3.2のDebian 7でこの問題を確認する-N 2 -N 3rpc.nfsdは、開始スクリプトにを追加し、同じエラー「nfsdのソケットを設定できません」を取得します
Tankman六四

回答:


10

これは、NFSサーバーのカーネルモジュールのバグでした。2013年12月にパッチ適用されました。

カーネル3.14以降、カーネルrpcbind内NFSサーバーを実行する必要はなくなりました。

(そのサーバーがNFSv4以降のみを使用するように構成されていると想定)

http://lxr.free-electrons.com/source/net/sunrpc/svc.c?v=3.14#L966

このスレッドの詳細については、このスレッドをご覧ください。

http://www.spinics.net/lists/linux-nfs/msg41053.html

したがって、あなたの設定:

MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
RPCNFSDARGS="-N 2 -N 3"

なしで動作するようになりましたrpcbind

NFSv4のみを使用する場合、これらのサービスはいずれも必要ありません。

/etc/rc.d/init.d/nfslock
/etc/rc.d/init.d/rpcgssd
/etc/rc.d/init.d/rpcidmapd
/etc/rc.d/init.d/rpcsvcgssd

rpc.idmapdNFSv4にのみ必要です。GSSは、Kerberosセキュリティにも必要です。どちらもオプションですが。
Irfan Latif

0

RedHatのから引用されたドキュメントが間違っていたとによって固定されてしまったバグ521215rpc.mountdまだに使用する必要がありますセットアップのNFSv4が、厳密には、それがその後実行する必要はありません。

  • nfsサーバ V2、V3、V4、V4.1:NFSのすべてのバージョンについて
  • rpcbind/ portmapperサーバー、厳密にはNFS <= v3のみ。しかし、NFS v4の場合も、LinuxカーネルNFSサーバーは自身を登録しようとし、rpcbind実行されていない場合は起動に失敗します。
  • rpc.mountdサーバー、厳密にはNFS <= 3のみ。ただし、LinuxカーネルがNFS v4を使用して、接続しているクライアントが接続を許可されているかどうかをチェックするため、NFS v4の場合も同様です。
  • nfslock:NFSのみのサーバー <= v3
  • rpc.idmapd:NFS v4のオプションサーバー(および古いクライアント
  • rpc.quotad:ディスククォータを使用するサーバー
  • rpc.statd:NFSのみのサーバー <= v3

Kerberos(sec=krb/ krb5i/ krb5p)を使用する場合、次のサービスが必要です。

  • rpc.gssdクライアント
  • rpc.svcgssdサーバー

rpc.それらが名前を含んでいる場合でもrpc_pipef、Linuxカーネルとユーザースペースヘルパー間の通信にはLinuxカーネルの内部メカニズムを使用することに注意してください。そうrpcbindAKA portmapper彼らのために必要とされていません。


-3

rpcbindサービスを確認してください。動作が停止した場合は、nfsサービスを開始してください。

service rpcbind start
service nfs start

この答えは非常に低品質です。OPは、nfsv4以降、rpcbindは不要であると述べています。質問はすでに答えられています:それはカーネルのバグでした。
bgtvfr 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.