CEPH的写入流程

1、客户端程序发起对文件的读写请求,ceph前端接口(RADOS Gateway)将文件切分成多个固定大小的对象(默认大小为4MB)

2、计算文件到对象的映射

(1) 计算OID为每个对象分配一个唯一的OID(Object ID),该OID由文件的inode number(INO)和object number(ONO)组成。INO是文件的唯一标识符,ONO是文件分割后的对象序号

3、根据HASH算法计算文件对应的Pool中的PG,

(1)一致性HASH客户端或CEPH前端使用一致性哈希算法将OID映射到一个PG上,一致性哈希算法可以帮助保持数据分布的均衡性,并且及时在集群变化时也能减少数据迁移

(2)映射计算:通过计算hash(oid)&mask来确定数据应该存储在哪个PG中,mask用来确定PG范围的一个数值

4、通过CRUSH算法将对象映射到PG中的OSD

(1)CRUSH算法:ceph使用CRUSH算法来决定数据应该存储在那个OSD上,CRUSH算法根据集群拓扑结构、权重等来选择OSD,CRUSH算法执行后会给出一组OSD列表,这些OSD负责存储PG中的数据,这些列表中的OSD分为主和备

5、主OSD将数据同步给备份OSD,并等待备份OSD返回确认

(1)数据复制:主OSD将数据复制到备OSD,并等待所有副本完成写入,当备OSD写入完成并向主OSD发送确认信息后,主OSD将知道数据已被持久化,当OSD收到所有备OSD的确认消息,就表明数据以存储成功,主OSD向客户端返回完成写入的消息

可能有些不足,欢迎大佬们来指正

相关推荐
深度Linux13 天前
深入探讨Ceph:分布式存储架构的未来
分布式·ceph·架构·c/c++
斯普信专业组13 天前
基于Rook的Ceph云原生存储部署与实践指南(下)
ceph
斯普信专业组13 天前
基于Rook的Ceph云原生存储部署与实践指南(上)
ceph
大新新大浩浩22 天前
k8s环境中的rook-ceph的osd报Permission denied无法正常运行问题的处理方式
java·ceph·kubernetes
大新新大浩浩24 天前
ceph部署-14版本(nautilus)-使用ceph-ansible部署实验记录
ceph·ansible
我科绝伦(Huanhuan Zhou)25 天前
共享存储-一步一步部署ceph分布式文件系统
ceph
野猪佩挤25 天前
Ceph集群搭建2025(squid版)
ceph
野猪佩挤25 天前
Rook-ceph(1.92最新版)
ceph
斯普信专业组1 个月前
从零到一:基于Rook构建云原生Ceph存储的全面指南(上)
ceph·云原生
斯普信专业组1 个月前
从零到一:基于Rook构建云原生Ceph存储的全面指南(下)
ceph·云原生