NFS中文意思是网络文件系统
作用:主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录
应用场景:
互联网中小型网站集群架构后端常用NFS进行数据共享(新华日报公司)
大型网站,那么有可能还会用到更复杂的分布式文件系统,例如:Moosefs(mfs)、GlusterFS(*)、FastDFS
发展历程总结: 没有NFS共享存储时,实现数据统一存储会非常复杂
存储服务器存在意义:
1)实现数据统一存储
2)节省磁盘购买成本
存储数据原理
a 在存储客户端创建本地存储数据目录
b 在存储服务端创建共享存储数据目录
c 实现客户端目录和存储目录建立挂载
简单理解:
客户端目录中操作数据等价于存储服务器目录中操作数据
存储服务部署过程:
预备知识:rpc — 远程过程调用服务程序 (类似于中介)
rpc作用:如果没有rpcbind nfs服务一启动就会产生很多的随机进程,占用很多的随机端口。
服务端部署过程:
第一个历程:安装软件程序
yum install -y rpcbind nfs-utils
# rpm -qa rpcbind
rpcbind-0.2.0-48.el7.x86_64
# rpm -qa nfs-utils
nfs-utils-1.3.0-0.65.el7.x86_64
第二个历程:编写配置文件
vim /etc/exports
/data web*(rw)
配置文件样例:
/projects proj*.local.domain(rw)
/usr *.local.domain(ro) @trusted(rw)
① ② ③
① 设置定义数据存储目录
② 定义允许哪些主机存储数据
定义网段信息 定义地址信息 定义主机名称信息
③ 定义存储数据参数
第三个历程:创建存储目录
mkdir /data
chown nfsnobody.nfsnobody /data
第四个历程:编写本地解析配置文件(如果你是想使用域名进行控制允许哪些主机连接)
vim /etc/hosts
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 web03
第五个历程:启动服务程序
systemctl start rpcbind
systemctl start nfs
客户端部署过程:
需要部署出3台web服务器
第一个历程:安装软件程序 (不需要启动也不需要安装rpcbind)
yum install -y nfs-utils
第二个历程:挂载应用存储服务
mount -t nfs 172.16.1.31:/data /mnt
存储服务配置文件 (参数)
配置文件参数信息 ro rw sync async xxx_squash anonuid/anongid
rw --- 是否允许向存储目录中存储数据 存储目录可读可写
ro --- 是否允许向存储目录中存储数据 存储目录只读状态
async --- 异步传输数据 客户端(存储数据) ---- 服务端 (内存) ---> 服务端(磁盘)
sync --- 同步传输数据 客户端(存储数据) ---- 服务端 (磁盘)
root_squash --- 是否将用户信息做映射转换 将root用户身份进行转换 (默认转换用户nfsnobody)
no_root_squash --- 是否将用户信息做映射转换 将root用户身份不做转换
all_squash --- 是否将用户信息做映射转换 将普通用户身份进行转换 (默认转换用户nfsnobody)
no_all_squash --- 是否将用户信息做映射转换 将普通用户身份不做转换
出现的问题:
- 客户端存储目录 和 服务端存储目录中数据不一致
在挂载点目录中进行了挂载操作
建议在进行挂载操作时,要在挂载点以外目录进行操作
2.无法实现挂载操作
mount.nfs: access denied by server while mounting 10.0.0.31:/data
服务端拒绝客户端进行挂载
原因:
1) 配置文件中允许网段 或者主机 或者域名信息 没有匹配相应客户端
2) 配置文件中指定存储目录 和 挂载存储目录不匹配
配置文件中有些参数信息不配置,默认是什么配置信息?
查看一个文件:
cat /var/lib/nfs/etab