Ceph 擦除编码池支持¶
问题描述¶
Ceph 擦除编码池为复制池提供了一种替代方案,具有可比的性能,同时为相同的有效可用容量所需的原始块设备存储空间更少。
Ceph charms 和使用 Ceph 服务的 charms 目前不支持使用擦除编码池。
提议的变更¶
ceph-{mon,proxy} broker 将扩展以支持创建擦除编码池。broker 中存在一些代码来支持 EC 池,但从未经过测试,因此可能需要一些更新和重构。
charmhelpers 和 charms.ceph 中都存在一些现有的支持,用于支持创建擦除编码池;但是,它在很大程度上未经测试,需要在 OpenStack Charms 中启用擦除编码的工作中进行验证和更新。 现有差距包括对 EC 覆盖的支持(对于大多数 RBD 用例是必需的)以及提供 EC 池的最小大小。
Ceph 已经支持擦除编码一段时间了,但是覆盖(RBD 用例所需)直到 Luminous 才实现,因此 Ceph 的最低版本要求是 Luminous,该版本随 Ubuntu 18.04 LTS 一起发布。
Ceph 部署必须使用 Bluestore - 基于 Filestore 的部署在没有使用缓存层的情况下无法支持 RBD 用例(这在 charmed 部署中不受支持)。
消费 charms 将更新,以包含新的配置选项来支持使用 EC 池 - 这包括以下 charms
glance (rbd)
cinder-ceph (rbd)
nova-compute (rbd)
ceph-radosgw
ceph-iscsi (rbd)
ceph-fs
选项 |
类型 |
默认值 |
描述 |
|---|---|---|---|
pool-type |
string |
replicated |
用于存储的 Ceph 池类型 - 有效值是 ‘replicated’ 和 ‘erasure-coded’。 |
ec-profile-name |
string |
要为 EC 池创建的 EC 配置文件的名称。如果未定义,将根据应用程序使用的池的名称生成配置文件名称。 |
|
ec-rbd-metadata-pool |
string |
要创建的元数据池的名称(用于 RBD 用例)。如果未定义,将根据应用程序使用的池的名称生成元数据池名称。元数据池始终是复制的(不是擦除编码的)。 |
|
ec-profile-k |
int |
1 |
EC 数据池将使用的的数据块数量。K+M 因子不应大于可用 AZ 的数量,以实现平衡。 |
ec-profile-m |
int |
2 |
EC 数据池将使用的编码块数量。K+M 因子不应大于可用 AZ 的数量,以实现平衡。 |
ec-profile-locality |
int |
(lrc 插件 - l) 将编码和数据块分组为大小为 l 的集合。例如,对于 k=4 和 m=2,当 l=3 时,创建两个包含三个元素的组。每个集合可以在不读取其他集合中的块的情况下进行恢复。请注意,使用 lrc 插件会比 isa 或 jerasure 产生更多的原始存储空间,以降低恢复操作的成本。 |
|
ec-profile-crush-locality |
string |
(lrc 插件) 每个由 l 定义的块集合将存储在 CRUSH bucket 中的类型。例如,如果设置为 rack,则每个包含 l 个块的组将放置在不同的机架中。它用于创建 CRUSH 规则步骤,例如 ‘step choose rack’。如果未设置,则不执行此类分组。 |
|
ec-profile-durability-estimator |
int |
(shec 插件 - c) 每个数据块都包含在其计算范围内的奇偶校验块的数量。该数字用作耐久性估计器。例如,如果 c=2,则可以使 2 个 OSD 宕机而不会丢失数据。 |
|
ec-profile-helper-chunks |
int |
(clay 插件 - d) 在恢复单个块期间请求发送数据的 OSD 数量。需要选择 d,使得 k+1 <= d <= k+m-1。d 越大,节省越多。 |
|
ec-profile-scalar-mds |
string |
(clay 插件) 指定用作分层构建中的构建块的插件。它可以是以下之一:jerasure、isa 或 shec。 |
|
ec-profile-plugin |
string |
jerasure |
用于此应用程序池的 EC 插件。可用的插件有:jerasure、lrc、isa、shec、clay。 |
ec-profile-technique |
string |
reed_sol_van |
此应用程序池使用的 EC 配置技术 - 将根据通过 ec-profile-plugin 配置的插件进行验证。支持的技术有 ‘reed_sol_van’、‘reed_sol_r6_op’、‘cauchy_orig’、‘cauchy_good’、‘liber8tion’ 用于 jerasure,‘reed_sol_van’、‘cauchy’ 用于 isa,以及 ‘single’、‘multiple’ 用于 shec。 |
ec-profile-device-class |
string |
用于擦除配置文件的放置组的 CRUSH 映射中的设备类 - 有效值:ssd、hdd 或 nvme(或保持未设置以不使用设备类)。 |
RBD 用例需要一个元数据池,该元数据池始终配置为复制池,以及用于卷数据存储的基础 EC 编码池。消费应用程序配置为使用元数据池,而数据池通过 ‘ceph.conf’ 为特定应用程序配置 - 例如
rbd default data pool = glance
由于 OpenStack 服务指定到应用程序特定 ceph.conf 配置文件中的完整路径,因此默认数据池配置不需要限定到特定的客户端标识符。
reactive 和 operator framework charms 的 ceph-mon 接口实现将更新,以包含对 EC 的支持。
OpenStack 版本支持将在本规范的实施过程中进行验证。
此功能不依赖于 Juju 的特定版本。
备选方案¶
可以使用 ceph-mon charm 提供的操作在部署后创建 EC 池。但是,除了 fork 消费 charms 之外,目前没有办法向 Ceph 和 OpenStack 服务提供使用 EC 池的 RBD 用例所需的配置。
实现¶
负责人¶
主要负责人
james-page
gnuoy
Gerrit Topic¶
对于与此规范相关的所有补丁,请使用 Gerrit 主题 “ceph-erasure-coding”。
git-review -t ceph-erasure-coding
工作项¶
Ceph 核心 EC 启用
charms.ceph:审查并添加 RBD EC 池用法所需的特性。
charmhelpers:审查并添加 RBD EC 池用法所需的特性。
ceph-mon:同步 charms.ceph + charmhelpers 的更新,并更新 broker 代码库以支持任何必需的更改。
ceph-proxy:同步 charms.ceph + charmhelpers 的更新,并更新 broker 代码库以支持任何必需的更改。
接口
charm-interface-ceph-client:更新以添加对 EC 池和配置文件创建的支持。
ops-interface-ceph-client:更新以添加对 EC 池和配置文件创建的支持。
charm-interface-ceph-mds:更新以添加对 EC 池和配置文件创建的支持。
charm-interface-ceph-rbd-mirror:根据对 ceph rbd-mirror 中 EC 支持的支持,进行审查。
OpenStack RBD 用例
glance:添加所需的配置选项支持和对 ceph broker 交互的更新,以支持 EC 池。添加功能测试,以覆盖至少受支持的最早和最新版本,作为 recheck-full 预提交测试的一部分。
cinder-ceph:添加所需的配置选项支持和对 ceph broker 交互的更新,以支持 EC 池。添加功能测试,以覆盖至少受支持的最早和最新版本,作为 recheck-full 预提交测试的一部分。
nova-compute:添加所需的配置选项支持和对 ceph broker 交互的更新,以支持 EC 池。添加功能测试,以覆盖至少受支持的最早和最新版本,作为 recheck-full 预提交测试的一部分。
Ceph RBD 用例
ceph-iscsi:添加所需的配置选项支持和对 ceph broker 交互的更新,以支持 EC 池。添加功能测试,以覆盖至少受支持的最早和最新版本,作为 recheck-full 预提交测试的一部分。
ceph-rbd-mirror:验证 EC 池是否不支持 rbd-mirror,并在发布说明和 charm 部署指南中记录。
其他用例
ceph-radosgw:添加所需的配置选项支持和对 ceph broker 交互的更新,以支持 EC 池。添加功能测试,以覆盖至少受支持的最早和最新版本,作为 recheck-full 预提交测试的一部分。除了 .data 池之外,所有池都必须继续是复制池。
ceph-radosgw:验证对多站点 RADOS gateway 复制的支持。
ceph-fs:添加所需的配置选项支持和对 ceph broker 交互的更新,以支持 EC 池。添加功能测试,以覆盖至少受支持的最早和最新版本,作为 recheck-full 预提交测试的一部分。
仓库¶
不需要新的 git 仓库。
文档¶
charm 部署指南将更新,以详细说明使用带有 Ceph 擦除编码池的 OpenStack Charms 的方法。这将包括有关如何在 Ceph 部署中使用 EC 池构建区域的详细信息,因为要求可能与复制池完全不同。
安全性¶
使用此功能不会暴露额外的安全攻击面。
测试¶
测试 EC 池不需要特殊的硬件。
将向消费 charms 添加功能测试,以验证 OpenStack 和 Ceph 用例中 EC 池的创建和使用。
将作为本规范的一部分对 EC 池进行性能测试,以基准测试 EC 池配置与复制池配置。
依赖项¶
不依赖于其他规范。