标签:centos6.4 nfs rpc.mountd svc_tli_create inet6 tcp6
NFS服务启动时无法绑定ipv6地址
在测试NFS的时候,突然发生了从未有过的错误,故障信息如下,为此特地描述一下排错的过程,供同行参考:
info:
[root@node10 ~]# service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
[ OK ]
Stopping RPC idmapd: [ OK ]
Starting RPC idmapd: [ OK ]
Starting NFS daemon: rpc.nfsd: unable to create inet6 TCP socket: errno 97 (Address family not supported by protocol)
[ OK ]
analysis:
从上面的信息可以看出,nfs在启动的时候报错了。大致的意思是无法设置ipv6的套接字接口,其中这一句话很重要:
Address family not supported by protocol 。地址族不被nfs协议所支持。
到这里,就很奇怪了,nfs是支持ipv6协议的,而且系统就更不要说了,肯定支持ipv6协议。但是,在linux系统中一切功能都是模块组合而成,只不过可以将模块编译进内核或者编译成外挂式模块动态加载。因此,想到这里就提出一个问题,是不是ipv6的模块没有加载,接着就进行下面的检查:
[root@node10 ~]# ifconfig eth0 | grep inet
inet addr:172.16.1.20 Bcast:172.16.1.255 Mask:255.255.255.0
[root@node10 ~]#
从上面的信息反馈可见,没有出现inet6的地址信息,可以初步断定ipv6的模块并没有编译进内核,那就应该是动态加载,而此处没有信息,那就说明可能没有动态加载成功。
[root@node10 ~]# cd /proc/sys/
[root@node10 sys]# ls
abi crypto debug dev fs kernel net sunrpc vm
[root@node10 sys]# cd net
[root@node10 net]# ls
core ipv4 netfilter unix
[root@node10 net]#
从上面的的信息可见,在/proc/sys/net/目录中没有出现ipv6的信息,再一次说明ipv6的模块加载确实出现了问题,因为如果成功加载,则在内核的信息中是可以看到有一个ipv6的目录存在
[root@node10 net]# lsmod | grep ipv6
ipv6 322541 0
从上面的信息可见,ipv6模块似乎在开机的时候默认是加载的,但是从前面的检查可知并没有生效,这是什么原因呢? 紧接着进行下面的检查:
[root@node10 net]#
[root@node10 net]# cd /etc/modprobe.d/
[root@node10 modprobe.d]# ls
anaconda.conf blacklist.conf dist-alsa.conf dist.conf dist-oss.conf ipv6.conf openfwwf.conf
[root@node10 modprobe.d]# cat ipv6.conf
# Anaconda disabling ipv6
options ipv6 disable=1
从上面的ipv6.conf中的信息可见ipv6的功能被disable了,到此问题算是找到了。也就是说在启动的时候虽然加载了ipv6的模块,但是给的参数是disable=1,表示关闭ipv6的功能,所以导致了ipv6的功能并没有生效。
问题找到后,就要进行处理了:
[root@node10 modprobe.d]#
[root@node10 modprobe.d]# sed -i ‘s/1/0/‘ ipv6.conf
[root@node10 modprobe.d]# cat ipv6.conf
# Anaconda disabling ipv6
options ipv6 disable=0
[root@node10 modprobe.d]#
[root@node10 modprobe.d]# lsmod | grep ipv6
ipv6 322541 0
[root@node10 modprobe.d]# modprobe -r ipv6
[root@node10 modprobe.d]# lsmod | grep ipv6
[root@node10 modprobe.d]# modprobe ipv6
[root@node10 modprobe.d]# lsmod | grep ipv6
ipv6 322541 134
[root@node10 modprobe.d]#
从上面的步骤可知,将disable的改为了0,表示启用。然后卸载模块重新加载一次(也可以重启系统),加载成功后,再次验证此前的判断:
[root@node10 modprobe.d]# ifconfig eth0 | grep inet
inet addr:172.16.1.20 Bcast:172.16.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fee9:3560/64 Scope:Link
[root@node10 modprobe.d]#
[root@node10 modprobe.d]# cd /proc/sys/net/
[root@node10 net]# ls
core ipv4 ipv6 netfilter unix
[root@node10 net]#
从上面的信息可见,此前没有出现的预判信息,这里已经出现了,因此表示ipv6功能已经成功启用。接下来再次重启nfs服务:
[root@node10 net]# service nfs restart
Shutting down NFS daemon: [ OK ]
Shutting down NFS mountd: [ OK ]
Shutting down NFS quotas: [ OK ]
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Stopping RPC idmapd: [ OK ]
Starting RPC idmapd: [ OK ]
Starting NFS daemon: [ OK ]
[root@node10 net]#
ok,到此,不再有nfs的报错信息,问题解决。
本文出自 “生死如梦莫多情” 博客,请务必保留此出处http://mingyang.blog.51cto.com/2807508/1584675
标签:centos6.4 nfs rpc.mountd svc_tli_create inet6 tcp6
原文地址:http://mingyang.blog.51cto.com/2807508/1584675