带你读《存储漫谈:Ceph原理与实践》——2.2.1 Ceph 寻址流程

简介: 带你读《存储漫谈:Ceph原理与实践》——2.2.1 Ceph 寻址流程

2.2  Ceph 数据寻址


在从方案演进及变迁的较为宏观角度对比了分布式存储系统的有中心架构与无中心架构寻址方式之后,本小节将深入 Ceph 存储系统的数据寻址方案,进行详细介绍。

在 PB 级数据存储和成百上千台存储服务器纳管的需求背景下,大规模分布式存储系统必须做到数据和负载的均衡分布,以此来提高资源利用率,最大化系统的性能输出,同时要处理好系统的扩展和硬件失效问题。Ceph 设计了一套 CRUSH 算法,用在分布式对象存储系统(RADOS)上,可以有效地将数据对象(Object)映射到存储设备(OSD)上。CRUSH 算法能够处理存储设备的添加和移除,并最小化由于存储设备的添加和移动而导致的数据迁移。

CRUSH 算法有两个关键优点。

(1)任何组件都可以独立计算出 Object 所在的位置(去中心化)。

(2)运算过程只需要很少的集群元数据(Cluster Map),只有当存储集群添加或删除设备时,这些元数据才会发生改变。

这些特性使得 CRUSH 适合管理对象分布非常大的(PB 级别)且要求可伸缩性、性能和可靠性非常高的存储系统。


2.2.1  Ceph 寻址流程


为了讲清楚 Ceph 寻址流程,这里先介绍一下常用术语。

File

File 是要存储和访问的文件,它是面向用户的,也是可直观操作的对象,在块存储使用场景,File 指挂载出去使用的 RBD 设备;在对象存储使用场景,File 指用户可见的音视频或其他格式的用户数据;在文件存储使用场景,File 指文件系统中存储的用户数据。

Object

Object 是 Ceph 底层 RADOS 所看到的对象,也是在 Ceph 中数据存储的基本单位,当 File 过大时,需要将 File 切分成统一大小的 Object 进行存储,每个 Object 应包含 ID、Binary Data 和 Metadata 信息。Object 的大小可由 RADOS 限定(通常为 4MB,可依据需要进行配置)。

PG

PG(Placement Group)是一个逻辑的概念,它的用途是对 RADOS 层 Object 的存储进行组织和位置的映射,通过 PG 概念的引入,Ceph 存储系统可以更好地分配数据和定位数据,PG 是 Ceph 存储系统数据均衡和恢复的最小单位。

Pool

Pool 规定了数据冗余的类型,如副本模式、纠删码模式,对于不同冗余类型的数据存储,需要单独的 Pool 划分,即每个 Pool 只能对应一种数据冗余类型的规则。每个 Pool 内可包含多个 PG。

OSD

如第 1 章介绍,OSD(Object Storage Device)服务负责数据的存取,并处理数据的复制、恢复、回填、再均衡等任务。

PG 和 Object 是一对多的关系,1 个 PG 里面组织若干个 Object,但是 1 个 Object 只能被映射到 1 个 PG 中。

PG 和 OSD 是多对多的关系,1 个 PG 会映射到多个 OSD 上(依照副本或者纠删码规则),每个 OSD 也会承载多个 PG。

PG 和 Pool 是多对一的关系,1 个 Pool 内包含多个 PG,Pool 创建时可指定其中 PG的数量(通常为 2 的指数次幂),Pool 创建之后,也可以通过命令对其进行调整。

图 2-1 展示了 Ceph 的寻址流程,可以看到,Ceph 的寻址需要经历 3 次映射。

image.png

图 2-1 Ceph 寻址流程

首先,将 File 切分成多个 Object

每个 Object 都有唯一的 ID(即 OID),OID 根据文件名称得到,由 ino 和 ono 构成,ino 为文件唯一 ID(比如 filename + timestamp),ono 则为切分后某个 Object 的序号(如 0、1、2、3、4、5 等),根据该文件的大小我们就会得到一系列的 OID。

其次,将每个 Object 映射到一个 PG 中去。

实现方式也很简单,对 OID 进行 Hash 运算,然后对运算结果进行按位与计算,即可得到某一个 PG 的 ID。图中的 mask 掩码设置为 PG 的数量减 1。

我们认为得到的 pgid 是随机的,这与 PG 的数量和文件的数量有关系,在足够量级PG 数量的前提下,集群数据是均匀分布的。

最后,将 Object 所在的 PG 映射到实际的存储位置 OSD 上。

这里应用的就是 CRUSH 算法了,CRUSH 算法可以通过 pgid 得到多个 OSD(与副本或者纠删码的配置策略有关),数据最终的存放位置即为这些计算而来的 OSD 守护进程。

可以看到,Ceph 存储系统的数据寻址过程只需要输入文件的名称以及文件的大小等信息,所有计算过程都可以直接在客户端本地完成。Ceph 客户端只要获得了 Cluster Map,就可以使用 CRUSH 算法计算出某个 Object 所在 OSD 的 id,然后直接与它通信。Ceph 客户端在初始化时会从 Monitor 服务获取最新的 Cluster Map,随后采用反向订阅机制,仅当 Monitor 服务中记录的 Cluster Map 发生变化时,才主动向 Ceph 客户端进行推送。

相关文章
|
4天前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
|
1月前
|
存储 关系型数据库 分布式数据库
【PolarDB开源】深入PolarDB内核:探究存储计算分离架构的设计哲学
【5月更文挑战第20天】PolarDB是阿里巴巴的云原生分布式数据库,以其存储计算分离架构为核心,解决了传统数据库的扩展性和资源灵活性问题。该架构将数据存储和计算处理分开,实现高性能(通过RDMA加速数据传输)、高可用性(多副本冗余保证数据可靠性)和灵活扩展(计算资源独立扩展)。通过动态添加计算节点以应对业务流量变化,PolarDB展示了其在云时代应对复杂业务场景的能力。随着开源项目的进展,PolarDB将持续推动数据库技术发展。
80 6
|
1月前
|
存储 运维 关系型数据库
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
|
10天前
|
存储 关系型数据库 数据库
数据的反规范化架构
【6月更文挑战第13天】 本文介绍数据库设计包括规范化和反规范化。优化设计和应用规范化规则确保高效且准确的数据存储。
32 2
数据的反规范化架构
|
1月前
|
存储 监控 供应链
一款数字化管理平台源码:云MES系统(附架构图、流程、)
制造生产企业打造数字化生产管控的系统,从原材料、生产报工、生产过程、质检、设备、仓库等整个业务流程的管理和控制,合理安排生产计划、实时监控生产、优化生产工艺、降低不良产出和运营成本;
61 8
一款数字化管理平台源码:云MES系统(附架构图、流程、)
|
1月前
|
存储 Cloud Native 对象存储
AutoMQ:如何基于阿里云计算与存储产品实现云原生架构升级
AutoMQ[1] 是新一代基于共享存储架构实现的云原生 Kafka。得益于其存算分离的共享存储架构,通过和阿里云合作,深度使用阿里云可靠、先进的云服务如对象存储OSS、块存储 ESSD、弹性伸缩ESS以及抢占式实例实现了相比 Apache Kafka 10倍的成本优势并且提供了自动弹性的能力。
83863 19
AutoMQ:如何基于阿里云计算与存储产品实现云原生架构升级
|
16天前
网络编程中的互联网协议 , IP地址 , 域名 , 端口 , 架构 , 网页数据请求 , 响应码
网络编程中的互联网协议 , IP地址 , 域名 , 端口 , 架构 , 网页数据请求 , 响应码
|
1月前
|
存储 移动开发 前端开发
【Uniapp 专栏】Uniapp 架构设计与原理探究
【5月更文挑战第12天】Uniapp是一款用于跨平台移动应用开发的框架,以其高效性和灵活性脱颖而出。它基于HTML、CSS和Vue.js构建视图层,JavaScript处理逻辑层,管理数据层,实现统一编码并支持原生插件扩展。通过抽象平台特性,开发者能专注于业务逻辑,提高开发效率。尽管存在兼容性和复杂性挑战,但深入理解其架构设计与原理将助力开发者创建高质量的跨平台应用。随着技术进步,Uniapp将继续在移动开发领域扮演重要角色。
【Uniapp 专栏】Uniapp 架构设计与原理探究
|
3天前
|
机器学习/深度学习 数据采集 人工智能
【机器学习】CLIP模型在有限计算资源下的性能探究:从数据、架构到训练策略
【机器学习】CLIP模型在有限计算资源下的性能探究:从数据、架构到训练策略
9 0
|
5天前
|
存储 传感器 编解码
【Camera基础(二)】摄像头驱动原理和开发&&V4L2子系统驱动架构
【Camera基础(二)】摄像头驱动原理和开发&&V4L2子系统驱动架构

热门文章

最新文章