存储服务介绍
NFS是 Network File System 的缩写, 中文意思是网络文件系统, 主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录
总结: 没有NFS共享存储时, 实现数据统一存储会非常复杂
工作原理
NFS的工作原理是使用客户端/服务器架构, 由一个客户端程序和服务器程序组成. 服务器程序向其他计算机提供对文件系统的访问, 其过程称为输出. NFS客户端程序对共享文件系统进行访问时, 把它们从NFS服务器中“输送”出来. 文件通常以块为单位进行传输. 其大小是8KB(虽然它可能会将操作分成更小尺寸的分片). NFS传输协议用于服务器和客户机之间文件访问和共享的通信,从而使客户机远程地访问保存在存储设备上的数据
存储数据原理
a 在存储客户端创建本地存储数据目录
b 在存储服务端创建共享存储数据目录
c 实现客户端目录和存储目录建立挂载
客户端目录中操作数据等价于存储服务器目录中操作数据
存储服务器存在意义
1) 实现数据统一存储
2) 节省磁盘购买成本
存储服务部署过程
服务端部署过程
第一步: 安装软件程序
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)
① ② ③
① 设置定义数据存储目录
② 定义允许哪些主机存储数据
1.定义网段信息 2.定义地址信息 3.定义主机名称信息
③ 定义存储数据参数
第三步: 创建存储目录
mkdir /data
chown nfsnobody.nfsnobody /data
第四步: 编写本地解析配置文件 ( 本步骤视情况而配置 )
vim /etc/hosts
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 web03
注:
如果 /etc/exprots 配置文件中定义的主机名则需要进行编写本地解析配置文件
第五步: 启动服务程序
systemctl restart rpcbind
systemctl enable rpcbind
systemctl restart nfs
systemctl enable nfs
客户端部署过程
第一步: 安装软件程序
yum install -y nfs-utils
第二步: 挂载应用存储服务
mount -t nfs 172.16.1.31:/data /mnt
df -h
172.16.1.31:/data 98G 1.7G 97G 2% /mnt
存储服务配置文件 ( 参数 )
rw --- 是否允许向存储目录中存储数据 存储目录可读可写
ro --- 是否允许向存储目录中存储数据 存储目录只读状态
async --- 异步传输数据 客户端(存储数据) ---- 服务端 (内存) ---> 服务端(磁盘)
sync --- 同步传输数据 客户端(存储数据) ---- 服务端 (磁盘)
root_squash --- 是否将用户信息做映射转换 将root用户身份进行转换 (默认转换用户nfsnobody)
no_root_squash --- 是否将用户信息做映射转换 将root用户身份不做转换
all_squash --- 是否将用户信息做映射转换 将普通用户身份进行转换 (默认转换用户nfsnobody)
no_all_squash --- 是否将用户信息做映射转换 将普通用户身份不做转换
anonuid --- 指定映射用户身份信息(uid 数值)
anongid --- 指定映射用户身份信息(gid 数值)
总结
配置存储服务常用参数: root_squash,no_all_squash,anonuid=xxx,anongid=xxx
cat /var/lib/nfs/etab --- 记录nfs服务默认配置信息
存储服务常用命令
rpcinfo --- 查看nfs服务注册信息
rpcinfo -p 172.16.1.31
showmount --- 查看可用挂载目录信息
showmount -e 172.16.1.31
exportfs --- 管理nfs服务运行状态
exportfs -rv
存储服务客户端操作
客户端挂载操作
临时挂载操作
mount -t nfs 存储服务器地址:存储目录 本地挂载点目录
永久挂载操作
方法一: 利用/etc/rc.local
mount -t nfs 存储服务器地址:存储目录 本地挂载点目录
方法二: 利用/etc/fstab
172.16.1.31:/data /mnt nfs defaults 0 0
客户端挂载参数
cat /proc/mounts
172.16.1.31:/data /mnt nfs4 rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.7,local_lock=none,addr=172.16.1.31 0 0
mount -o 挂载参数
rsize 提示数据存储效率,减缓存储服务器压力 在客户端内存中设置了缓存
wsize 提升数据读取效率,减缓存储服务器压力 在客户端内存中设置了缓冲
hard 实现长连接挂载操作 (对于架构而言,配置hard容易造成耦合度过程) 架构师
soft 实现长连接挂载操作(具有超时时间timeo=600) (对于架构而言,配置soft可以实现解耦) 架构师
proto 网络挂载时选择通讯协议 (tcp/udp)
atime 访问存储数据时,会消耗磁盘IO, 影响磁盘性能
noatime 访问存储数据时,不要更改atime属性信息, 不会消耗磁盘IO, 减少磁盘性能消耗 优化
diratime 访问存储目录时,会消耗磁盘IO, 影响磁盘性能
nodiratime 访问存储目录时,不要更改目录atime属性信息, 不会消耗磁盘IO, 减少磁盘性能消耗 优化
存储服务权限说明 *****
1)存储服务端配置文件参数没有设置正确
2) 存储服务端存储目录本身权限配置问题
3)存储客户端挂载参数配置问题
4)存储目录权限继承关系 ( 服务端配置文件中不要有目录层级配置 )
存储服务企业应用
弃用NFS案例: 如何解决NFS服务单点故障
读取数据时: 弃用NFS服务 ( 将存储数据和web服务器数据做同步), 让用户读取web服务器本地数据
写入数据时: 弃用NFS服务 ( 写入数据到本地 将数据进行恢复同步), 让用户写入web服务器本地数据
分布式存储
实时同步服务概述
A主机 新的数据 -实时同步- B主机 数据备份
如何实现数据实时同步:
1)发现数据变化 inotify(监控软件)
2)进行数据备份 rsync\
实时同步服务监控软件部署
存储服务器部署
第一个历程:按照监控数据变化软件
yum install -y inotify-tools
注: 确认 epel 源可以正常使用
第二个历程:监控命令使用
/usr/bin/inotifywait --- 监控数据变化命令
/usr/bin/inotifywatch --- 统计数据变化次数 添加 删除 修改
inotifywait 参数 目录
永久监控目录中数据变化: inotifywait -m 目录
-m|--monitor Keep listening for events forever.
保持永久监控
实现目录中数据递归监控: inotifywait -rm 目录
-r|--recursive Watch directories recursively.
监控目录中子目录数据变化
利用脚本实现实时同步: inotifywait + rsync
利用实时同步软件实现: sersync