![如果不运行 rpcbind,NFSv4 就无法为 nfsd 设置任何套接字](https://linux22.com/image/803550/%E5%A6%82%E6%9E%9C%E4%B8%8D%E8%BF%90%E8%A1%8C%20rpcbind%EF%BC%8CNFSv4%20%E5%B0%B1%E6%97%A0%E6%B3%95%E4%B8%BA%20nfsd%20%E8%AE%BE%E7%BD%AE%E4%BB%BB%E4%BD%95%E5%A5%97%E6%8E%A5%E5%AD%97.png)
根据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 文档有误,已由错误 521215:rpc.mountd
仍然必须习惯设置NFSv4,但严格来说,它不需要在此之后运行。
nfs
:服务器对于所有版本的 NFS:v2、v3、v4、v4.1rpcbind
/portmapper
:服务器rpcbind
,严格仅适用于 NFS <= v3。但也适用于 NFS v4,因为 Linux 内核 NFS 服务器会尝试注册自身,但如果未运行,则无法启动。rpc.mountd
:服务器,严格仅适用于 NFS <=3。但也适用于 NFS v4,因为 Linux 内核使用它来检查连接客户端是否被允许连接。nfslock
:服务器仅适用于 NFS <= v3rpc.idmapd
: 选修的服务器(及以上版本)客户)适用于 NFS v4rpc.quotad
:服务器使用磁盘配额rpc.statd
:服务器仅适用于 NFS <= v3
sec=krb
使用 Kerberos ( / krb5i
/ )时krb5p
需要以下服务:
rpc.gssd
:客户rpc.svcgssd
:服务器
请注意,即使它们带有rpc.
名称,它们也使用 Linux 内核内部机制rpc_pipef
在 Linux 内核和用户空间助手之间进行通信;因此它们不需要rpcbind
AKA 。portmapper
答案3
检查 rpcbind 服务。如果它停止工作,请启动,然后尝试启动 nfs 服务。
service rpcbind start
service nfs start