Ceph 擦除编码开销概览

dmsimard

计算 Ceph 中复制池的存储开销很简单。将您拥有的空间量除以存储池的“大小”(副本数量)参数。

我们用一些大致的数字来举例:64 个 OSD,每个 4TB。

原始大小:64 * 4 = 256TB 大小 2:128 / 2 = 128TB 大小 3:128 / 3 = 85.33TB

复制池在开销方面成本高昂:大小 2 提供的弹性和开销与 RAID-1 相同。大小 3 提供的弹性比 RAID-1 更好,但代价是更大的开销。

解释擦除编码的原理会很快变得复杂。

我喜欢将复制池比作 RAID-1,将擦除编码池比作 RAID-5(或 RAID-6),因为它们都有数据块和恢复/奇偶校验/编码块。

擦除编码的吸引力在于,它可以提供与复制池相同(或更好)的弹性,但存储开销更低——代价是它所需的计算能力。

Ceph 已经支持擦除编码一段时间了,并且有有趣的文档可供参考

然而,擦除编码池需要一个 缓存层 才能在大多数情况下使用。

这为您的擦除编码池提供了较慢/更大/更便宜的驱动器与作为缓存层的更快、更昂贵的驱动器的完美协同效应。

要计算擦除编码池的开销,您需要知道擦除编码配置文件的“k”和“m”值。

chunk

当调用编码函数时,它会返回相同大小的块。数据块可以连接起来重建原始对象,编码块可以用来重建丢失的块。

K

数据块的数量,即原始对象被分割成的块数。例如,如果 K = 2,则 10KB 的对象将被分割成 K 个 5KB 的对象。

M

编码块的数量,即编码函数计算出的额外块数。如果有 2 个编码块,则表示可以在不丢失数据的情况下容忍 2 个 OSD 故障。

计算开销的公式是

nOSD * k / (k+m) * OSD 大小

最后,让我们基于 64 个 4 TB 的 OSD,从 m=1 到 m=4 以及 k=1 到 k=10,查看几个不同的擦除编码配置文件配置

1234
1128.0085.3364.0051.20
2170.67128.00102.4085.33
3192.00153.60128.00109.71
4204.80170.67146.29128.00
5213.33182.86160.00142.22
6219.43192.00170.67153.60
7224.00199.11179.20162.91
8227.56204.80186.18170.67
9230.40209.45192.00177.23
10232.73213.33196.92182.86
原始256256256256