1. 存储服务概念介绍
2. 存储服务部署流程
3. 存储服务存储原理
4. 存储服务配置参数
5. 存储服务挂载方法
6. 存储服务常见异常
7. 存储服务优点缺点
第一部分 存储的概念介绍
1.1存储服务器的价值
1. 可以实现数据统一共享存储(解决数据不一致的问题)
2. 节省架构服务运营成本(如果不用共享存储,则会每台服务器都会存储一个集群内服务器的数据,更浪费磁盘资源。)
3. 减少web服务器的压力。
1.2如何实现数据存储
NFS(network file system --- 网络共享文件系统 不支持windows) server u 搭建FTP服务器
FTP(文件共享存储 --- windows比较方便简单 linux如何部署FTP--数据权限设置)
samba (linux部署服务端 可以让 windows 与 linux同时可以访问)
注:samba配置比较复杂 135 139端口也较危险。
1.3分布式存储
分布式存储原理图原理:将数据分散的传到各个存储服务器,通过一定的算法将数据进行保存。然后由一台管理服务器进行对多个存储服务器进行控制。当客户端访问存储时,只需要访问分布式存储服务器的管理服务器即可。同时当一台存储服务器出现问题时,这时将数据转移到其他服务器上。
第二部分 部署nfs存储流程
nfs存储原理图存储服务器 客户端
把远程的存储服务器的一个目录作为存储设备
把客户端的一个目录作为挂载点
由多个服务器共同挂载服务端的目录,通过网络并实现共享存储。
2.1 rpc服务的原理
rpc服务原理RPC 远程过程调用程序---中介服务
实际上用租房子来理解 租客找房子要找中介,中介那有房源信息。相当于客户端挂载必须要找RPC服务。
2.2 nfs服务的工作原理
nfs多进程服务一旦服务一启动,会出现多个网络进程。每个进程会产生相应的端口,并且是随机端口,为了减少客户连接的复杂度,出现了一个RPC服务。客户端连接存储,只需要访问RPC服务。
图片.png
2.3 nfs服务的部署流程
第一个历程:安装软件程序
yum install -y nfs-utils rpcbind
rpm -qa nfs-utils
rpm -qa rpcbind
第二个历程:编写配置文件
vim /etc/exports
01 02
可以进行共享存储目录 允许存储数据网段信息(存储目录权限配置 存储数据方式配置)
/data 172.16.1.0/24(rw,sync-同步方式存储数据)
同步方式存储数据:用户有数据存储 ---- 存储服务器(磁盘中) 存储安全性高 安全
异步方式存储数据:用户有数据存储 ---- 内存 --- 存储服务器(磁盘中) 存储效率高
/data 172.16.1.0/24(rw,sync) 英文小括号 多个参数用,分割
第三个历程:创建备份目录 对存储目录进行授权
mkdir /data
chown nfsnobody.nfsnobody /data
第四个历程:启动服务程序
systemctl start rpcbind
systemctl enable rpcbind
systemctl start nfs
systemctl enable nfs
2.4客户端部署的流程
第一个历程:安装相关软件
yum install -y nfs-utils
第二个历程:进行存储目录挂载
mount -t nfs 172.16.1.31:/data /mnt
第三个历程:进行测试
客户端web01 在挂载点创建数据 存储服务是否有创建好的数据
检查其它客户端挂载点是否有创建的数据
客户端一定要安装nfs-utils这个软件,否则会出现报错!
报错提示:文件类型使用错了
第三部分 nfs服务用户映射原理
三种服务用户映射原理图当客户端的用户通过网络向存储服务器进行存储,无认证项目,白名单通过,最终会把用户变成nfsnobody(安装好服务以后,会默认有这个用户)。
当软件包无法安装时该如何解决
异常下载软件问题:
01. 更新yum源 更改后 yum clean all
02. 利用rpm安装软件 获得rpcbind软件包
vim /etc/yum.conf
cachedir=/var/cache/yum/$basearch/$releasever --- 下载软件保存路径
keepcache=1 --- 下载软件保留下来,不要被删除,0代表删除。
yum reinstall rpcbind
rpm -ivh rpcbindxxx.rpm
[root@nfs01 ~]# rpm -ivh /tmp/rpcbind-0.2.0-47.el7.x86_64.rpm
Preparing... ################################# [100%]
error: %pre(rpcbind-0.2.0-47.el7.x86_64) scriptlet failed, exit status 1 --- 创建用户动作 nfsnobody
rpm -e rpcbind --nodeps
error: rpcbind-0.2.0-47.el7.x86_64: install failed
说明:发现还不行的时候看报错信息 脚本创建失败
1. nfs服务安装好之后,会自动创建nfsnobody虚拟用户
2. 需要确认4个和用户相关的文件不能上锁
lsattr
chartr -i 是解锁
第四部分 存储服务配置文件编写格式
man exports
- ro 只读配置 使存储目录权限位只读
应用场景:使开发人员(线下)可以查看线上服务器数据(线上的服务器只能运维操作)
一是 让他查看自己的电脑
二是 给他挂载只读目录 - rw 读写权限
sync 同步存储数据
async 异步存储数据
注:以上四个为常用
all_squash 将所有普通用户映射为指定nfsnobody用户
no_all_squash 将所有普通用户都不做映射
root_squash 将root用户映射为指定nfsnobody用户
no_root_squash 将root用户不做映射
- all_squash映射实践:
第一步: 服务端(修改配置文件)
/data 172.16.1.0/24(ro,sync,all_squash)
systemctl reload nfs
restart:将所有连接会话都会直接断开
reload: 只会将没有数据传输链接断开, 重新建立连接 让用户访问感受更好 让传输的数据继续传,传完再断开再重新传.
第二步:上传数据测试
[oldboy@web01 mnt] touch oldboy.txt
[oldboy@web01 mnt]$ ll
total 4
-rw-r--r-- 1 nfsnobody nfsnobody 19 Jul 16 12:03 oldboy.txt --- 所有普通用户都会做映射
- no_all_squash映射实践:
第一步: 服务端(修改配置文件)
/data 172.16.1.0/24(ro,sync,no_all_squash)
systemctl reload nfs
第二步:上传数据测试 服务端查看
[root@nfs01 data]# ll
total 4
-rw-rw-r-- 1 1017 1017 0 Jul 16 12:08 oldboy02.txt
-rw-rw-r-- 1 1017 1017 0 Jul 16 12:10 oldboy_1017.txt --- 用户传输数据身份没有变化,看用户uid信息
注:当服务端也有普通用户并且uid也和客户端相同时,则可以存储,如果不相同 会将属主组变为客户端文件uid信息
如果服务端已经有了用户并且uid和服务端相同,备份的时候虽然会显示备份的文件属组 属组会显示服务端用户的名字。但UID是跟客户端相同的。
-
root_squash映射实践:
第一步:服务端编写配置文件
/data 172.16.1.0/24(rw,sync,root_squash)
第二步:客户端检查存储信息
[root@web01 mnt]# touch root_01.txt
[root@web01 mnt]# ll
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 16 12:19 root_01.txt --- root用户会映射为指定的nfsnobody用户 -
no_root_squash映射实践:
第一步:服务端配置文件修改
/data 172.16.1.0/24(rw,sync,no_root_squash)
第二步:客户端检查存储信息
[root@web01 mnt]# touch root_02.txt
[root@web01 mnt]# ll
-rw-r--r-- 1 root root 0 Jul 16 12:22 root_02.txt
网友评论