nfs共享文件存储


network filesystem;

为什么要使用 nfs?

nfs 共享存储_共享存储

如果userA上传文件通过负载均衡器上传到了web01,这个时候userB去下载file1又被负载均衡器分配到了web02

上面就找不到userA上传的资源了。

nfs 共享存储_nfs _02

使用了共享存储nfs之后,userA上传的文件到nfs中,那么这个时候userB不管是从哪台web中都可以访问到userA上传的资源。


nfs原理


首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口,RPC就会记录下这些端口,并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那么服务器端的RPC就会将之前记录的NFS端口信息告知客户端。如此客户端就会获取NFS服务器端的端口信息,就会以实际端口进行数据的传输了。

1)首先服务器端启动RPC服务,并开启111端口

2)服务器端启动NFS服务,并向RPC注册端口信息

3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口

4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

nfs 共享存储_共享存储_03


nfs的安装

环境准备


主机名wanlan角色
web0110.0.0.7172.16.1.7nfs客户端
web0210.0.0.8172.16.1.8nfs客户端
nfs10.0.0.31172.16.1.31nfs服务端


1、服务端安装配置


# centos7只安装nfs-utils
# centos6需要安装rpcbind

[root@nfs01 ~]# yum -y install nfs-utils

# 2、配置配置文件
[root@nfs01 ~]# vi /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data		允许访问的目录

# 创建用户
[root@nfs01 ~]# groupadd www -g666
[root@nfs01 ~]# useradd www -u666 -g666 -s /sbin/nologin -M

# 创建/data目录
[root@nfs01 ~]# mkdir /data
[root@nfs01 ~]# chown www.www /data

# 启动服务
先启动rpc服务,再启动apache服务
systemctl start rpcbind nfs-server

# 客户端查看nfs共享目录
[root@nfs01 ~]# showmount -e 10.0.0.31
[root@web01 ~]# showmount -e 10.0.0.31
[root@web02 ~]# showmount -e 10.0.0.31
Export list for 10.0.0.31:
/data 172.16.1.0/24

# 添加开机自启
[root@nfs01 ~]# systemctl enable rpcbind
[root@nfs01 ~]# systemctl enable nfs-server

# 查看配置文件
[root@nfs01 ~]# cat /var/lib/nfs/etab 
/data	172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)
nfs共享参数参数作用
rw读写权限
ro只读权限
root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(不常用)
no_root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员(不常用)
all_squash无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户(常用)
no_all_squash无论NFS客户端使用什么账户访问,都不进行压缩
sync同时将数据写入到内存与硬盘中,保证不丢失数据
async优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
anonuid配置all_squash使用,指定NFS的用户UID,必须存在系统
anongid配置all_squash使用,指定NFS的用户UID,必须存在系统


2、客户端配置


# 先查看可以挂载的资源
[root@nfs01 ~]# showmount -e 10.0.0.31
Export list for 10.0.0.31:
/data 172.16.1.0/24

# 挂载
mount -t nfs 172.16.1.31:/data /opt/nfs/
# 卸载
umount /opt/nfs/

# 开机自动挂载
写入/etc/fstab
mount -a