带你读《存储漫谈:Ceph原理与实践》——2.3.1 PG 数量的选择

简介: 带你读《存储漫谈:Ceph原理与实践》——2.3.1 PG 数量的选择

2.3  Ceph 的归置组


Ceph 存储系统使用的 CRUSH 算法在一致性 Hash 算法的基础上充分考虑了多副本、故障域隔离等约束,尽量减少集群在故障场景下的数据迁移量,实现这一目标的关键举措即为 PG 逻辑概念的引入。

前文提到 Ceph 可以理解为对 RADOS 对象存储系统的二次封装,Ceph 中所有的用户数据都被抽象成多个 Object,如果 Ceph 存储系统以 Object 为追踪目标,那么要追踪的单元个体数量就太多了,不仅会消耗大量的计算资源,而且在一个有数以亿计对象(EB 级存储集群)的系统中直接追踪对象的位置及其元数据信息也是完全不现实的。Ceph 引进 PG逻辑概念,将一系列的 Object 聚合到 PG 里,并将 PG 映射到一系列的 OSD 上去。系统中PG 数量远远小于 Object 数量,存储系统以 PG 为存储单元个体,直接追踪 PG 状态,比较好地处理了性能和可扩展性的界限。

PG 的引入也会增加一些系统资源开销,如 PG 逻辑的处理会直接消耗存储节点的部分CPU 和内存,增大 PG 的数量会增加存储系统 Peering 状态处理的数量。


2.3.1  PG 数量的选择


上述分析可以看出,PG 是用户数据切片(Object)与真实提供存储空间的存储介质(OSD 守护进程)之间的纽带。Ceph 存储系统需要设置较为合理的 PG 数量,过少的 PG数量会导致集群 peer 过程太慢,数据迁移效率过低;过多的 PG 数量则会增加集群存储节点的计算资源负担。PG 的数量在 Ceph 的存储池(Pool)创建时指定,通常推荐每个 OSD守护进程承载 100 个 PG 较为合适,考虑到集群数据的副本策略,对于单存储池的简单场景,可以通过如下公式进行 PG 数量确定。

Total PGs=(OSDs×100)/Replicas

在上述数据寻址计算中,可以看到要对 Hash 计算结果进行取模运算,存储池的 PG 数量建议取值为 2 的n 次方,这样可以加速数据寻址的计算过程,即对上述公式计算结果,向上或向下靠近 2 的n 次方数值进行存储池的 PG 总数选取。

对于多存储池的复杂场景,可以参考 Ceph 官方推荐的计算器。

相关文章
|
3月前
|
存储 缓存 Cloud Native
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
|
3月前
|
存储 缓存 前端开发
Django 后端架构开发:存储层调优策略解析
Django 后端架构开发:存储层调优策略解析
49 2
|
3月前
|
存储 弹性计算 缓存
MPP架构数据仓库使用问题之ADB PG对于写入时的小文件问题该如何解决
MPP架构数据仓库使用问题之ADB PG对于写入时的小文件问题该如何解决
|
5天前
|
开发者 容器
Flutter&鸿蒙next 布局架构原理详解
本文详细介绍了 Flutter 中的主要布局方式,包括 Row、Column、Stack、Container、ListView 和 GridView 等布局组件的架构原理及使用场景。通过了解这些布局 Widget 的基本概念、关键属性和布局原理,开发者可以更高效地构建复杂的用户界面。此外,文章还提供了布局优化技巧,帮助提升应用性能。
64 4
|
5天前
|
存储 Dart 前端开发
flutter鸿蒙版本mvvm架构思想原理
在Flutter中实现MVVM架构,旨在将UI与业务逻辑分离,提升代码可维护性和可读性。本文介绍了MVVM的整体架构,包括Model、View和ViewModel的职责,以及各文件的详细实现。通过`main.dart`、`CounterViewModel.dart`、`MyHomePage.dart`和`Model.dart`的具体代码,展示了如何使用Provider进行状态管理,实现数据绑定和响应式设计。MVVM架构的分离关注点、数据绑定和可维护性特点,使得开发更加高效和整洁。
142 3
|
18天前
|
容器
Flutter&鸿蒙next 布局架构原理详解
Flutter&鸿蒙next 布局架构原理详解
|
19天前
|
存储 监控 分布式数据库
百亿级存储架构: ElasticSearch+HBase 海量存储架构与实现
本文介绍了百亿级数据存储架构的设计与实现,重点探讨了ElasticSearch和HBase的结合使用。通过ElasticSearch实现快速检索,HBase实现海量数据存储,解决了大规模数据的高效存储与查询问题。文章详细讲解了数据统一接入、元数据管理、数据一致性及平台监控等关键模块的设计思路和技术细节,帮助读者理解和掌握构建高性能数据存储系统的方法。
百亿级存储架构: ElasticSearch+HBase 海量存储架构与实现
|
29天前
|
前端开发 Java 应用服务中间件
21张图解析Tomcat运行原理与架构全貌
【10月更文挑战第2天】本文通过21张图详细解析了Tomcat的运行原理与架构。Tomcat作为Java Web开发中最流行的Web服务器之一,其架构设计精妙。文章首先介绍了Tomcat的基本组件:Connector(连接器)负责网络通信,Container(容器)处理业务逻辑。连接器内部包括EndPoint、Processor和Adapter等组件,分别处理通信、协议解析和请求封装。容器采用多级结构(Engine、Host、Context、Wrapper),并通过Mapper组件进行请求路由。文章还探讨了Tomcat的生命周期管理、启动与停止机制,并通过源码分析展示了请求处理流程。
|
26天前
|
存储 分布式计算 druid
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
44 3
|
26天前
|
消息中间件 分布式计算 druid
大数据-154 Apache Druid 架构与原理详解 基础架构、架构演进
大数据-154 Apache Druid 架构与原理详解 基础架构、架构演进
27 2

热门文章

最新文章