带你读《存储漫谈:Ceph原理与实践》——2.1 数据寻址方案

简介: 带你读《存储漫谈:Ceph原理与实践》——2.1 数据寻址方案

第2章 Ceph 架构


本章探讨分布式存储系统的数据寻址方式,从数据寻址以及 I/O 流程入手,逐步揭开Ceph 存储系统的神秘面纱。


2.1  数据寻址方案


存储系统的核心功能是数据的存取,实现这一目标的前提是正确、高效的数据寻址策略,即存储系统首要解决的问题是数据写到哪里去,数据从哪里读出。

经过学术界和工业界多年的探索和实践,数据寻址的方式基本被归结为两大类,分别是查表型寻址方式(有中心的非对称式架构)与计算型寻址方式(无中心的对称式架构),下面将对两类方案做详细对比。


2.1.1  查表型寻址方式

在早期的数据系统中,基于查表的数据寻址是很自然且有效的方式,至今诸多系统都仍在使用。

比如单机文件系统,从创建至今,依然是以该方式为主,不论是像 Ext4、Zfs 这类基于多级数组的方式,还是 Btrfs 这类基于 B-Tree 的方式,本质上都是基于查表的实现,区别仅仅在于优化查表的时间效率和空间利用率上。在数据系统的另一大领域——数据库系统中,当今流行的不论是基于 B-Tree 或是基于 LSM-Tree 的存储引擎,都没有绕开使用查表这一方式来解决数据位置映射问题。

对于分布式存储系统,较早时期的系统架构设计中会很自然地沿用这种由单机系统延伸出来的已有特性,所以查表方式也被分布式存储系统广泛采纳并加以实现。这类系统中的典型代表是大家比较熟悉的由 Google 发表在 SOSP'03 上的 GFS(Google File System)分布式存储系统,GFS 是一个具有松散 POSIX 语义的文件系统,面向大文件场景进行优化,它的典型特征是数据与索引分离进行存储,即数据面的核心操作不会经过索引面,而索引面解决的问题就是人们关心的数据寻址问题。

GFS 将所有元数据存储于所谓的 Master 节点上,Master 节点应对前端对数据路由的查询和更新操作,是全局寻址信息的权威记录,这样的设计称为“中心化索引”,中心化索引的架构具备简单且高效的特性,基于数据、索引分离的设计理念使得 Master 节点不会成为整个系统 I/O 操作的瓶颈,而面向大文件的设计场景也使得元数据的规模不会非常大,有效地规避了拓展性问题。GFS 这类系统架构并不完美,在应对海量小文件的场景下会产生诸多问题。当然,GFS 通过层级存储(Layering Storage)的设计依靠 BigTable 缓解了这一问题,但在海量小文件存储场景下,中心化索引面临的性能问题和架构劣势仍会逐步凸显出来。

值得肯定的是,GFS 这类架构引领了分布式存储 10 年的风向标,有大量的系统追随这一架构。或者说,GFS 更像是那个时代最佳的分布式存储系统元数据索引解决方案。

后来,随着业界对基于中心索引架构带来的一系列如 SPOF(Single Point of Failure)、元数据性能 / 规模等问题的探索,大家越来越倾向于使用 shared-nothing 的方式来解决分布式存储的架构问题,这一阶段大量的系统涌现出来,包括 Swift、Ceph、Dynamo 等,它们都采用了所谓的“去中心化索引”的方式进行架构设计,也就是基于计算的寻址方式。


2.1.2  计算型寻址方式


如果将 CPU-Intensive 的索引寻址操作置于中心节点,中心节点必然面临性能瓶颈,如果我们能够采用分而治之的方式,将寻址操作分散到更多甚至集群中所有的存储节点中去,就可以有效地解决这个问题。“分而治之”即要求各节点能够基于本地状态进行寻址自治,而在分布式系统中,特别是使用普通商用服务器进行部署的大规模系统,各节点具有天生的故障可能性,当一个节点掉线,其数据 / 状态就有可能无法恢复,所以必须设计出一套能够具有让数据在无状态节点之间进行寻址能力的系统,显然,只有基于计算才具备实现这一能力的可能。当然,从本书后文对 Ceph 存储系统的 CRUSH 算法描述来说,存储节点并不是完全的无状态,存储系统需要依赖一小部分集群信息进行数据存储位置的计算寻址。

有很多的算法致力于解决该问题,比如 Swift 和 Dynamo 中被广泛应用的一致性 Hash算法,该算法能够较好地解决普通 Hash 算法被人诟病的故障后数据迁移规模的问题。但其本身依然有诸多缺点,比如对异构设备 / 容灾域管理不便、数据路由稳定性等问题,容易在分布式存储系统中形成无谓的数据搬迁流量。

开 源 项 目 Ceph 在 其 分 布 式 文 件 系 统 的 实 现 中 提 出 了 CRUSH 算 法(Controlled Scalable Decentralized Placement of Replicated Data,可控的、可扩展的、分布式的伪随机数据分布算法),该算法不仅吸收了一致性 Hash 算法的随机性,也对一致性 Hash 算法面临的诸多问题提出了可行的解决方案,并付诸工程实现,这使得 CRUSH 成为计算寻址方式的代表算法。

对于该算法的详细描述本书后续章节会详细展开,本节重点描述该算法的创新性。CRUSH 算法通过伪随机的方式,在数据分布过程中提供较好的节点均衡,同时通过对节点拓扑的管理,能够在节点不可用、上下线过程中提供较低的数据迁移率,保持存储系统数据分布的局部稳定性。

CRUSH 算法的出现为数据系统的设计提供了全新的思路,似乎为海量数据的系统提供了一条明路。但以 CRUSH 为核心的 Ceph 系统似乎在多年以后,还是没有在超大规模系统实践中证明自身价值,本书也从实践的角度对此提出了一些见解。而与此相反,在 GFS系统诞生 10 年之后,我们发现这样一个不争的事实:基于中心化索引进行设计的存储系统在面对海量数据、大规模节点部署的场景下依然保持了很好的伸缩性,且运维以及系统可观测性上都要表现得更好、更直观。


2.1.3  鹿死谁手,犹未可知


在大型系统设计中,经常会看到一种“三十年河东,三十年河西”的反差现象。举个例子,在早期的系统开发中,为了简化应用开发者对系统操作、数据操作的复杂度,人们抽象出了操作系统和文件系统这些概念,而随着近些年底层开发者对性能越来越极致的追求,越来越多的系统开始采用 kernel-bypass、去文件系统等设计理念。

类似地,在近 10 年对去中心化设计思潮的追求之后,似乎越来越多的系统又走回了中心化设计的道路上。比较有代表性的是微软的 Azure Storage 和阿里巴巴的盘古存储系统,两者都是对 GFS 这一模型的延伸和强化,它们都在海量的数据和业务下得到了验证,是适合超大规模存储系统使用的设计模式。

目录
打赏
0
0
0
0
45
分享
相关文章
|
6天前
|
Doris基础-架构、数据模型、数据划分
Apache Doris 是一款高性能、实时分析型数据库,基于MPP架构,支持高并发查询与复杂分析。其前身是百度的Palo项目,现为Apache顶级项目。Doris适用于报表分析、数据仓库构建、日志检索等场景,具备存算一体与存算分离两种架构,灵活适应不同业务需求。它提供主键、明细和聚合三种数据模型,便于高效处理更新、存储与统计汇总操作,广泛应用于大数据分析领域。
78 2
软考软件评测师——计算机组成与体系结构(分级存储架构)
本内容全面解析了计算机存储系统的四大核心领域:虚拟存储技术、局部性原理、分级存储体系架构及存储器类型。虚拟存储通过软硬件协同扩展内存,支持动态加载与地址转换;局部性原理揭示程序运行特性,指导缓存设计优化;分级存储架构从寄存器到外存逐级扩展,平衡速度、容量与成本;存储器类型按寻址和访问方式分类,并介绍新型存储技术。最后探讨了存储系统未来优化趋势,如异构集成、智能预取和近存储计算等,为突破性能瓶颈提供了新方向。
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
碧桂园服务通过引入 EMR Serverless StarRocks 存算分离架构,解决了海量数据处理中的资源利用率低、并发能力不足等问题,显著降低了硬件和运维成本。实时查询性能提升8倍,查询出错率减少30倍,集群数据 SLA 达99.99%。此次技术升级不仅优化了用户体验,还结合AI打造了“一看”和“—问”智能场景助力精准决策与风险预测。
333 69
成本直降30%!RDS MySQL存储自动分层实战:OSS冷热分离架构设计指南
在日均订单量超500万的场景下,MySQL数据年增200%,但访问集中在近7天(85%)。通过冷热数据分离,将历史数据迁移至OSS,实现存储成本下降48%,年省72万元。结合RDS、OSS与Redis构建分层架构,自动化管理数据生命周期,优化查询性能与资源利用率,支撑PB级数据扩展。
100 3
为什么混合专家模型(MoE)如此高效:从架构原理到技术实现全解析
本文深入探讨了混合专家(MoE)架构在大型语言模型中的应用与技术原理。MoE通过稀疏激活机制,在保持模型高效性的同时实现参数规模的大幅扩展,已成为LLM发展的关键趋势。文章分析了MoE的核心组件,包括专家网络与路由机制,并对比了密集与稀疏MoE的特点。同时,详细介绍了Mixtral、Grok、DBRX和DeepSeek等代表性模型的技术特点及创新。MoE不仅解决了传统模型扩展成本高昂的问题,还展现出专业化与适应性强的优势,未来有望推动AI工具更广泛的应用。
493 4
为什么混合专家模型(MoE)如此高效:从架构原理到技术实现全解析
高性能云盘:一文解析RDS数据库存储架构升级
性能、成本、弹性,是客户实际使用数据库过程中关注的三个重要方面。RDS业界率先推出的高性能云盘(原通用云盘),是PaaS层和IaaS层的深度融合的技术最佳实践,通过使用不同的存储介质,为客户提供同时满足低成本、低延迟、高持久性的体验。
阿里二面:10亿级分库分表,如何丝滑扩容、如何双写灰度?阿里P8方案+ 架构图,看完直接上offer!
阿里二面:10亿级分库分表,如何丝滑扩容、如何双写灰度?阿里P8方案+ 架构图,看完直接上offer!
阿里二面:10亿级分库分表,如何丝滑扩容、如何双写灰度?阿里P8方案+ 架构图,看完直接上offer!
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
94 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
Spring框架 - 深度揭秘Spring框架的基础架构与工作原理
所以,当你进入这个Spring的世界,看似一片混乱,但细看之下,你会发现这里有个牢固的结构支撑,一切皆有可能。不论你要建设的是一座宏大的城堡,还是个小巧的花园,只要你的工具箱里有Spring,你就能轻松搞定。
115 9
RocketMQ原理—5.高可用+高并发+高性能架构
本文主要从高可用架构、高并发架构、高性能架构三个方面来介绍RocketMQ的原理。
484 21
RocketMQ原理—5.高可用+高并发+高性能架构
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问