搜索

第 2 章 Ceph 核心组件

download PDF

Red Hat Ceph Storage 集群可以拥有大量 Ceph 节点,以实现无限扩展、高可用性和性能。每个节点利用非专有硬件和智能 Ceph 守护进程,它们相互通信:

  • 写和读数据
  • 压缩数据
  • 通过复制或纠删代码数据来确保持久性
  • 监控和报告集群运行状况,也称为 'heartbeating(心跳)'
  • 动态重新分发数据也称为"backfilling(回填)"
  • 确保数据完整性;以及.
  • 从故障中恢复。

对于读取和写入数据的 Ceph 客户端接口,Red Hat Ceph Storage 集群类似于存储数据的简单池。但是,librados 和存储集群通过对客户端接口完全透明的方式执行许多复杂的操作。Ceph 客户端和 Ceph OSD 都使用 CRUSH(可扩展哈希下的受控复制)算法。以下小节详细介绍了 CRUSH 如何使 Ceph 无缝执行这些操作。

先决条件

  • 对分布式存储系统有基本了解。

2.1. Ceph 池

Ceph 存储集群将数据对象存储在名为"Pools"的逻辑分区中。Ceph 管理员可以创建用于特定类型的数据的池,例如用于块设备、对象网关或只是将一组用户与另一组隔离开来。

从 Ceph 客户端的角度来看,存储群集非常简单。当 Ceph 客户端使用 I/O 上下文读取或写入数据时,它始终连接到 Ceph 存储集群中的存储池。客户端指定池名称、用户和机密密钥,因此池似乎要充当含有对数据对象的访问控制的逻辑分区。

实际上,Ceph 池不只是用于存储对象数据的逻辑分区。池在 Ceph 存储集群分发和存储数据的方式中发挥着重要作用。但是,这些复杂的操作对 Ceph 客户端是完全透明的。

Ceph 池定义:

  • 池类型: 在早期版本的 Ceph 中,池仅维护对象的多个深度副本。现在,Ceph 可以维护一个对象的多个副本,或者可以使用纠删代码来确保持久性。数据持久性方法在池范围内,在创建池后不会更改。池类型定义了在创建池时的数据持久性方法。池类型对客户端完全透明。
  • 放置组: 在exabyte 级别的扩展存储集群中,Ceph 池可能会存储数百万的数据对象或更多。Ceph 必须处理许多类型的操作,包括通过副本或纠删代码区块数据持久性,通过清理或 CRC 检查、复制、重新平衡和恢复来数据完整性。因此,以每个对象为基础管理数据会带来可扩展性和性能瓶颈。Ceph 通过将池分片划分为放置组来解决这一瓶颈。CRUSH 算法计算用于存储对象并计算 PG 的 OSD 法集的 PG。CRUSH 将每个对象放入 PG 中。然后,CRUSH 将每个 PG 存储在一组 OSD 中。系统管理员在创建或修改池时设置放置组计数。
  • CRUSH Ruleset: CRUSH 承担另一个重要角色:CRUSH 可以检测故障域和性能域。CRUSH 可以通过存储介质类型来识别 OSD,并将 OSD 分层整理到节点、机架和行中。CRUSH 使 Ceph OSD 能够跨故障域存储对象副本。例如,对象的副本可以存储在不同的服务器机房、aisles、机架和节点中。如果集群的一个较大部分失败(如机架),集群仍然可以处于降级状态,直到集群恢复为止。

此外,CRUSH 支持客户端将数据写入特定类型的硬件,如 SSD、使用 SSD 日志的硬盘驱动器或硬盘驱动器,其与数据位于与数据相同的驱动器上。CRUSH 规则集确定池的故障域和性能域。管理员在创建池时设置 CRUSH 规则集。

注意

在创建池后,管理员将无法更改池的规则集。

  • 持久化 :在 exabyte 级别的扩展存储集群中,硬件故障是预料中的事件,而不是例外。当使用数据对象代表大型粒度存储接口(如块设备)时,为更大粒度接口丢失一个或多个数据对象可能会破坏更大粒度存储实体 - 不可取的渲染。因此,不能容忍数据丢失。Ceph 以两种方式提供高数据持久性:

    • 副本池将使用 CRUSH 故障域存储对象的多个深度副本,从而物理地分隔一个数据对象副本。也就是说,副本被分发到不同的物理硬件中。这会在硬件出现故障时提供了数据的持久性。
    • 纠删代码池将每个对象存储为 K+M 块,其中 K 代表数据区块,M 代表编码区块。sum 代表了用于存储对象的 OSD 的总数量,M 值代表可以失败的 OSD 数量,在有 M 的 OSD失败时仍可以恢复数据。

从客户端的角度来看,Ceph 是小巧的。客户端只是读取和写入池。但是,池在数据持久性、性能和高可用性方面扮演着重要角色。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.