ceph数据一致性机制浅析

独曼凡

2018/05/13 发布于 技术 分类

eph的读写操作采用主-副模型,Client只向Object所对应OSD集合的主OSD发起读写请求,这保证了数据的强一致性。由于每个Object都只有一个主OSD,因此对Object的更新都是顺序的,不存在所有的OSD上时,主OSD才确认完成写请求,这保证了副本的一致性。在2015年中国数据库技术大会上,苏州自由软件用户组发...

文字内容
1. Ceph 数据⼀一致性浅析
2. 可靠性和⼀一致性的⽭矛盾 Ceph简介 Ceph处理⼀一致性的机制 Ceph数据异常处理机制 Ceph的scrub机制 CRUSH与⼀一致性Hash Ceph的应⽤用场景 例 ⾼高性能架构中Ceph的应⽤用
3. 可靠、⾼高效与⼀一致性的⽭矛盾 动态 是现阶段云计算平台的共同特征与挑战 计算资源动态 存储资源动态 管理信息动态 可靠性 ⾼高效 可⽤用性 ⼀一致性 动态的需求造成对云的可靠性、⾼高效、⼀一致性都有较⾼高的期望 这些要求是相互制约和⽭矛盾的
4. Ceph简介 ⼀一个提供了对象、块以及兼容POSIX⽂文件访问的分布式统⼀一存储系统
5. Ceph简介 Files Objects PGs OSDs inode,ono ->Oid Hash(Oid)&mark ->PGid CRUSH(PGid) ->osd1,osd2…
6. Ceph简介 Client OSDs Ceph Object Storage Daemon Disk Ceph Metadata daemon Ceph Monitor Monitors CRUSH Map OSD Map CRUSH Ruleset
7. Ceph处理数据⼀一致性的机制 Client 1 6 primary OSD 24 53 Secondary OSD tertiary OSD • Ceph的读写操作采⽤用主-副模型,Client只向Object所对应OSD 集合的主 OSD发起读写请求,这保证了数据的强⼀一致性。 • 由于每个Object都只有⼀一个主OSD,因此对Object的更新都是顺序的,不存 在同步问题。 • 当主OSD收到写请求时,它负责把数据发送给其他副本,只有这个数据被保 存在所有的OSD上时,主OSD才确认完成写请求,这保证了副本的⼀一致性。
8. Ceph的数据异常处理机制 系统断电、重启、⺴⽹网络故障 1.异常发⽣生,Monitor发现并通知对应的PrimaryPG PGLog 2.PG标⽰示为Degraded状态,并增加PGLog记录 3.OSD重新上线,先在Monitor注册,读取PGLog 4.如果该OSD对应的是PrimaryPG,需要发起元数据 查询,故障期接替的PG记录了权威的PGLog,该OSD 合并权威PGLog并更新其落后状态 Monitor 5.如果该OSD对应的是ReplicatePG,上线会被查询 元数据,通过PGLog的Missing表格更新元数据 P-OSD R-OSD R-OSD R-OSD R-OSD P-PG R-PG
9. Ceph的数据异常处理机制 OSD失效,损坏 Backfill 3恢复数据后回到P-OSD 1申请Backfill P-OSD R-OSD R-OSD R-OSD 2升级为P-OSD Monitor 1有OSD需要Backfill 3恢复⼼心跳 P-OSD R-OSD 2恢复数据 R-OSD R-OSD
10. Ceph的scrub机制 Read verify⽅方式定时扫描部分对象,副本间的对⽐比发现⾮非⼀一致数据 Ceph会使⽤用每⼀一个对象名哈希值的部分作为依据,每次启动scrub时,对 ⼀一部分不会受到修改的对象进⾏行校验。 Monitor P-OSD OSD OSD OSD PG PG PG PG对应的P-OSD发起 P-OSD收集对象集信息 计算校验信息ScrubMap并对⽐比 不⼀一致对象信息会发给Monitor 启动PG Repair
11. CRUSH与⼀一致性Hash 存储池内 负载平衡 CRUSH ⼀一致性Hash Hash(x)%PGs PG是抽象的存储节点,在PG层 ⾯面,数据是均匀分布的 Hash(x)%N 基本算法 在N的层⾯面数据平均分布 存储节点 变化应对 由于PG是抽象的存储节点,不 ⼀一致性Hash通过将数据和存储节点映射到同个Hash空 会随着物理节点变化⽽而变化 间减少节点变化的数据迁移 分区变化时,在PG的管理范围 分区变化时,已写⼊入数据需要重新计算Hash 内进⾏行计算与数据迁移 副本分布 ⻛风险控制 PG划分了固定分区 副本可以存储在不同的故障隔 离区,确保数据安全 引⼊入虚拟节点、固定分区等⽅方法对数据分布做更优化 处理 Dynamo等使⽤用了CRUSH类似的思想来改进⼀一致性 Hash
12. Ceph的应⽤用场景 存储需求多样化 统⼀一存储简化开发复杂度,提供多种存储接⼝口 为VM提供快照、克隆的⾼高性能块存储 ⾼高可扩展 ⽀支持不同层次的硬件 动态可靠性 可⽤用性 增量扩展操作性强,维护管理⽅方便 ⽆无缝迁移,数据可靠性⾼高
13. 举个例⼦子,⾼高性能计算环境应⽤用Ceph 弹性 可靠 可⽤用 Openstack Cloud Operation System Nova Glance Cinder CUDA Image A CUDA Image B CUDA Image C libvirt libRBD libRBDOS –volume-type NV HPC NV HPC computation Process DATA SSD pool CephFS/Btrfs/ext4 computation Product DATA Pool
14. ⾼高性能计算环境应⽤用Ceph ⾼高性能存储环境从直连本地存储,到分布式,到可扩展统⼀一存储 Keystone API Openstack SWIFT API Cinder API Glance API Nova API Hypervisor Ceph ObejctGW Ceph Block Device Ceph RADOS ⾼高性能环境的数据存储具有⼀一定的特殊性,计算过程、计算结果、数据分析都 对应不同的存储场景,Ceph在此场景中优势明显,但尚待商业的压⼒力测试。 在该应⽤用中,Ceph的开放性及API的粒度都有助于我们进⾏行不同层⾯面的定制化。 云存储领域中,不少企业都直接或间接的使⽤用了Ceph或者Ceph的设计⽅方法,在数据⼀一致性和系统可靠性上,获得了⼀一定的宝贵经 验。
15. 谢谢