【问题标题】:Ceph: How to place a pool on specific OSD?Ceph:如何在特定的 OSD 上放置一个池?
【发布时间】:2019-09-23 10:24:36
【问题描述】:

我有一个 66 个 OSD 的 Ceph 集群,带有一个 data_pool 和一个 metadata_pool

我想将metadata_pool 放置在 3 个具有 SSD 的特定 OSD 上,因为所有其他 63 个 OSD 都具有较旧的磁盘。

如何强制 Ceph 将 metadata_pool 放置在特定 OSD 上?

提前致谢。

【问题讨论】:

    标签: ceph


    【解决方案1】:

    您需要为您的池制定一个特殊的粉碎规则,该规则将定义要使用的存储类型。有一个nice answer in the proxmox forum

    归结为:

    Ceph 知道哪个驱动器是 HDD 或 SDD。反过来,此信息可用于创建粉碎规则,该规则将仅将 PG 放置在该类型的设备上。

    ceph 自带的默认规则是 replicated_rule:

    # rules
    rule replicated_rule {
        id 0
        type replicated
        min_size 1
        max_size 10
        step take default
        step chooseleaf firstn 0 type host
        step emit
    }
    

    因此,如果您的 ceph 集群包含这两种类型的存储设备,您可以使用以下命令创建新的粉碎规则:

    $ ceph osd crush rule create-replicated replicated_hdd default host hdd
    $ ceph osd crush rule create-replicated replicated_ssd default host ssd
    

    新创建的规则看起来几乎相同。这是硬盘规则:

    rule replicated_hdd {
        id 1
        type replicated
        min_size 1
        max_size 10
        step take default class hdd
        step chooseleaf firstn 0 type host
        step emit
    }
    

    如果您的集群不包含 hdd 或 ssd 设备,则规则创建将失败。

    在此之后,您将能够为现有池设置新规则:

    $ ceph osd pool set YOUR_POOL crush_rule replicated_ssd
    

    集群将进入 HEALTH_WARN 并将对象移动到 SSD 上的正确位置,直到集群再次恢复正常。

    此功能was added with ceph 10.x aka Luminous

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多