单机存储的问题
-
存储处理能力不足 传统的IDE的IO值是100次/秒,SATA固态磁盘500次/秒,固态硬盘达到2000-4000次/秒。即使磁盘的IO能力再大数十倍,也不够抗住网站访问高峰期数十万、数百万甚至上亿用户的同时访问,这同时还要受到主机网络IO能力的限制。
-
存储空间能力不足 单块磁盘的容量再大,也无法满足用户的正常访问所需的数据容量限制。
-
单点故障问题 单机存储数据存在单点故障问题
商业存储解决方案
EMC、NetAPP、IBM、DELL、华为、浪潮
分布式存储(软件定义的存储 SDS)
Ceph、TFS、FastDFS、MooseFS(MFS)、HDFS、GlusterFS(GFS) 存储机制会把数据分散存储到多个节点上,具有高扩展性、高性能、高可用性等优点。
数据存储的类型
块存储
-
存储设备与客户端主机是一对一的关系,块存储设备只能被一个主机挂载使用,数据以块为单位进行存储
典型代表:硬盘
文件存储
-
一对多,能被多个主机同时挂载或传输使用。
-
数据以文件的形式存储的,其中文件的元信息数据和实际数据是分开存储的,并且有目录的层级关系
典型代表:NFS、CIFS、FTP
对象存储
-
一对多,能被多个主机或应用程序同时通过API接口访问使用。
-
数据以文件的形式存储,一个文件就是一个对象,文件的元信息和实际数据是在一起的,文件扁平化存储,没有目录层级关系,
典型代表:OSS,S3
了解ceph
ceph存储
开源的分布式存储系统,具有高性能、高扩展性、高可用性等特点,集块存储,文件存储,对象存储于一身。
Ceph 优势
-
高扩展性:去中心化,支持使用普通X86服务器,支持上千个存储节点的规模,支持TB到EB级的扩展。
-
高可靠性:没有单点故障,多数据副本,自动管理,自动修复。
-
高性能:摒弃了传统的集中式存储元数据寻址的方案,采用 CRUSH 算法,数据分布均衡,并行度高。
-
功能强大:Ceph是个大一统的存储系统,集块存储接口(RBD)、文件存储接口(CephFS)、对象存储接口(RadosGW)于一身,因而适用于不同的应用场景。
ceph架构
自上往下
-
客户端(主机/虚拟机/容器/应用程序/):
在ceph中进行数据读写的终端。
-
LibRADOS对象访问接口:
提供访问存储接口给客户端使用。Ceph默认提供三个接口:RBD块存储接口、RGW对象存储接口、CephFS文件存储接口。还支持用户使用java、python、C、C++等编程语言,二次开发自定义访问接口
-
RADOS基础存储系统(统一存储池):
提供存储能力的。Ceph中一切都是
ceph组件
OSD----Monitor----Manager----MDS
OSD(ceph-osd)
负责存储数据和管理数据,一般一个磁盘对应一个OSD,还负责响应客户端的读写请求
Monitor(ceph-mon)
负责保存OSD的元数据,维护Ceph集群状态的各种映射视图Map(监视全局状态),还负责管理客户端的认证和授权
Manager(ceph-mgr)
负责跟踪Ceph集群性能状态和监控指标,暴露接口给外部监控系统获取监控指标数据
MDS(ceph-mds)
负责保存CophFS文件存储系统的元数据,管理目录结构,仅在使用cephFS文件存储接口功能的时候使用
PG(归置组):
可理解成保存OSD位置的索引,一个PG可以包含多个数据对象(object),一个数据对象只能数据一个PG
PG与OSD的对应关系是在创建存储池Pool的时候就确定好的
Pool(存储池/资源池/数据池):
可以理解成存放PG 的命名空间namespace,一个pool可有包含多个PG,同一个Pool里的PG不可以同名,不同的Pool里的PG可以同名
raft / paxos 都是一致性选举算法 实现这种分布式系统中数据的同步和leader的选举
OSD存储引擎(FileStore,BlueStore)
FilreStore:是12.x以前版本的唯一可选的OSD存储引擎,将数据对象存储为文件系统中的文件, 性能上存在许多不足
BlueStore:是12.x版本之后默认的OSD存储引擎,将数据对象直接存储在块设备上,具有更好的 数据读写性能和可靠性
ceph的存储过程
1)文件默认会被按照4M大小进行分片成一个或多个数据对象
2)每个数据对象都有一个oid和分片编号,通过对oid使用hash算法得到一个16进制的特征码,再除以Pool的PG总数取余,得到数据对象的pgid
3)通过pgid使用CRUSH算法得到PG对应的OSD的ID
4)将数据对象的数据存储到对应的OSD上
ceph部署
1.实验准备
添加网卡,添加硬盘(每个节点加三块硬盘)
准备三台主机和管理节点和客户端节点