ceph基础
Ceph架构
- RADOS Cluster(MON、OSD、MGR等组成)
- 基于RADOS Cluster封装了RADOSGW、RBD,CephFs,在最终存储数据的时候都划分为对象
- 应用程序也可以直接调用 librados 完成自己的逻辑
Ceph组件
Monitor
OSD
Manager
对象网关 RGW
文件元数据服务 MDS
数据读写流程
Ceph的读/写操作采用Primary-Replica模型,客户端只向Object所对应OSD set的Primary OSD发起读/写请求,这保证了数据的强一致性。
当Primary OSD收到Object的写请求时,它负责把数据发送给其他副本,只有这个数据被保存在所有的OSD上时,Primary OSD才应答Object的写请求,这保证了副本的一致性。
写数据
- 寻址:File->Object(条带化),Object->PG(Hash(oid) & mask -> PGID),PG->OSD(CRUSH,算法输出是目标OSD集合,一般是3个)
- 客户端直接和Primary OSD进行通信,进行数据写入
- Primary OSD收到请求后,分别向Secondary OSD和Tertiary OSD发起写入操作
- 当Secondary OSD和Tertiary OSD各自完成写入操作后,将分别向Primary OSD发送确认信息
- 当Primary OSD确认其他两个OSD的写入完成后,则自己也完成数据写入,并向客户端确认Object写入操作完成
读数据
- 客户端只需完成同样的寻址过程,并直接和Primary OSD联系。在目前的Ceph设计中,被读取的数据默认由Primary OSD提供,但也可以设置允许从其他OSD中获取,以分散读取压力从而提高性能。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Equator's Blog!