一、Ceph RADOS组成
1、OSDs,负责存储所有的Objects数据;
2、Monitor,保存集群中所有OSDs状态信息,以及负责管理Cluster Map,其中Cluster Map是整个RADOS系统的关键数据结构,管理集群中的所有成员、关系、属性等信息以及数据的分发。多Monitor时,使用paxos算法来选择leader,避免单点故障;
二、RADOS 系统逻辑结构
三、RADOS设计思想
基于计算的对象寻址机制,流程图如下:
寻址流程解读:(映射、映射、再映射......)
(1)FIle---->object映射:将用户态的file,映射成RADOS能够处理的object,实质以统一大小进行切块,并分配id,便于管理以及方便对多个object并行处理;
(2)Object--->PG映射:利用静态哈希函数得到objectID的伪随机值,再“位与”mask上使得每个object获取属于自己的PG;
(3)PG--->OSD映射:将pg映射到数据的shij实际存储单元OSD,RADOS利用CRUSH算法,由pgid得到一组n个OSD;再由OSD daemon执行映射到本地的object在本地系统中存储、访问、云数据维护等操作,
特别注意:该次映射功能性特别强;直接受到cluster map以及rule的影响,只有在cluster map和存储策略均不发生改变时,PG和OSD映射关系才固定的;
计算PG的ID示例:
Client输入pool ID和对象ID(如 pool=‘livepool’,object-id=‘join’)
CRUSH获取对象IDbibi并对其hash
CRUSH计算OSD个数hash取模获得PG的ID(如0 * 58)
CRUSH获取已命名pool的ID(如livepool=4)
CRUSH预先考虑到pool ID相同的PG ID(如4.0 * 58)
数据操作流程之写入流程:
数据操作流程之读流程:
四、CRUSH
(1)一致性hash
(2)CRUSH核心:PG and Crushmap
POOL概述:
存储对象的逻辑分区:所有权和访问对象
对象副本的数目
pg的数目
crush rule set的使用
pg、pool、osd关系图