前言

我们的 ceph 集群里面的节点存在两种不同硬件配置规格的节点, 一种是老机器: 由之前的其他用途的服务器移过来。二种是新机器:专门为存储集群规划配置的。

ceph 最佳实践是存储节点使用同样的硬件配置,对硬件配置不一样的集群,叫做异构集群。
异构集群的应对一直是业界难点。对 ceph 而言,如果是异构集群,无法在性能和空间利用率上取得平衡。(尽管可以利用 osd 权重解决空间利用率的问题,却会影响性能)

而我们的集群通过一个巧妙的方法,规避了该问题,现在做一下说明,需要以后在维护的时候注意一下。

硬件情况

老机器配置:除系统盘外,有 7 块数据盘(其中 6 块机械盘, 1 块 ssd),共四台机器。

新机器配置:除系统盘外,有12 块 机械盘, 1 块 ssd。 剩下的节点都是统一的新配置,如果需要扩容,没有特殊情况也建议都统一按着新机器配置来采购硬件。

老机器的 cpu 配置比新机器的 cpu 配置略强。

配置策略

  • 老机器硬盘分区:

    • nvme ssd 2T
      分成 6 个 150 G + 963G

      • 6 个 150 G 的分区叫做用作 osd 的block.db (元数据)分区
      • 963G 用作对象存储的 index pool
    • 6 个机械盘
      用做 osd 的 data 位置,不需要分区
  • 新机器上的硬盘分区

    • nvme ssd 2T
      分成 12 个 150G。
    • 机械盘 12 块
      用做 osd 的 data 位置,不需要分区

不管新机器还是老机器, 都是由一个 150 G 的 block.db 分区 + 一个 12 T 的机械盘组成一个 osd。
也就是

单个 osd 的总容量 = block.db分区容量 + data分区容量

这样保证了集群中每个 osd 的总容量大小是一致的(这是关键),同时对于老配置机器上剩下的 963G ssd ,单独新建 osd, 总共 4 个这样的 osd 分布在不同的节点, 用作对象存储的 index pool, 没有浪费。

检查

机器目前状况:
ceph osd df
同一个 pool 内的每个 osd 上分布的 pg 数差异不大,表示正常。

ceph df
对 index pool 的容量使用不大。 1.2 TiB 够用,同时 有 4 个节点保障高可用。

总结:

大公司还是建议每个集群保持一样的磁盘配置,在小公司,不得已的情况, 不希望浪费已有机器资源的情况下可以参考上面的方法,
具体思路是,不同的 pool 下面的 osd 大小可以不一致。

标签: none

添加新评论