您的位置:首页 > 其它

nfs客户端挂载出错 mount.nfs access denied by server while mounting

2017-06-01 20:18 465 查看
原文地址: http://zhaochj.blog.51cto.com/368705/1719640 点击打开链接

在生产环境中一系统因架构变化后,把一模块原有的单节点扩展成了两个节点,前端采用用nginx做负载的架构,而这两个节点需要一个公共的存储来存放用户上传的图片,用户的并发不高,再因原有业务模块是从nginx主机上剥离出来的,在原nginx主机上有“img”这个存储图片的目录,所以考虑在nginx主机上安装nfs服务,再在两个节点上同点挂载“img”目录实现集群节点对图片目录的访问。

NFS服务的安装比较简单,但在上生产环境时还是应该在自己的测试环境先验证,这里把安装过程记录如下:

服务端配置

NFS服务端系统环境:

如果系统没有安装nfs服务,运行以下命令安装:

配置共享目录:

#此文件的配置格式为:<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]

#注释

insecure 当mount监听端口大于1024时需要使用此参数

rw read-write,可读写;

sync:文件同时写入硬盘和内存;

async:文件暂存于内存,而不是直接写入内存;

no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。

root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;

all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;

anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;

anongid:匿名用户的GID值。

重新加载/etc/exports的配置:

查看本机共享的目录:

客户端配置

客户端系统环境:

在客户端只需要安装nfs-client端即可,如果没有安装请使用以下命令进行安装:

列出nfs服务端共享的目录:

因生产环境是需要把nfs服务器的tomcat用户家目录下的img目录共享出来后让现有的两个节点的tomcat用户来挂载到家目录的img目录下,所以需要先切换到tomcat用户下创建img目录,如下:

挂载nfs的共享目录:

root@rabbit-0:~# mount -t nfs 192.168.207.129:/home/tomcat/img /home/tomcat/img -o proto=tcp -o nolock

mount.nfs: access denied by server while mounting 192.168.207.129:/home/tomcat/img

原因:在centos 6 x64的系统下使用的是NFSv4,在/var/log/messages中能看到nfs启动时的日志输出:

使用NFSv4时,在nfs服务端做如下操作:

重启服务:

再在客户端再次尝试挂载:

成功挂载。

测试:直接用root用户创建一个文件,但这个文件的权限还是500的,在服务端uid为500的用户是tomcat,这正在我需要的效果。

最后让此目录自动在主机重启后自动挂载,我这里直接写入到/etc/rc.local里:

重启测试一下能否成功挂载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: