2.6. 开发 CRUSH 层次结构


作为存储管理员,在部署 Ceph 存储集群和对象网关时,通常 Ceph 对象网关具有默认的 zone group 和 zone。Ceph 存储群集将具有默认的池,后者使用 CRUSH 层次结构和默认 CRUSH 规则的 CRUSH map。

重要

默认 rbd 池可以使用默认的 CRUSH 规则。如果 Ceph 客户端已使用它们存储客户端数据,请不要 删除 默认规则或层次结构。

生产网关通常使用自定义域、zone group 和 zone,具体取决于网关的使用和地理位置。此外,Ceph 存储群集将具有具有多个 CRUSH 层次结构的 CRUSH map。

  • 服务池: 至少一个 CRUSH 层次结构将用于服务池,并且可能用于数据。服务池包含 .rgw.root 以及与区域关联的服务池。服务池通常位于单个 CRUSH 层次结构下,并使用复制来实现数据持久性。数据池也可能使用 CRUSH 层次结构,但池通常配置有纠删代码以实现数据持久性。
  • index 至少将一个 CRUSH 层次结构 SHOULD 用于索引池,其中 CRUSH 层次结构映射到高性能介质,如 SSD 或 NVMe 驱动器。bucket 索引可能会成为性能瓶颈。红帽建议在 CRUSH 层次结构中使用 SSD 或 NVMe 驱动器。在用于 Ceph OSD 日志的 SSD 或 NVMe 驱动器上创建索引分区。另外,索引应该配置有存储桶分片。
  • placement Pools: 每个放置目标的池包括存储桶索引、数据存储桶和 bucket 额外。这些池可以属于单独的 CRUSH 层次结构。由于 Ceph 对象网关可以支持多个存储策略,因此存储策略的存储桶池可能与不同的 CRUSH 层次结构关联,反映不同的用例,如 IOPS 优化、吞吐量和容量优化等。bucket 索引池 SHOULD 使用自己的 CRUSH 层次结构将 bucket 索引池映射到更高的性能存储介质,如 SSD 或 NVMe 驱动器。

2.6.1. 创建 CRUSH root

从管理节点上的命令行,为各个 CRUSH 层次结构在 CRUSH map 中创建 CRUSH roots。必须 至少有一个 CRUSH 层次结构,用于可能也提供数据存储池的服务池。bucket 索引池的 SHOULD 至少是一个 CRUSH 层次结构,映射到高性能存储介质,如 SSD 或 NVMe 驱动器。

如需有关 CRUSH 层次结构的详细信息,请参见 Red Hat Ceph Storage 指南 5 中的 CRUSH 层次结构章节

若要手动编辑 CRUSH map,请参阅 Red Hat Ceph Storage 策略指南 5 中的编辑 CRUSH map 部分

在以下示例中,名为 data0data1data2 的主机使用扩展的逻辑名称,如 data0-sas -sd、data0-index 等等,因为有多个 CRUSH 层次结构指向同一物理主机。

典型的 CRUSH root 可能代表具有 SAS 驱动器和 SSD 的节点(用于日志)。例如:

##
# SAS-SSD ROOT DECLARATION
##

root sas-ssd {
  id -1   # do not change unnecessarily
  # weight 0.000
  alg straw
  hash 0  # rjenkins1
  item data2-sas-ssd weight 4.000
  item data1-sas-ssd weight 4.000
  item data0-sas-ssd weight 4.000
}

用于 bucket 的 CRUSH root 索引 SHOULD 代表高性能介质,如 SSD 或 NVMe 驱动器。考虑在存储 OSD 日志的 SSD 或 NVMe 介质上创建分区。例如:

##
# INDEX ROOT DECLARATION
##

root index {
  id -2    # do not change unnecessarily
  # weight 0.000
  alg straw
  hash 0  # rjenkins1
  item data2-index weight 1.000
  item data1-index weight 1.000
  item data0-index weight 1.000
}

2.6.2. 创建 CRUSH 规则

与默认的 CRUSH 层次结构一样,CRUSH map 也包含默认的 CRUSH 规则。

注意

默认 rbd 池可能使用此规则。如果其他池已使用它存储客户数据,请不要删除默认规则。

有关 CRUSH 规则的常规详情,请参见 Red Hat Ceph Storage 5 的 Red Hat Ceph Storage 策略指南中的 CRUSH 规则 部分。要手动编辑 CRUSH 映射,请参见 Red Hat Ceph Storage 5 的 Red Hat Ceph Storage Storage 策略指南中的 编辑 CRUSH map 部分。

对于每一 CRUSH 层次结构,创建一个 CRUSH 规则。下例演示了 CRUSH 层次结构的规则,该层次结构将存储服务池,包括 .rgw.root。在本例中,根 sas-ssd 充当 CRUSH 主层次结构。它使用名称 rgw-service 来区分其自身和默认规则。步骤取 sas- sd 行告知池使用在 Creating CRUSH roots 中创建的 sas-ssd root,其子存储桶包含带有 SAS 驱动器和高性能存储介质的 OSD,如 SSD 或 NVMe 驱动器(如 SSD 或 NVMe 驱动器)。step chooseleaftype rack 部分是故障域。在以下示例中,这是一个机架。

##
# SERVICE RULE DECLARATION
##

rule rgw-service {
 type replicated
 min_size 1
 max_size 10
 step take sas-ssd
 step chooseleaf firstn 0 type rack
 step emit
}
注意

在示例中,如果数据被复制三次,集群中的至少应该有三个机架,其中包含相似数量的 OSD 节点。

提示

type replicated 设置与数据持久性、副本数或纠删代码 无关。仅支持 replicated

下例演示了将存储数据池的 CRUSH 层次结构的规则。在本例中,根 sas-ssd 充当 CRUSH 主层次结构-​ 与服务规则相同的 CRUSH 层次结构。它使用 rgw-throughput 来区分其自身与默认规则和 rgw-service步骤取 sas- sd 行告知池使用在 Creating CRUSH roots 中创建的 sas-ssd root,其子存储桶包含带有 SAS 驱动器和高性能存储介质的 OSD,如 SSD 或 NVMe 驱动器(如 SSD 或 NVMe 驱动器)。step chooseleaftype host 部分是故障域。在以下示例中,这是主机。注意该规则使用相同的 CRUSH 层次结构,但使用了不同的故障realm。

##
# THROUGHPUT RULE DECLARATION
##

rule rgw-throughput {
 type replicated
 min_size 1
 max_size 10
 step take sas-ssd
 step chooseleaf firstn 0 type host
 step emit
}
注意

在示例中,如果池将纠删代码与更多的数据进行纠删代码,且编码区块数超过默认值,则集群中的机架应至少包含数量相似的 OSD 节点,以便于纠删代码区块。对于较小的集群,这可能不实际,因此,示例中使用 host 作为 CRUSH 故障realm。

下例演示了 CRUSH 层次结构的规则,该规则将存储索引池。在本例中,根 index 充当 CRUSH 主层次结构。它使用 rgw-index 将自身与 rgw-servicergw-throughput 区分开来。step take index 行告知池使用 Creating CRUSH Roots 创建 index root,其子存储桶包含高性能存储介质,如 SSD 或 NVMe 驱动器或 SSD 上存储 OSD 日志的 NVMe 驱动器或 NVMe 驱动器上。step chooseleaftype rack 部分是故障域。在以下示例中,这是一个机架。

##
# INDEX RULE DECLARATION
##

rule rgw-index {
 type replicated
 min_size 1
 max_size 10
 step take index
 step chooseleaf firstn 0 type rack
 step emit
}

2.6.3. 其它资源

  • 有关 CRUSH 层次结构的常规详细信息,请参阅 Red Hat Ceph Storage Storage 策略指南中的 CRUSH 管理 部分。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.