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 部分。
在以下示例中,名为 data0、data1 和 data2 的主机使用扩展的逻辑名称,如 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
}