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

NFS服务器搭建与配置

搭建背景

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

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

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

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

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

服务器A  服务器B 

环境说明:

主机名

操作系统版本

IP地址

说明

centos7

centos7

172.27.9.181

NFS服务器

web

centos7

172.27.9.17

客户端

ubuntu

Ubuntu 14.04.5

172.27.9.227

客户端

ubuntu02

Ubuntu 16.04.5

172.27.34.37

客户端

服务端配置

1.关闭防火墙

[root@centos7 ~]# systemctl stop firewalld.service
[root@centos7 ~]# systemctl disable firewalld.service
[root@centos7 ~]# firewall-cmd --state
not running

2.关闭selinux

临时关闭

[root@centos7 ~]# setenforce 0

永久关闭

[root@centos7 ~]# sed -i 's/^ *SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

重启后配置生效

[root@centos7 ~]# sestatus 
SELinux status:                 disabled

3.服务端安装NFS软件

[root@centos7 /]# yum -y install  nfs-utils

4.编辑参数exports

[root@centos7 /]# view /etc/exports
/backup 172.27.34.0/24(rw,sync,no_root_squash)
/backup 172.27.9.0/24(rw,sync,no_root_squash)

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

/backup  *(rw,sync,no_root_squash)

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

/backup  172.27.9.17(rw,sync,no_root_squash) 172.27.9.227(rw,sync,no_root_squash) 172.27.34.37(rw,sync,no_root_squash)

典型参数说明

ro:共享目录只读
rw:共享目录可读可写
all_squash:所有访问用户都映射为匿名用户或用户组
no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组
root_squash(默认):将来访的root用户映射为匿名用户或用户组
no_root_squash:来访的root用户保持root帐号权限
secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器
insecure:允许客户端从大于1024的tcp/ip端口连接服务器
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
async:将数据先保存在内存缓冲区中,必要时才写入磁盘
wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率
no_wdelay:若有写操作则立即执行,应与sync配合使用
subtree_check :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限
no_subtree_check(默认) :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率

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

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

[root@centos7 backup]# mkdir /backup
[root@centos7 backup]# chmod -R 777 /backup/

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

[root@centos7 /]# systemctl enable rpcbind.service
[root@centos7 /]# systemctl enable nfs-server.service
[root@centos7 /]# systemctl start rpcbind.service
[root@centos7 /]# systemctl start nfs-server.service

7.加载并查看配置

加载配置

[root@centos7 ~]# exportfs -r

查看

[root@centos7 /]# exportfs 
/backup         172.27.34.0/24
/backup         172.27.9.0/24
[root@centos7 /]# exportfs -v
/backup         172.27.34.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/backup         172.27.9.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

客服端配置

1.安装nfs软件包

centos:

[root@web /]# yum -y install nfs-utils

ubuntu:

root@ubuntu:/# apt-get install nfs-common -y

2.新建挂载点

[root@web /]# mkdir /nfs

3.检查共享目录

[root@web nfs]# showmount -e 172.27.9.181
Export list for 172.27.9.181:
/backup 172.27.9.0/24,172.27.34.0/24

4.挂载共享目录

[root@web nfs]# mount -t nfs 172.27.9.181:/backup /nfs

s

5.开启自动挂载

centos和ubuntu配置相同

[root@web ~]# view /etc/rc.local
mount -t nfs 172.27.9.181:/backup /nfs
[root@web ~]# chmod 755 /etc/rc.local

测试

查看、新建和删除文件

NFS服务器搭建完成,测试正常。

参考https://cloud.tencent.com/developer/article/1501332

遇到问题1:

#9.卸载nfs
 #1.正常卸载
[root@backup-41 ~]# umount /data/w/
 #2.强制卸载
[root@backup-41 ~]# umount -lf /data/w/


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

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.nfs: /data: device is busy 问题

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

1
2
[root@localhost /]# umount /data/
umount.nfs: /data: device is busy

通过这条命令查看:

1
2
3
4
[root@localhost /]# fuser -m -v /data/
                     用户     进程号 权限   命令
/data/:              root       2798 ..c.. bash
                     root       2996 ..c.. su

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

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

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

1
2
3
4
[root@localhost /]# kill -9 2798
[root@localhost /]# kill -9 2996
[root@localhost /]# umount /data/
[root@localhost /]#
 

解决clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host) 问题的过程...

https://blog.csdn.net/weixin_30270889/article/details/97045168

问题起因:

在配置好一台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

当然也可以不开放 rpc.statd需要的随机端口,带来的影响就是如果 nfs连接中断(比如server或client宕掉了),系统将无法通过statd来恢复连接中断前的状态,而必须重新 mount该nfs文件系统。

 

原文地址:https://www.cnblogs.com/Amos-Turing/p/13838816.html