Ubuntu 14.04中rpcbind导致服务器重启超时的解决咨询
解决Ubuntu 14.04升级后NFS服务器重启超时(rpcbind等待过久)的问题
遇到过一模一样的情况——从12.04升14.04后,NFS服务器重启直接从3分钟以内变8分钟+,查来查去就是rpcbind在那卡着。给你几个亲测有效的解决思路:
1. 调整rpcbind的超时配置
Ubuntu 14.04里的rpcbind默认没有设置停止超时,导致它会无限等待依赖服务。编辑配置文件:
sudo nano /etc/default/rpcbind
添加或修改这一行:
RPCBIND_OPTS="-w -t 5"
-t 5表示设置5秒超时,到点就强制退出。保存后重启rpcbind服务生效:
sudo service rpcbind restart
2. 强制卸载NFS挂载点(避免系统等待挂载超时)
重启时如果有未正常卸载的NFS共享,系统会默认等很久超时。可以在关机流程里提前强制卸载:
- 创建一个关机脚本:
sudo nano /etc/rc0.d/S01-unmount-nfs
写入内容:
#!/bin/sh umount -f -a -t nfs umount -f -a -t nfs4 exit 0
- 给脚本加执行权限:
sudo chmod +x /etc/rc0.d/S01-unmount-nfs
这样系统进入关机流程时会先强制卸载所有NFS挂载,不会卡在这一步。
3. 调整NFS服务的停止顺序与超时
升级后upstart的服务依赖可能乱了,rpcbind会等NFS服务完全停止才退出。可以修改NFS服务的停止逻辑:
比如针对NFS服务端,编辑/etc/init.d/nfs-kernel-server,找到stop()函数,添加超时强制终止的逻辑:
stop() { echo -n "Stopping NFS kernel daemon: " start-stop-daemon --stop --quiet --oknodo --signal TERM --pidfile /var/run/nfsd.pid # 添加超时强制杀死进程 timeout 10s killall -TERM nfsd 2>/dev/null echo "nfsd." ... }
客户端的话修改/etc/init.d/nfs-common的对应部分即可。
4. 查日志定位具体等待原因
如果上面的方法没解决,先看日志找根源:
# 查看上一次重启的系统日志 journalctl -b -1 | grep rpcbind # 或者看syslog cat /var/log/syslog | grep rpcbind
日志里会显示rpcbind在等什么——比如是某个远程NFS服务器没响应,还是某个依赖服务(比如portmap)没停,针对性处理就行。
5. 更新rpcbind到最新版本
有时候是版本bug导致的超时,直接更新rpcbind:
sudo apt-get update && sudo apt-get install --only-upgrade rpcbind
先从查日志开始,定位清楚问题再动手,一般调整完rpcbind超时和NFS挂载卸载逻辑,重启时间就能回到正常水平。
内容的提问来源于stack exchange,提问作者tink
相关产品推荐
相关产品推荐

