【linux 】服务器异常down 机 NFS挂载失败

简介: 工作中遇到的一个案例,由于rac1 异常dang 机导致nfs 挂载失败,具体环境如下nfs server端 als_mybak4 10.251.134.205nfs client端 rac1       10.
工作中遇到的一个案例,由于rac1 异常dang 机导致nfs 挂载失败,具体环境如下
nfs server端 als_mybak4 10.251.134.205
nfs client端 rac1       10.250.7.225
在rac1上使用挂载nfs 失败 使用showmount查看,报timeout错误!
root@rac1#showmount -e 10.251.134.205
mount clntudp_create: RPC: Port mapper failure - RPC: Timed out

在nfs服务端查看端口信息
root@als_mybak4 # netstat -ltpn | more
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:42251               0.0.0.0:*                   LISTEN      6451/rpc.mountd     
tcp        0      0 0.0.0.0:875                 0.0.0.0:*                   LISTEN      6435/rpc.rquotad    
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1361/rpcbind        
tcp        0      0 0.0.0.0:51954               0.0.0.0:*                   LISTEN      1379/rpc.statd      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1514/sshd           
tcp        0      0 0.0.0.0:57949               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:20351               0.0.0.0:*                   LISTEN      1578/python         
tcp        0      0 0.0.0.0:2049                0.0.0.0:*                   LISTEN      -                   
tcp        0      0 :::111                      :::*                        LISTEN      1361/rpcbind        
tcp        0      0 :::22                       :::*                        LISTEN      1514/sshd           
tcp        0      0 :::38359                    :::*                        LISTEN      -                   
tcp        0      0 :::12865                    :::*                        LISTEN      26721/netserver     
tcp        0      0 :::42918                    :::*                        LISTEN      1379/rpc.statd  
运行nfs所需要的后台进程:
 rpc.nfsd管理clinet是否有权限登录,以及判别登录者的uid等;
 rpc.mountd读取/etc/exports的权限,对文件访问权限进行控制;
 rpc.lockd文件的互斥锁,保证文件在同一时间只有一个人访问,需要nfslockd服务;
 rpc.statd检查文件的一致性,需要nfslockd服务。

网络方面的acl配置
3970 permit tcp host 10.250.7.225 host 10.251.134.205 eq sunrpc
3980 permit tcp host 10.250.7.225 host 10.251.134.205 eq 2049
3990 permit tcp host 10.250.7.225 host 10.251.134.205 eq 38520
4000 permit tcp host 10.250.7.225 host 10.251.134.205 eq sunrpc
4010 permit tcp host 10.250.7.225 host 10.251.134.205 eq 2049
4020 permit tcp host 10.250.7.225 host 10.251.134.205 eq 38520
服务器上面的端口和网络配置的ACL的端口不对应,造成了两个服务器之间不可连接,从而超时!
这里还要说说NFS 
        网络文件系统(NFS,Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,客户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。因为NFS支援的功能很多,而不同的功能会使用不同的方式来启动,每启动一个功能就会启用一些port来传输资料!因此, NFS的功能所对应的port是不固定的,而是采用随机取用一些未被使用的小于1024的埠口来作为传输之用。此时我们就得需要远端程序呼叫(RPC)的服务。RPC最主要的功能就是在指定每个NFS功能所对应的port number ,并且回报给客户端,让客户端可以连结到正确的埠口上去。那RPC又是如何知道每个NFS的埠口呢?这是因为当伺服器在启动NFS时会随机取用数个埠口,并主动的向RPC注册,因此RPC可以知道每个埠口对应的NFS功能,然后RPC又是固定使用port 111 来监听客户端的需求并回报客户端正确的埠口!
        portmap 进程的主要功能是把RPC程序号转化为Internet的端口号
当一个RPC服务器启动时,会选择一个空闲的端口号并在上面监听(每次启动后的端口号各不相同),同时它作为一个可用的服务会在portmap进程注册。一个RPC服务器对应惟一一个RPC程序号,RPC服务器告诉portmap进程它在哪个端口号上监听连接请求和为哪个RPC程序号提供服务。经过这个过程,portmap进程就知道了每一个已注册的RPC服务器所用的Internet端口号,而且还知道哪个程序号在这个端口上是可用的。portmap进程维护着一张RPC程序号到Internet端口号之间的映射表,它的字段包括程序号、版本号、所用协议、端口号和服务名,portmap进程通过这张映射表来提供程序号-端口号之间的转化功能。如果portmap进程停止了运行或异常终止,那么该系统上的所有RPC服务器必须重新启动。首先停止NFS服务器上的所有NFS服务进程,然后启动portmap进程,再启动服务器上的NFS进程。但portmap只在第一次建立连接的时候起作用,帮助网络应用程序找到正确的通讯端口,但是一旦这个双方正确连接,端口和应用就绑定,portmap也就不起作用了。但对其他任何第一次需要找到端口建立通讯的应用仍然有用。
nfs 服务器端和客户端连接的步骤:
1 客户端会向伺服器端的RPC (port 111)发出NFS档案存取功能的询问要求;
2 伺服器端找到对应的已注册的NFS daemon埠口后,会回报给客户端;
3 客户端了解正确的埠口后,就可以直接与NFS daemon来连线。
        由于NFS的各项功能都必须要向RPC来注册,如此一来RPC才能了解NFS这个服务的各项功能之port number, PID, NFS在主机所监听的IP等等,而客户端才能够透过RPC的询问找到正确对应的埠口。也就是说,NFS必须要有RPC存在时才能成功的提供服务,因此我们称NFS为RPC server的一种。
       我的环境是客户端从 服务器端的111端口获取nfs 正在监听的端口,再向服务器端发起连接的时候被acl访问控制限制导致不可连接!重新配置acl的端口号,或者将10.250.7.225 到 10.251.134.205 之间的ip 全部端口开放~!这样当下次rac1 down机 重启之后,就不会因为网络ACL的端口限制而不能正常使用nfs服务了~!
 
目录
相关文章
|
22天前
|
Linux
在Linux中,如何挂载远程NFS共享或iSCSI目标?
在Linux中,如何挂载远程NFS共享或iSCSI目标?
|
4月前
|
存储 Linux Windows
Linux挂载硬盘的详细步骤与实例
Linux挂载硬盘的详细步骤与实例
139 0
|
Linux Python Windows
Linux 系统中 挂载 U 盘 方法
在 Linux 系统中,与 Windows 不一样的是,无法自动识别加载外部设备例如 U 盘、硬盘;例如用 PyCharm 或 IDEA 打开 U 盘中的内容,在没有完成挂载操作之前是不可行的 如果想实现上面操作,第一步,需要对 U 盘等外接移动设备完成 挂载操作
Linux 系统中 挂载 U 盘 方法
|
Linux
linux创建挂载服务器,实现文件共享
linux创建挂载服务器,实现文件共享
92 0
|
存储 前端开发 网络协议
服务器(linux)磁盘挂载nfs
笔者项目中此前有这么个需求,需要支持文件进行预览,文件的存储位置都在后端服务器上,想要支持预览是比较困难的(若是在前端服务器上则比较方便),因为无法做到跨服务器之间的静态文件预览,然后解决这个问题的思路就设定在了将后端服务器的文件所在位置挂载到前端服务器上,然后再使用nginx的反向代理,将文件地址代理出去,这样就可以实现文件预览功能了。方案确定以后就是技术选型了,最后确定使用了nfs来解决服务器之间的磁盘挂载,当然不止nfs可以实现,其他也可以。这里对nfs的使用做一次总结。
500 0
服务器(linux)磁盘挂载nfs
|
Linux 内存技术
Linux NFS挂载时候解决的记录
Linux NFS挂载时候解决的记录
195 0
Linux NFS挂载时候解决的记录
|
网络协议 Linux
linux下配置nfs服务器以及设置自动挂载(以centos6.7为例)
NFS(百度百科):NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。
2578 0
|
Linux 块存储
Linux 卸载挂载的磁盘时提示正忙
解决方法。 用fuser查找哪个进程占用了该磁盘:  fuser -mv  /var/lib/ceph/osd/ceph-1                     关闭该进程:  kill -9 5979
1754 0