Ceph 存储操作

我们应该允许用户指定存储设备应添加到哪个存储类别。此操作将允许将一系列 osd 设备添加到指定的 Ceph 存储桶中。

问题描述

目前所有 osd 设备都被添加到同一个默认存储桶中,这使得有效地使用多种类型的存储变得不可能。例如,用户可能希望将 SSD/NVMe 设备绑定到快速/缓存存储桶,15k 旋转盘绑定到默认存储桶,以及 5k 低功耗旋转盘绑定到慢速存储桶,以便稍后在池配置中使用。

提议的变更

添加一个操作,该操作在 osd 设备列表中包含额外的元数据,从而允许为列出的设备指定存储桶类型。当 OSD 被创建时,这些 OSD 将被添加到指定的存储桶中。

备选方案

  • 用户可以指定预构建的使用配置文件,我们可以通过检测设备类型并根据配置的配置文件决定设备应该进入哪个存储桶来将设备类型映射到该配置文件。

    由于设计和实现使用配置文件以自动匹配任何用例的难度,因此放弃了此解决方案。它还需要大量的工作才能正确识别设备类型并决定将其放置在所需配置文件中的位置。

    此外,它将要求我们仅支持已部署的 ceph-osd 集群中的单个“配置文件”。

  • Charm 可以定义除了 osd 设备之外的其他存储连接点,从而允许用户指定他们应该将设备添加到哪个存储桶。

    放弃此解决方案的原因是,由于仅支持固定数量的绑定,并且由于向后兼容性要求而使更改更加困难,因此它被认为过于限制。

实现

负责人

主要负责人

Chris MacNaughton <chris.macnaughton@canonical.com>

联系方式

Chris Holcombe <chris.holcombe@canonical.com>

Gerrit Topic

对于与此规范相关的所有补丁,请使用 Gerrit 主题“storage-action”。

git-review -t storage-action

工作项

  1. 创建具有所需名称的存储桶。我们这样做是为了能够在指定的存储桶类型中创建池。这将由 ceph-mon charm 处理。

  2. 创建一个操作,该操作返回未使用的存储设备列表及其设备类型。

  3. 创建一个操作,该操作接收 osd-devicesstorage-type,后者将是一个枚举,用于添加到我们创建的存储桶中。与其成为用户指定的字符串,不如说是通过共享 charms_ceph 库提供的 ceph charms 中的枚举列表。

  4. 添加其他 charm 在通过 broker 创建池时请求应该支持其创建的池的存储桶的能力。

文档

这将需要添加额外的文档,说明如何正确使用该操作以及对其的期望。此文档将添加到 charm 的 README 文件中

安全性

这不应产生任何安全影响。

测试

需要新的单元测试和功能测试,以确保创建必要的存储桶,并且磁盘被添加到其中。

仓库

依赖项