Ceph IO 模式:好的方面

shan

Ceph IO 模式分析第一部分:好的方面

一切都关于性能。基准测试的艺术非常复杂。预测、分析和解释你的基准测试始终都很困难。有时你会得到数字,但你不知道它们的含义,是好是坏?好坏程度如何?在本文中,我将尽力让你最好地理解 Ceph 的内部工作原理。

好的方面

I.1. 确定性对象放置

我相信现在大家都很了解,但让我再解释一下这个概念。Ceph 确定对象放置的方式有些独特。

客户端会写入(放置和依赖关系如图所示)

  • > 到单个池(包含对象的扁平实体)
  • > 这个池包含放置组(可以将其视为池的分片)
  • > 这个 PG 包含对象
  • > 这些对象属于单个放置组

一切都基于计算,这使得整个过程可重复且确定性。因此,无需在哈希表上查找,只需公式和计算。该公式更广为人知的是 CRUSH 算法,它决定了集群中对象的放置位置。

I.2. 聚合:集群级别

一旦写入 Ceph,所有对象都会均匀地分布在整个集群中,包括机器和磁盘。.

上面的图片以 RBD 块设备为例,它可以映射到物理主机或虚拟机中。行为保持不变,因此我们不需要区分这两种情况。在这种情况下,客户端生成大量具有 4K 块的随机操作。显然,每个 OSD 代表一个硬盘驱动器。

如前一节所述,每当客户端想要执行 IO 操作时,它必须计算放置位置。借助 CRUSH 算法,所有 4K IO 都会分布在整个集群中,从而充分利用整个网络速度、磁盘 IOPS 和带宽。

注意:这里的潜在瓶颈可能是交换机背板,请务必确保它能够承受每个链路的最大速度。

I.2. 聚合:OSD 级别

一旦 IO 进入 OSD,无论原始模式如何,它都会变成顺序的.

上面的图片描述了对象客户端计算最终进入与另一个客户端相同的 OSD 的情况。这是一个非常常见的情况,而且一直都在发生。多个客户端计算它们的对象位置,它们最终都进入特定的 OSD。

好处是写入日志会进行序列化。基本上,客户端写入会排队到日志中,等待刷新到后端存储,就像它们进入 FIFO 一样。

注意:为了真正受益于这种设计,请使用专用磁盘来存储日志,通常是 SSD。

确认有效性:主 OSD 会同时将数据发送到其副本并将其放入日志中。

下次再见,下一部分:坏的方面