一、NFS简介

        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端口。

二、NFS原理

  • 首先服务器端启动RPC服务,并开启111端口
  • 启动NFS服务,并向RPC注册端口信息
  • 客户端启动RPC服务,向服务端的RPC(portmap)服务请求服务端的NFS端口
  • 服务端的RPC服务反馈NFS端口信息给客户端。
  • 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

三、配置实现NFS文件共享存储

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

Logo

更多推荐