云上  centos 搭建 NFS服务器搭建与配置

   日期:2024-12-26    作者:tjskytd 移动:http://3jjewl.riyuangf.com/mobile/quote/37603.html

搭建背景

云上  centos 搭建 NFS服务器搭建与配置

项目已经上线了,最初架构没有文件服务器一说,因此静态资源都是放在了本地目录里

 

上线后又增加了一台服务器做了负载均衡, 这样的话用户在两台服务器之间上传下载文件是一定无法访问到的,有可能存储到A 也有可能存储到B ,有可能访问A有可能访问B ;

 

客户又不想再买文件服务器,那么只能做一个文件共享了; 通读下文后再进行配置

https://cloud.tencent.com/developer/article/1008142

https://zhuanlan.zhihu.com/p/81752517

服务器A  服务器B 

环境说明:

服务端配置

1.关闭防火墙

2.关闭selinux

临时关闭

永久关闭

重启后配置生效

3.服务端安装NFS软件

4.编辑参数exports

表示允许172.27.34.0和172.27.9.0两个网段的服务器访问,若对所有ip地址都可以访问则可设置为*:

若要指定特定ip,配置如下:

典型参数说明

no_all_squash和root_squash为默认设置,前者表示客户端访问用户先与服务器端本机用户匹配,匹配失败后再映射为匿名用户或用户组,后者表示root用户也映射为匿名用户或用户组。

5.新建共享目录并修改权限

6.启动服务并设置为开机启动

7.加载并查看配置

加载配置

查看

客服端配置

1.安装nfs软件包

centos:

ubuntu:

2.新建挂载点

3.检查共享目录

5.开启自动挂载

centos和ubuntu配置相同

测试

遇到问题1:

 



配置过程中会涉及到的问题说明:

1.修改了/etc/exports,并不需要重启NFS服务,只要用exportfs重新扫描一次/etc/exports,并且重新加载即可。

exportfs-a        全部挂载或卸载/etc/exports的设定

exportfs-r        重新挂载/etc/exports里面的设定,也同步更新/etc/exports和/var/lib/nfs/xtab里面的内容

exportfs-u        卸载某一目录

-v 参数表示可视化显示

常用exportfs -rv     # 重新export一次

         exportfs -au     # 全部卸载

2. 可以给多个客户端不同的授权,如

/home192.168.2.11(rw,sync,no_root_squash,no_all_squash)

/home192.168.2.7(ro,sync)

服务端端执行exportfs -rv 即可生效。【注:客户端也需要重新挂载才能看到起作用】

3.文件系统无法卸载时候,用fuser-m -v /PATH/TO/FILES查看哪个用户在访问。

4.客户端在挂载的时候遇到的一个问题如下,可能是网络不太稳定,NFS默认是用UDP协议,换成TCP协议即可:

mount -tnfs 192.168.2.10:/home /files  -oproto=tcp -o nolock

5.如果有客户端通过RPC连接在服务器上,那么主机想要关机是不可能的。因此如果确实需要关机,请先停止nfs-utils、rpcbind服务。

有时候我们需要umount某个挂载目录时会遇到如下问题:

通过这条命令查看:

-v 表示 verbose 模式。进程以 ps 的方式显示,包括 PID、USER、COMMAND、ACCESS 字段

-m 表示指定文件所在的文件系统或者块设备(处于 mount 状态)。所有访问该文件系统的进程都被列出。

如上所示,有两个进程占用了,将其kill掉,再重新取消挂载。

问题起因:

在配置好一台NFS服务器,建立好分享目录,刷新配置以后,在另一台客户机中使用showmount -e 出现报错:

clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

 

问题原因:

服务端的防火墙上默认没有开启nfs服务相应的端口

 

解决办法:

1.简单粗暴地关闭防火墙

systemctl stop firewalld

如果开启了iptables的话,也是一样的,iptables的策略里也默认不会为nfs服务开启需要的端口

systemctl stop iptables

2.在防火墙上开启端口

在设置了防火墙的环境中使用NFS,需要在防火墙上打开如下端口:

1. portmap 端口 111 udp/tcp;
2. nfsd 端口 2049 udp/tcp;
3. mountd 端口 "xxx" udp/tcp
系统 RPC服务在 nfs服务启动时默认会为 mountd动态选取一个随机端口(32768--65535)来进行通讯,我们可以通过编辑/etc/services 文件为 mountd指定一个固定端口:
# vim /etc/services
在末尾添加
mountd 1011/udp
mountd 1011/tcp
wq退出保存该文件


# stopsrc -s rpc.mountd
# startsrc -s rpc.mountd
# exportfs -a
# rpcinfo -p Hostname
现在我们会发现 mountd已经和端口 1011绑定了。

另外,nfs中需要通讯的服务还有 rpc.lockd和 rpc.statd,其中对lockd我们可以用类似的方法来指定固定端口,
# vim /etc/services
添加
lockd 35000/ucp
lockd 35000/tdp


# stopsrc -s rpc.lockd
# startsrc -s rpc.lockd
# exportfs -a
nfs客户端mount文件系统
# rpcinfo -p Hostname

但 rpc.statd无法通过该方法来指定端口,它只能使用随机端口,如有必要,在防火墙上要根据下面命令的显示来开放随机端口:

# no -a |grep ephemeral
tcp_ephemeral_high = 65535
tcpp_ephemeral_low = 32768
udp_ephemeral_high = 65535
udp_ephemeral_low = 32768


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号