带你读《存储漫谈: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 客户端进行推送。

相关文章
|
3月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
232 8
|
4月前
|
存储 BI Shell
Doris基础-架构、数据模型、数据划分
Apache Doris 是一款高性能、实时分析型数据库,基于MPP架构,支持高并发查询与复杂分析。其前身是百度的Palo项目,现为Apache顶级项目。Doris适用于报表分析、数据仓库构建、日志检索等场景,具备存算一体与存算分离两种架构,灵活适应不同业务需求。它提供主键、明细和聚合三种数据模型,便于高效处理更新、存储与统计汇总操作,广泛应用于大数据分析领域。
530 2
|
5月前
|
存储 机器学习/深度学习 缓存
软考软件评测师——计算机组成与体系结构(分级存储架构)
本内容全面解析了计算机存储系统的四大核心领域:虚拟存储技术、局部性原理、分级存储体系架构及存储器类型。虚拟存储通过软硬件协同扩展内存,支持动态加载与地址转换;局部性原理揭示程序运行特性,指导缓存设计优化;分级存储架构从寄存器到外存逐级扩展,平衡速度、容量与成本;存储器类型按寻址和访问方式分类,并介绍新型存储技术。最后探讨了存储系统未来优化趋势,如异构集成、智能预取和近存储计算等,为突破性能瓶颈提供了新方向。
|
4月前
|
SQL 缓存 前端开发
如何开发进销存系统中的基础数据板块?(附架构图+流程图+代码参考)
进销存系统是企业管理采购、销售与库存的核心工具,能有效提升运营效率。其中,“基础数据板块”作为系统基石,决定了后续业务的准确性与扩展性。本文详解产品与仓库模块的设计实现,涵盖功能概述、表结构设计、前后端代码示例及数据流架构,助力企业构建高效稳定的数字化管理体系。
|
3月前
|
数据采集 缓存 前端开发
如何开发门店业绩上报管理系统中的商品数据板块?(附架构图+流程图+代码参考)
本文深入讲解门店业绩上报系统中商品数据板块的设计与实现,涵盖商品类别、信息、档案等内容,详细阐述技术架构、业务流程、数据库设计及开发技巧,并提供完整代码示例,助力企业构建稳定、可扩展的商品数据系统。
|
2月前
|
数据采集 机器学习/深度学习 搜索推荐
MIT新论文:数据即上限,扩散模型的关键能力来自图像统计规律,而非复杂架构
MIT与丰田研究院研究发现,扩散模型的“局部性”并非源于网络架构的精巧设计,而是自然图像统计规律的产物。通过线性模型仅学习像素相关性,即可复现U-Net般的局部敏感模式,揭示数据本身蕴含生成“魔法”。
158 3
MIT新论文:数据即上限,扩散模型的关键能力来自图像统计规律,而非复杂架构
|
1月前
|
存储 NoSQL 前端开发
【赵渝强老师】MongoDB的分布式存储架构
MongoDB分片通过将数据分布到多台服务器,实现海量数据的高效存储与读写。其架构包含路由、配置服务器和分片服务器,支持水平扩展,结合复制集保障高可用性,适用于大规模生产环境。
263 1
|
3月前
|
机器学习/深度学习 算法 文件存储
神经架构搜索NAS详解:三种核心算法原理与Python实战代码
神经架构搜索(NAS)正被广泛应用于大模型及语言/视觉模型设计,如LangVision-LoRA-NAS、Jet-Nemotron等。本文回顾NAS核心技术,解析其自动化设计原理,探讨强化学习、进化算法与梯度方法的应用与差异,揭示NAS在大模型时代的潜力与挑战。
805 6
神经架构搜索NAS详解:三种核心算法原理与Python实战代码
|
2月前
|
JSON 供应链 监控
1688商品详情API技术深度解析:从接口架构到数据融合实战
1688商品详情API(item_get接口)可通过商品ID获取标题、价格、库存、SKU等核心数据,适用于价格监控、供应链管理等场景。支持JSON格式返回,需企业认证。Python示例展示如何调用接口获取商品信息。
|
1月前
|
机器学习/深度学习 自然语言处理 监控
23_Transformer架构详解:从原理到PyTorch实现
Transformer架构自2017年Google发表的论文《Attention Is All You Need》中提出以来,彻底改变了深度学习特别是自然语言处理领域的格局。在短短几年内,Transformer已成为几乎所有现代大型语言模型(LLM)的基础架构,包括BERT、GPT系列、T5等革命性模型。与传统的RNN和LSTM相比,Transformer通过自注意力机制实现了并行化训练,极大提高了模型的训练效率和性能。
下一篇
oss云网关配置