Ceph概念介绍及组件介绍
admin
2023-02-25 15:20:04
0

一:Ceph基础介绍

  • Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。

  • Ceph相比其它存储的优势点在于它不单单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的良好设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且随着规模的扩大性能并不会受到影响。

二:核心组件介绍

  • Ceph OSD(必装)

全称是Object Storage Device,主要功能包括存储数据,处理数据的复制、恢复、回补、平衡数据分布,并将一些相关数据提供给Ceph Monitor


  • Ceph Monitor(必装)
    Ceph的监控器,主要功能是维护整个集群健康状态,提供一致性的决策,包含了Monitor map,即集群map,monitor本身不存储任何集群数据

  • Managers(必装)
    Ceph Manager守护进程(ceph-mgr)负责跟踪运行时指标和Ceph集群的当前状态,包括存储利用率,当前性能指标和系统负载。Ceph Manager守护进程还基于python的插件来管理和公开Ceph集群信息,包括基于Web的Ceph Manager Dashboard和 REST API。高可用性通常至少需要两个管理器。

  • Ceph MDS(可选
    全称是Ceph Metadata Server,主要保存的是Ceph的文件系统(File System)的元数据(metadata),不是必须安装,当需要使用CephFS的时候才会使用

三:基础组件介绍

  • rados
    自身是一个完整的分布式对象存储系统,它具有可靠、智能、分布式等特性,Ceph的高可靠、高可拓展、高性能、高自动化都是由这一层来提供的,用户数据的存储最终也都是通过这一层来进行存储的,RADOS可以说就是Ceph的核心,主要由两部分构成,分别是OSD和Monitor

  • Librados
    它是一个库,它允许应用程序通过访问该与RADOS系统进行交互,支持多种编程语言,比如C、C++,Python等

  • radosgw
    RADOSGW是一套基于当前流行的RESTFUL协议的网关,并且兼容S3和Swif,只有当使用对象存储时才会用到

  • rbd
    RBD通过Linux内核客户端和QEMU/KVM驱动来提供一个分布式的块设备,可以理解为像linux的LVM一样,从Ceph的集群中划分出一块磁盘,用户可以直接在上面做文件系统和挂载目录

  • CephFs
    通过Linux内核客户端和fuse来提供一个兼容POSIX的文件系统,当一些linux系统不支持mount命令或者需要更高级的操作时,会用到ceph-fuse

四:术语介绍,名词解释

crush
是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方


map
上面说过,monitor组件负责监视整个集群的运行状况,如各节点之间的状态、集群配置信息,这些信息由维护集群成员的守护程序来提供,如何存放这些信息呢,答案就是map,ceph monitor map主要包括如下这几个

  • Monitor map:包括有关monitor 节点端到端的信息,其中包括 Ceph 集群ID,监控主机名和IP以及端口。并且存储当前版本信息以及最新更改信息,通过 "ceph mon dump" 查看 monitor map
  • OSD map:包括一些常用的信息,如集群ID、创建OSD map的 版本信息和最后修改信息,以及pool相关信息,主要包括pool 名字、pool的ID、类型,副本数目以及PGP等,还包括数量、状态、权重、最新的清洁间隔和OSD主机信息。通过命令 "ceph osd dump" 查看
  • PG map:包括当前PG版本、时间戳、最新的OSD Map的版本信息、空间使用比例,以及接近占满比例信息,同事,也包括每个PG ID、对象数目、状态、OSD 的状态以及深度清理的详细信息。通过命令 "ceph pg dump" 可以查看相关状态
  • CRUSH map: CRUSH map 包括集群存储设备信息,故障域层次结构和存储数据时定义失败域规则信息。通过 命令 "ceph osd crush map" 查看
  • MDS map:MDS Map 包括存储当前 MDS map 的版本信息、创建当前的Map的信息、修改时间、数据和元数据POOL ID、集群MDS数目和MDS状态,可通过"ceph mds dump"查看

副本
副本是ceph存放数据的份数,可以理解为对一个文件备份的份数,ceph默认的副本数是3,即一个主(primary ),一个次(secondary),一个次次(tertiary),只有primary osd的副本才解释客户端请求,它将数据写入其他osd
如下,可以看到这个叫做testpool的pool中有一个叫做object1的object,他的map信息获取后可以看到
这个对象在osd1上面是主,在osd0和osd2上是次和次次,也就是说在副本数为3的情况下,每个osd存储一个副本

[root@ceph-1 ~]# ceph osd map testpool object1
osdmap e220 pool 'testpool' (38) object 'object1' -> pg 38.bac5debc (38.0) -> up ([1,0,2], p1) acting ([1,0,2], p1)

其他内容解释

  • osdmap e220 此map的版本号
  • pool 'testpool' (38) 此pool的名字和ID
  • object 'object1' 此object的名字
  • pg 38.bac5debc (38.0) pg的号码,即38.0
  • up ([1,0,2], p1) up set ,按顺序表示副本存在于哪个osd上,osd0(primary)osd1(secondary)和osd2(tertiary)
  • acting ([1,0,2], p1) acting set 通常情况下和up set相同,不同的情况需要理解pg_temp,即如果pg的acting set 为[0,1,2], 此时如果osd.0出现故障,导致CRUSH算法重新分配该pg的acting set 为[3,1,2]. 此时osd.3为该pg的主osd,但是osd.3并不能负担该pg的读操作,因为其上现在还没有数据。所以向monitor申请一个临时的pg,osd.1为临时主osd,这时acting set依然为[0,1,2],up set 变为[1,3,2],此时就出来acting set 和up set的不同。当osd.3 backfill完成之后,该pg的up set恢复为acting set, 也就是acting set 和 up set都为[0,1,2]

object

ceph最底层的存储单元,即对象,每个对象包含元数据和原始数据,当用户要将数据存储到ceph集群时,存储数据会被分为多个对象,每个对象的大小是可以设置的,默认是4MB,可以将object堪称是ceph存储的最小单元


pg和pgp

pg是用来存放object的
pgp是相当于pg存放在osd的一种排列组合,他不影响副本个数,只影响副本排列顺序


pool
pool是一个逻辑存储概念,我们创建pool的时候,需要指定pg和pgp,Ceph 的池是一个用来存储对象的逻辑分区 ,Ceph每个池都包含一定数量 PG 进而实现把一定数量的对象映射到集群内部不同 OSD
此,因此, 每一个池都是交叉分布在集群所有节点上的 ,也就是说pool是分布在整个集群上面的,这样就能够提供足够的弹性

五:易混点辨析

object与pg的关系
由于object的数量很多,所以Ceph引入了pg的概念用于管理object,每个object最后都会通过CRUSH计算映射到某个pg中,一个pg可以包含多个object


pg与osd的关系
pg也需要通过CRUSH计算映射到osd中去存储,如果是三副本的,则每个pg都会映射到三个osd,比如[osd.0,osd.1,osd.2],那么osd.0是存放该pg的主副本,osd.1和osd.2是存放该pg的从副本,保证了数据的冗余


pg和pool的关系
pool也是一个逻辑存储概念,我们创建存储池pool的时候,都需要指定pg和pgp的数量,逻辑上来说pg是属于某个存储池的,就有点像object是属于某个pg的


pg和pgp的关系

  • pg是用来存放object的,pgp相当于是pg存放osd的一种排列组合,比如三个osd 1 2 3,副本数设置为3 且ceph默认副本数就是为3,假设此时pgp是1的话,那么此时一个对象是只可能是按照osd0 osd1 osd2 这唯一一种顺序排列,假设此时pgp是2的话,那么此时这个对象可能是按照osd0 osd1 osd2 和 osd1 osd0 osd2 这两种中的一种顺序排列,假设此时pgp是3的话,那么此时就有三种顺序排列,所以pgp实际上并不影响pg的副本数,只影响pg副本在osd分布的顺序排列的组合的可选数量,那么也可以理解pgp的作用就是均衡集群内osd的数据
  • pg是指定存储池存储对象的目录有多少个,pgp是存储池pg的OSD分布组合个数
  • pg的增加会引起pg内的数据进行分裂,分裂相同的OSD上新生成的pg当中
  • pgp的增加会引起部分pg的分布进行变化,但是不会引起pg内对象的变动

存储数据, object, pg,pgp, pool, osd, 存储磁盘的关系

  • 这个12M的文件被分成,objectA,objectB,objectC三个对象,分别存储在pgA,pgB,pgC这三个pg里,pgA,pgB,pgC这三个pg又分别归poolA,poolB,poolC管理,而每个pg分布在哪个osd上,是有选择性的,而有多少种选择,就由pgp决定,这里设pgp为1,那么图上显示的就是其中可能的一种pg分布排序,而且是唯一的,如果pgp为2,那么除了图上显示的分布排除算一种外,会有另外一种分布排序,可能是pgA在osd1上,pgB在osd3上,pgC在osd2上,当然也可能有其他的分布排序,但是这里假设pgp为2,所以只有两种可供选择

Ceph概念介绍及组件介绍

另外,这里又另一张图,是我在别的大佬的文章里发现的也不错,就也放到这里把
Ceph概念介绍及组件介绍

相关内容

热门资讯

人民日报刊文:扫码用餐 吃得“... 河南信阳推进公务接待改革扫码用餐 吃得“明白”(厉行节约 反对浪费)本报记者 王乐文 毕京津《人民日...
活动回顾:心灵律动·刚柔共生 心灵律动 - 活动回顾 - “五一”期间, 东莞市工人文化宫连续举办了两场 “心灵律动·刚柔共生”心...
商业航天政策利好 全国首个卫星... 来源:21世纪经济报道 21世纪经济报道记者周慧 5月6日,工业和信息化部官网消息称,工业和信息化部...
伊朗确认前往美国参加世界杯:将... 当地时间5月6日,伊朗国家足球队主教练在接受采访时表示,伊朗国家足球队将于美加墨世界杯开始前14天抵...
雷达、机库、营房、燃料库、飞机... 据《华盛顿邮报》5月6日报道,通过卫星影像分析发现,自2月28日战事爆发以来,伊朗空袭已在中东美军军...
从买买买到租租租,“租用一代”... “五一”假期还在路上,年轻人已经“租”起来了。 “租三天,不到300块钱。”五一放假前一周,清清已给...
【品牌】摩托罗拉大折叠屏新机定... 此前联想预热将于5月19日19点举行联想天禧AI一体多端全场景新品超能之夜活动,届时将带来多款新品,...
常州欣隽益取得接线端子用快速冲... 国家知识产权局信息显示,常州欣隽益科技有限公司取得一项名为“接线端子用快速冲切装置”的专利,授权公告...
美媒:特朗普在结束伊朗战争问题... 据“国会山”网站5月6日报道,周二晚间,美国总统特朗普突然宣布终止旨在打破伊朗对霍尔木兹海峡掌控的军...
和创硅材料取得熔融石英制品擦洗... 国家知识产权局信息显示,东海县和创硅材料有限公司取得一项名为“一种熔融石英制品的擦洗脱泥装置”的专利...