NFS是一种基于TCP/IP传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。
对于大多数负载均衡群集来说,使用NFS协议来共享数据存储是比较常见的做法,NFS也是NAS存储设备必然支持的一种协议。但是由于NFS没有用户认证机制,而且数据在网络上明文传输,所以安全性很差,一般只能在局域网中使用。
NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。所以需要安装 nfs-utils、rpcbind 软件包来提供 NFS共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。
nfs使用tcp/udp的2049端口;rpcbind使用tcp/udp的111端口。
1.关闭防火墙和selinux,下载nfs相关软件
//关闭防火墙
[root@localhost1 ~]# systemctl stop firewalld
[root@localhost1 ~]# setenforce 0
//下载nfs相关软件
[root@localhost1 ~]#yum -y install nfs-utils
[root@localhost1 ~]#yum -y install rpcbind
2.准备共享目录(如果允许客户端在共享目录写入文件,则需要给共享目录授予相关的写权限)
[root@localhost1 ~]#mkdir /share
[root@localhost1 ~]#chmod 777 share (使匿名用户也可读写文件)
3.修改共享策略配置文件 /etc/exports
NFS 的配置文件为 /etc/exports
配置字段格式为:
共享的目录 客户机地址或网段(权限选项1,权限选项2,...)
权限选项 | 解释 |
---|---|
rw | 允许读写 |
ro | 只读 |
sync | 数据同步写入到内存与硬盘中 |
async | 数据先写入内存缓冲区,根据系统策略再写入硬盘 |
no_root_squash | 当客户机以root身份访问时赋予本地root权限 |
root_squash (默认存在) |
客户机用root用户访问该共享目录时,将root用户映射成匿名用户(nfsnobody) |
all_squash | 所有访问用户都映射为匿名用户或用户组 |
subtree_check (默认存在) |
若输出目录是一个子目录,则nfs服务器将检查其父目录的权限 |
no_subtree_check | 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率 |
//创建一个共享文件目录
[root@localhost1 ~]#mkdir /share
//修改nfs共享文件配置
[root@localhost1 ~]#vim /etc/exports
/share 192.168.116.0/24(rw,async,no_root_squash,no_subtree_check)
--使/share目录作为192.168.116.0网段的共享目录,赋予以上权限
4.启动rpcbind和nfs服务(手动加载NFS共享服务时,应该先启动rpcbind,再启动nfs)
[root@localhost1 ~]#systemctl start rpcbind
[root@localhost1 ~]#systemctl start nfs
5.查看本机发布的nfs共享目录
[root@localhost1 ~]#showmount -e
Export list for localhost1:
/share 192.168.116.0/24
6.客户端同样关闭防火墙和selinux,下载nfs相关软件
//关闭防火墙
[root@localhost1 ~]# systemctl stop firewalld
[root@localhost1 ~]# setenforce 0
//下载nfs相关软件
[root@localhost1 ~]#yum -y install nfs-utils
[root@localhost1 ~]#yum -y install rpcbind
7.挂载NFS共享目录
//暂时挂载
[root@localhost ~]# mount 192.168.116.10:/share /myshare
//永久挂载
[root@localhost ~]# vim /etc/fstab
#添加
192.168.116.10:/share /myshare nfs defaults,_netdev 0 0
^
表示挂载设备需要网络
8.测试共享目录是否作用
//在服务端共享目录新建文件
[root@localhost1 ~]#cd /share/
[root@localhost1 share]#touch test
//查看客户端共享目录
[root@localhost ~]# ls /myshare/
test
9.修改配置后重新生效
(1)服务端重启服务,客户端强制解挂再重新挂载(过于繁琐)
(2)服务端使用命令刷新配置文件(推荐)
//刷新配置
[root@localhost1 share]#exportfs -r
//查看nfs共享配置
[root@localhost1 share]#exportfs -v
/share 192.168.116.0/24(async,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
//搭配使用
[root@localhost1 share]#exportfs -rv
exporting 192.168.116.0/24:/share