带你读《存储漫谈: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月前
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
3月前
|
人工智能 前端开发 编译器
【AI系统】LLVM 架构设计和原理
本文介绍了LLVM的诞生背景及其与GCC的区别,重点阐述了LLVM的架构特点,包括其组件独立性、中间表示(IR)的优势及整体架构。通过Clang+LLVM的实际编译案例,展示了从C代码到可执行文件的全过程,突显了LLVM在编译器领域的创新与优势。
213 3
|
4月前
|
运维 持续交付 云计算
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
164 3
|
9天前
|
机器学习/深度学习 缓存 自然语言处理
深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
Tiktokenizer 是一款现代分词工具,旨在高效、智能地将文本转换为机器可处理的离散单元(token)。它不仅超越了传统的空格分割和正则表达式匹配方法,还结合了上下文感知能力,适应复杂语言结构。Tiktokenizer 的核心特性包括自适应 token 分割、高效编码能力和出色的可扩展性,使其适用于从聊天机器人到大规模文本分析等多种应用场景。通过模块化设计,Tiktokenizer 确保了代码的可重用性和维护性,并在分词精度、处理效率和灵活性方面表现出色。此外,它支持多语言处理、表情符号识别和领域特定文本处理,能够应对各种复杂的文本输入需求。
49 6
深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
|
4月前
|
存储 数据采集 弹性计算
Codota的存储架构通过多种方式保障数据安全
Codota的存储架构通过多种方式保障数据安全
44 4
|
2月前
|
Java Linux C语言
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
514 90
|
1月前
|
存储 SQL 缓存
MySQL原理简介—2.InnoDB架构原理和执行流程
本文介绍了MySQL中更新语句的执行流程及其背后的机制,主要包括: 1. **更新语句的执行流程**:从SQL解析到执行器调用InnoDB存储引擎接口。 2. **Buffer Pool缓冲池**:缓存磁盘数据,减少磁盘I/O。 3. **Undo日志**:记录更新前的数据,支持事务回滚。 4. **Redo日志**:确保事务持久性,防止宕机导致的数据丢失。 5. **Binlog日志**:记录逻辑操作,用于数据恢复和主从复制。 6. **事务提交机制**:包括redo日志和binlog日志的刷盘策略,确保数据一致性。 7. **后台IO线程**:将内存中的脏数据异步刷入磁盘。
|
2月前
|
存储 缓存 监控
ClickHouse 架构原理及核心特性详解
ClickHouse 是由 Yandex 开发的开源列式数据库,专为 OLAP 场景设计,支持高效的大数据分析。其核心特性包括列式存储、字段压缩、丰富的数据类型、向量化执行和分布式查询。ClickHouse 通过多种表引擎(如 MergeTree、ReplacingMergeTree、SummingMergeTree)优化了数据写入和查询性能,适用于电商数据分析、日志分析等场景。然而,它在事务处理、单条数据更新删除及内存占用方面存在不足。
584 21
|
2月前
|
存储 消息中间件 druid
Druid 架构原理及核心特性详解
Druid 是一个分布式、支持实时多维OLAP分析的列式存储数据处理系统,适用于高速实时数据读取和灵活的多维数据分析。它通过Segment、Datasource等元数据概念管理数据,并依赖Zookeeper、Hadoop和Kafka等组件实现高可用性和扩展性。Druid采用列式存储、并行计算和预计算等技术优化查询性能,支持离线和实时数据分析。尽管其存储成本较高且查询语言功能有限,但在大数据实时分析领域表现出色。
216 19
|
2月前
|
存储 SQL NoSQL
Doris 架构原理及核心特性详解
Doris 是百度内部孵化的OLAP项目,现已开源并广泛应用。它采用MPP架构、向量化执行引擎和列存储技术,提供高性能、易用性和实时数据处理能力。系统由FE(管理节点)和BE(计算与存储节点)组成,支持水平扩展和高可用性。Doris 适用于海量数据分析,尤其在电商、游戏等行业表现出色,但资源消耗较大,复杂查询优化有局限性,生态集成度有待提高。
195 15

热门文章

最新文章