昨天下午有部分生产机器无法启动nfs服务;报错很是奇怪。于是一路顺藤摸瓜发现是rpcbind没能正常启动导致的nfs没能起来。
后来总结了两种办法:主要是ipv6的问题所导致的。
措施一:
报错内容
[root@BZ ~]# systemctl start rpcbind A dependency job for rpcbind.service failed. See 'journalctl -xe' for details. 查看错误
[root@BZ ~]# journalctl -xe-- Defined-By: systemd-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel-- -- Unit session-3.scope has begun starting up.Dec 26 21:34:26 BZ chronyd[490]: System clock wrong by -1.090838 seconds, adjustment started Dec 26 21:35:31 BZ chronyd[490]: Selected source 61.216.153.107 Dec 26 21:35:31 BZ chronyd[490]: System clock wrong by 0.646329 seconds, adjustment started Dec 26 21:36:24 BZ polkitd[484]: Registered Authentication Agent for unix-process:2701:32282 (system bus name :1.29 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) Dec 26 21:36:24 BZ systemd[1]: rpcbind.socket failed to listen on sockets: Address family not supported by protocol #报错显示ip地址协议不支持 Dec 26 21:36:24 BZ systemd[1]: Failed to listen on RPCbind Server Activation Socket. #端口监听失败 -- Subject: Unit rpcbind.socket has failed -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit rpcbind.socket has failed. -- -- The result is failed Dec 26 21:36:24 BZ systemd[1]: Dependency failed for RPC bind service.
于是谷歌看了一下;发现是ipv6没开启导致的;修改/etc/sysctl.d/sysctl.conf
[root@BZ ~]# less /etc/sysctl.conf | grep 'net.ipv6'net.ipv6.conf.all.disable_ipv6 = 1net.ipv6.conf.default.disable_ipv6 = 1net.ipv6.conf.lo.disable_ipv6 = 1
[root@BZ ~]# sysctl -p #重新加载一下配置;临时生效
[root@BZ ~]# systemctl start rpcbind #重启rpcbind服务
[root@BZ ~]# systemctl start nfs #重启nfs服务 再挂载nfs文件就ok了。 措施二:
[root@BZ ~]# find /etc/ -name '*rpcbind.socket*' 找到这个socket文件,并用vim编译器编辑它。
[Unit]Description=RPCbind Server Activation Socket[Socket]ListenStream=/var/run/rpcbind.sockListenStream=[::]:111 #果然监听了ipv6地址,将这一行注释即可 ListenStream=0.0.0.0:111 BindIPv6Only=ipv6-only [Install] WantedBy=sockets.target
重载一下再启动
[root@BZ ~]# systemctl daemon-reload [root@BZ ~]# systemctl restart rpcbind.socket [root@BZ ~]# systemctl start nfs 再挂载远程nfs即可。