- Ceph简介
- Ceph架构
- Ceph的基本组件
- Ceph结构
- Ceph存储种类及其应用场景
块存储
文件存储
对象存储
-
Ceph工作原理
无论采用哪种存储方式(对象,块,挂载),存储的数据都会被分成对象(Object),Object size大小可以由管理员调整,通常为2M或4M,每个对象都有一个唯一的oid,由ino与non组成,ino是文件的file id,用于在全局唯一标识每一个文件,non是分片的编号,比如:一个文件fileId为A,他被切成了两个对象,一个对象编号0,一个编号1,那么这两个文件的oid则为A0与A1。
oid的好处是可以唯一标示每个不同的对象,并且存储了对象与文件的从属关系,由于Ceph的所有数据都虚拟成了整齐划一的对象,所以在读写时效率都会比较高。
但是对象并不会直接存储在OSD中,因为对象的size很小,在一个大规模的集群中可能有几百到几千万个对象,为了解决对对象遍历寻址慢以及减轻对于osd的依赖,ceph引入了归置组的概念,即PG。
PG是一个逻辑概念,在linux系统中可以直接看到对象,但是无法直接看到PG,他在数据寻址时类似于数据库中的索引,每个对象都会固定映射进一个PG中,所以当我们要寻找一个对象时,只需要先找到对象所属的PG,然后遍历这个PG就可以了,无需遍历所有对象,而且在数据迁移时,也是以PG作为基本单位进行迁移,ceph不会直接操作对象。
对象映射进PG:首先使用静态hash函数对oid做hash取出特征码,用特征码与PG的数量取模,得到的序号即为PGID,(由于这种设计方式,PG的数量多少直接决定了数据分布的均匀性,所以设置合理的PG数量可以很好的提升ceph集群的性能并使数据均匀分布)
最后PG会根据管理员设置的副本数量进行复制,然后通过crush算法存储到不同的OSD节点上,(其实是把PG中的所有对象存储到节点上),第一个osd节点即为主节点,其余均为从节点。
- ceph名词介绍