NFS网络文件系统
孙富阳, 江湖人称没人称。多年互联网运维工作经验,曾负责过孙布斯大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型博客网站运维工作。
1.为什么要使用共享存储
在一个网站中,A用户上传的文件经过负载均衡,复制均衡将请求调度到了web1服务器上
B用户访问A上传的文件,此时B被负载均衡调度到了web2上,而web2上没有这张文件,所以B无法看到A上传的文件
但是如果有共享存储,A用户上传的文件无论被调度到那个web节点,最终都会写入共享存储
B用户访问A的文件时,无论调度到那个节点,最终也都是访问到共享存储的文件,这样就可以访问到对应的资源了

2.NFS实现原理
1.NFS客户端执行增删等操作,客户端会使用不同的函数对该操作进行封装
2.NFS客户端会通过TCP/IP的方式传递给NFS服务的
3.NFS服务端接收到请求后,会先调用portmap进程进行端口映射
4.nfsd进程用于判断NFS客户端是否拥有权限链接NFS服务器
5.Rpc.mount进程判断客户端是否有对应的权限进行验证
6.idmap进程实现用户映射和压缩
7.最后NFS服务端会将客户端的函数转换为本地能执行的命令,然后将命令传递给内核,由内核驱动硬件
ps: rpc是一个远程过程调用,使用nfs必须有rpc服务
3.NFS服务安装
1.环境准备
服务器系统 | 角色 | 外网IP | 内网IP |
CentOS 7.9 | NFS服务端 | eth0:10.0.0.31 | eth1:172.16.1.31 |
CentOS 7.9 | NFS客户端 | eth0:10.0.0.41 | eth1:172.16.1.41 |
2.关闭防火墙
systemctl disable firewalld.service
systemctl stop firewalld
sed -ri '/^SELINUX=/cSELINUX=Disabled' /etc/selinux/config
setenforce 0
3.安装nfs-server服务
yum -y install nfs-utils.x86_64
4.配置nfs服务
nfs服务程序的配置文件为/etc/exports,需要严格按照共享目录的路径 允许访问的NFS客户端(共享的参数)格式书写,定义许哟啊共享的目录与相应的权限
配置一:/test *(ro) --任何ip地址都能访问,但是权限为只读。
配置二:/test 172.16.1.0/24(ro) --指定网段的地址都能访问,但是权限为只读。
配置三:/test 192.168.1.11(ro) 192.168.1.12(rw) --第一个ip地址拥有只读权限,第二个ip地址拥有读写权限。
cat /etc/exports
/data 172.16.1.0/24(rw)
5.创建对用的共享目录
mkdir -p /data
6.启动服务并加入开机自启动,并检查是否注册信息成功
systemctl enable nfs
systemctl start nfs
rpcinfo -p
7.客户端安装rpcbind服务组件
yum -y install nfs-utils.x86_64
8.客户端通过命令查询服务端共享了那些目录
showmount -e 10.0.0.99
9.客户端挂载nfs存储
mount -t nfs 10.0.0.99:/data /mnt/
10.客户端检查挂载情况,并创建测试文件
df -h
4.NFS配置文件常用参数说明
rw 读写
ro只读
sync同步时将数据写入磁盘,保障数据不丢失
async同步时将数据优先写入内存在写入内存,这样效率更高,但数据容易丢失
root_squash当NFS客户端以root身份访问时,映射为NFS服务器的匿名用户
no_ root_squash当NFS客户端以root身份访问时,映射为NFS服务器的root用户
no_all_squash 无论NFS客户端是用什么身份登录,都不进行映射,注意此选项只对普通用户有效
all_squash无论NFS客户端使用什么账户访问,都映射为匿名用户
anonuid配置all_squash使用,指定NFS匿名用户的UID
anongid配置all_squash使用,指定NFS匿名用户的GID
评论已关闭