ceph存储数据流程

2022-09-16 11:58:53 浏览数 (1)

本文目标:理解ceph存储流程,例如:当client向ceph集群中写入一个文件时,这个文件是如何存储到ceph中的,其存储过程是如何?

# ceph存储流程图

# ceph存储流程详解

  • File: 就是我们想要存储和访问的文件,这个是面向我们用户的,是我们直观操作的对象。
  • Object:object就是Ceph底层RADOS所看到的对象,也就是在Ceph中存储的基本单位。object的大小由RADOS限定(通常为2m或者4m)。
  • PG (Placement Group): PG是一个逻辑的概念,它的用途是对object的存储进行组织和位置的映射,通过它可以更好的分配数据和定位数据。
  • OSD (Object Storage Device): 它就是真正负责数据存取的服务。
代码语言:javascript复制
graph LR
文件-->对象
对象-->归置组
归置组-->OSD

  1. 文件到对象的映射

首先,将file切分成多个object,每个object的大小由RADOS限定(通常为2m或者4m)。每个object都有唯一的id即oid,oid由ino和ono产生的

  • ino:文件唯一id(比如filename timestamp)
  • ono:切分后某个object的序号(比如0,1,2,3,4,5等)
  1. 对象到归置组的映射

对oid进行hash然后进行按位与计算得到某一个PG的id。mask为PG的数量减1。这样得到的pgid是随机的。

注:这与PG的数量和文件的数量有关系。在足够量级的程度上数据是均匀分布的。

  1. 归置组到OSD的映射

通过CRUSH算法可以通过pgid得到多个osd,简而言之就是根据集群的OSD状态和存储策略配置动态得到osdid,从而自动化的实现高可靠性和数据均匀分布。在ceph中,数据到底是在哪个osd是通过CRUSH算法计算出来的

# 查看一个Object的具体存放位置

# 1. 新建一个test池

代码语言:javascript复制
root in iscloud163-200 in ~ via 


	

0 人点赞