web-dev-qa-db-ja.com

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

Red Hat docs によると、「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
8
HTF

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

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

(サーバーが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
10

RedHatからの引用されたドキュメントは間違っていて、修正されました Bug 521215rpc.mountdは、まだsetupNFSv4に使用する必要がありますが、厳密に言えば、その後実行する必要はありません。

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

Kerberos(sec=krb/krb5i/krb5p)以下のサービスが必要です:

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

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

0
pmhahn