已整理完毕-nfs服务器配置与exports 配置文件详解
目录:
1、NFS文件系统介绍与端口
2、服务端安装软件包nfs-utils
3、创建共享目录
4、编辑exports配置文件
5、启动服务
6、/etc/exports 配置文件语法格式
NFS-Network File System , 网络文件系统
-用途:为客户机提供共享使用的文件夹
-协议:NFS(TCP/UDP 2049)、RPC(TCP/UDP 111)
所需软件包:nfs-utils
系统服务:nfs-server
# yum install nfs-utils
默认配置文件:
# ls /etc/exports
# mkdir -p /data/public #共享出public目录
# setfacl -m u:nfsnobody:rwx /data/public #设置用户nfsnobody 对/data/public 的ACL 权限:rwx
# cat /etc/exports #默认为空的
/data/public 10.10.0.0/24(rw) #网段还可以用【*】,表示所有网段,rw 表只读写,ro 表示只读
# systemctl start nfs-server.service
# systemctl enable nfs-server.service
# showmount -e 10.10.17.161 #重启完后,可以查看nfs服务器共享了哪些目录
# exportfs -rv #如果修改了/etc/exports 配置文件,此命令表示重读一遍/etc/exports,并生效
6、/etc/exports 配置文件语法格式
语法:
[共享的目录] [主机名1或IP地址1(参数1,参数2)] [主机名2或IP地址2(参数3,参数4)]
示例:
# cat /etc/exports
/data/public 10.10.0.0/16(rw,sync,insecure,all_squash,anonuid=1003,anongid=1003)
1)、授权网段或主机
a. 可以写网段:10.10.0.0/16
b. 可以写主机名:client.lab.com
c. 可以写域:*.lab.com
d. 可以所有,用【*】表示
2)、访问权限配置
ro ->表示只读
rw ->表示读写
3)、数据写入硬盘模式
async ->异步写入,将数据先保存在内存缓冲区中,必要时才写入磁盘
sync ->同步写入,将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
4)、客户端使用的端口
insecure ->允许客户端从大于1024的tcp/ip端口连接服务器;
secure ->限制客户端只能从小于1024的tcp/ip端口连接服务器;
5)、账户映射
首先安装完:nfs-utils 包后,会自动添加用户:nfsnobody,可以查看文件:/etc/passwd ;
root_squash(默认) ->如客户端登陆操作的是root用户,nfs服务器会将来访的root用户映射为匿名用户或用户组:nfsnobody ,如果是rw权限,就要求nfsnobody 对共享的目录有rw权限;
no_root_squash ->来访的root用户保持root帐号权限;
all_squash ->无论访问共享目录的用户身份如何,其权限将被镇压为匿名用户,同时它的UID和GID通常会变成nfsnobody账号身份
no_all_squash(默认) ->访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组: nfsnobody;
anonuid ->匿名用户UID设置值,可自行设置,但必须在/etc/passwd中存在;在多台客户端共享一个nfs目录时,可通过此参数使得不同的客户端写入的数据保持相同的用户权限
anongid ->匿名用户组
6)、其它参数
wdelay(默认) -> 检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;
no_wdelay ->若有写操作则立即执行,应与sync配合使用;
subtree_check(默认) ->若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
no_subtree_check ->即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
如果是写入/etc/fstab 配置文件:
# tail -1 /etc/fstab
10.10.17.161:/data/public /opt/nfs nfs defaults,_netdev 0 0 #一定要加_netdev,表示延迟加载,等待网络服务OK后,再挂载
nfs通信是使用udp或tcp协议进行的,上面的nfs环境是建立在nfs服务器防火墙关闭的情况下的搭建,即需要已经放通相关的端口,一般线上环境要求较高,会开启防火墙并授权一些策略来控制访问,由于nfs默认除了用111(portmapper使用,客户端向服务器发出NFS文件存取功能的询问请求)和2049(nfs使用)端口是固定的,其他的几个端口是随机的,因此需要在nfs服务器(192.168.56.101)上配置成固定的端口,再通过防火墙进行开放,步骤如下:
修改配置文件
# vim /etc/sysconfig/nfs
# vim /etc/sysconfig/nfs #在最后加上以下配置
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
重启服务
# systemctl restart rpcbind
# systemctl restart nfs
重新查看端口情况
# rpcinfo -p localhost #可看到端口已经使用固定的端口
接下来进行相关的防火墙开放,授权在客户端机器10.10.0.0/16上能访问
nfs之防火墙配置:
# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="tcp" port="111" accept"
# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="udp" port="111" accept"
# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="tcp" port="2049" accept"
# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="udp" port="2049" accept"
# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="tcp" port="30001-30004" accept"
# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="udp" port="30001-30004" accept"
# firewall-cmd --reload
# firewall-cmd --list-all
以上就是nfs实用的完整配置!