根据Red Hat docs 'rpcbind' 不再需要:
因为协议支持已被纳入 v4 协议,所以 NFSv4 与 portmap、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 服务器内核模块中的一个错误。它于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
因此,您的配置:
现在应该可以在没有
rpcbind
.当您仅使用 NFSv4 时,不需要这些服务:
RedHat 引用的文档是错误的,并由错误 521215 修复:
rpc.mountd
仍然必须用于设置NFSv4,但严格来说,此后不需要运行。nfs
:适用于所有 NFS 版本的服务器:v2、v3、v4、v4.1rpcbind
/portmapper
:服务器,仅适用于 NFS <= v3。但也适用于 NFS v4,因为 Linux 内核 NFS 服务器尝试注册自身,如果rpcbind
未运行则无法启动。rpc.mountd
: Server,仅适用于 NFS <=3。但对于 NFS v4,Linux 内核也使用它来检查是否允许连接的客户端连接。nfslock
:服务器仅适用于 NFS <= v3rpc.idmapd
: NFS v4的可选服务器(和旧客户端)rpc.quotad
:使用磁盘配额的服务器rpc.statd
:服务器仅适用于 NFS <= v3使用 Kerberos (
sec=krb
/krb5i
/krb5p
) 时,需要以下服务:rpc.gssd
:客户rpc.svcgssd
:服务器请注意,即使它们
rpc.
以自己的名字命名,它们也使用 Linux 内核内部机制rpc_pipef
在 Linux 内核和用户空间助手之间进行通信;所以他们不需要rpcbind
AKA 。portmapper
检查 rpcbind 服务。如果它停止工作启动,然后尝试启动 nfs 服务。