前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云存储硬核技术内幕——(8) 只缘身在此山中

云存储硬核技术内幕——(8) 只缘身在此山中

作者头像
用户8289326
发布2022-08-04 15:25:11
2980
发布2022-08-04 15:25:11
举报
文章被收录于专栏:帅云霓的技术小屋

在上回,我们提到:

在Ceph中,每个块(/dev/vda)设备会被拆分为若干个小块,并均匀分配到各个物理节点(服务器)的各个物理磁盘上。那么,Ceph是如何做到这样的均匀分配的呢?

宋代大文豪苏轼的一首词形象地形容了Ceph的分布式存储机制:

横看成岭侧成峰,远近高低各不同。

不识庐山真面目,只缘身在此山中。

/dev/vda 这样的设备,实际上是宿主机上的QEMU为各个VM呈现的虚拟设备。在QEMU上,Ceph RBD Driver一方面对VM呈现可挂载到VFS的块设备(RBD块),另一方面,接管VM对这个块设备发起的IO,并将其转发到这个块设备对应的多个物理节点的多个磁盘上。

这种转发机制如下图所示:

如图,Ceph的RBD Driver会将为VM提供的块设备拆成大小为特定尺寸的小块(Chunk),并且尽量均匀地让这些小块分布到集群中的各个物理磁盘。

我们发现,RBD块对VM,和对Ceph呈现的实际上是两个不同的层次,这就是“横看成岭侧成峰”,远近高低各不同”。

这样看来,Ceph需要解决的问题就是两个:

1、我应该把数据写到什么地方?

2、我之前把数据写到什么地方了?

Ceph集群中的物理磁盘,在Ceph术语中称为OSD(Object Storage Device)。OSD是一个逻辑概念,实际上由真实存在的物理磁盘以及Ceph中的守护进程两部分构成。当然,运行在存储节点(服务器)上的软件所看到的是OSD的守护进程部分。如果一台服务器有12个物理磁盘,就应该运行12个OSD守护进程实例,整个集群中的OSD(物理硬盘)数量一般由数百个到数千个不等。

这么多的OSD应当如何组织和管理呢?

Ceph中引入了一个概念:PG (Placement Group)。实际上PG是存储对象的一部分。

每个PG可以对应n个OSD,n取决于Ceph的副本数。如最常见的三副本,n=3。

而每个OSD上也会有很多个PG——这个非常容易理解,一块硬盘不可能只用于存储一个对象。

下图是一个PG与OSD的映射的例子:

如何从PG映射到OSD,这种均匀分布的算法实际上是Ceph的关键技术,叫做CRUSH算法。对CRUSH算法感兴趣的同学可以查阅Ceph的文档,在这不展开讨论。

Ceph的PG,实际上是RBD块或其他对象的一部分。在Ceph中,万物皆对象,RBD块也不例外。

Ceph的官方文档对“Object”的概念有所混淆,我们在这里做一个澄清:

在用户视角的对象,可以是一个文件(file),或RBD块(image),而RADOS视角的“Object”,实际上是file或image拆分以后的Object。一个Object大小一般为2MB或4MB。

Objcect的下一级是拆分为PG。PG的数量必须是2的整数次幂,PG将自身复制N份,对应到N个OSD。(N就是N副本的N)

如下图所示:

RBD块(Block Device)是Ceph中用户视角的一个对象。它被拆分为多个Object,每个Object的尺寸是固定的——也就是说,拆分Object的数量未知。

Object被拆分为2的整数次幂的PG,并按副本数写入对应数量的OSD落盘。(想一想为什么)

最后,每个磁盘(OSD)都只有块设备(image)的一部分,组合在一起才是整个块设备的内容。

这就是“不识庐山真面目,只缘身在此山中”。

本期我们留下两个问题:

1、为什么不把RBD块直接拆分为PG并映射到OSD,而要隔一层Object?

2、为什么每个Object的大小恒定,而拆分为PG的数量为2的N次方?

请关注下期。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帅云霓的技术小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档