如果不运行 rpcbind,NFSv4 就无法为 nfsd 设置任何套接字

如果不运行 rpcbind,NFSv4 就无法为 nfsd 设置任何套接字

根据Red Hat 文档不再需要“rpcbind”:

由于协议支持已纳入 v4 协议,因此 NFSv4 无需与 portmap、rpc.lockd 和 rpc.statd 守护进程交互。NFSv4 监听众所周知的 TCP 端口 2049,因此无需与 portmap 交互。安装和锁定协议已纳入 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

答案1

这是 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

答案2

引用的 RedHat 文档有误,已由错误 521215rpc.mountd仍然必须习惯设置NFSv4,但严格来说,它不需要在此之后运行。

  • nfs服务器对于所有版本的 NFS:v2、v3、v4、v4.1
  • rpcbind/ portmapper服务器rpcbind,严格仅适用于 NFS <= v3。但也适用于 NFS v4,因为 Linux 内核 NFS 服务器会尝试注册自身,但如果未运行,则无法启动。
  • rpc.mountd服务器,严格仅适用于 NFS <=3。但也适用于 NFS v4,因为 Linux 内核使用它来检查连接客户端是否被允许连接。
  • nfslock服务器仅适用于 NFS <= v3
  • rpc.idmapd: 选修的服务器(及以上版本)客户)适用于 NFS v4
  • rpc.quotad服务器使用磁盘配额
  • rpc.statd服务器仅适用于 NFS <= v3

sec=krb使用 Kerberos ( / krb5i/ )时krb5p需要以下服务:

  • rpc.gssd客户
  • rpc.svcgssd服务器

请注意,即使它们带有rpc.名称,它们也使用 Linux 内核内部机制rpc_pipef在 Linux 内核和用户空间助手之间进行通信;因此它们不需要rpcbindAKA 。portmapper

答案3

检查 rpcbind 服务。如果它停止工作,请启动,然后尝试启动 nfs 服务。

service rpcbind start
service nfs start

相关内容