Ceph存储的条带化

提升存储设备的吞吐量_客户端

存储设备都有吞吐量限制 它会影响性能和伸缩性

​如何提高吞吐量和性能?​

提升存储设备的吞吐量_客户端_02

将一个连续的信息分片存储于多个设备

提升存储设备的吞吐量_数据_03

ceph客户端将用户提交的数据转换成ceph存储集群对象

提升存储设备的吞吐量_客户端_04

​最简单的 Ceph 条带化形式就是一个对象的条带​

提升存储设备的吞吐量_客户端_05

ceph客户端将数据条带化
然后并行化写入ceph存储集群中的对象

​存储对象容量变化的过程​

提升存储设备的吞吐量_数据_06

​一个存储对象容量满了之后创建一个新的对象存储未完数据​

提升存储设备的吞吐量_ceph存储_07

​描述下条带化数据存储的过程​

提升存储设备的吞吐量_数据_08

客户端数据条带化到一个对象集(图中的 对象集 1 )
它包含 4 个对象
第一个条带单元是 object 0 的 stripe unit 0
第四个条带是 object 3 的 stripe unit 3
写完第四个条带,客户端要确认对象集是否满了
如果对象集没满,客户端再从第一个对象起写入条带(图中的 object 0 )
如果对象集满了
客户端就得创建新对象集(图的 object set 2 )
然后从新对象集中的第一个对象(图中的 object 4 )起开始写入第一个条带( stripe unit 16 )

​ceph如何条带化数据?​

  • 对象尺寸

提升存储设备的吞吐量_ceph存储_09

  • 条带宽度
条带宽度是对象尺寸的分片

提升存储设备的吞吐量_数据_10

  • 条带数量

提升存储设备的吞吐量_客户端_11

Ceph 客户端把一系列条带单元写入由条带数量所确定的一系列对象
这一系列的对象称为一个对象集
客户端写到对象集内的最后一个对象时
再返回到第一个

总结

提升存储设备的吞吐量_ceph存储_12

当客户端把条带单元并行地写入相应对象时
就会有明显的写性能
因为对象映射到了不同的归置组、并进一步映射到不同 OSD
可以并行地以最大速度写入
到单一磁盘的写入受限于磁头移动(如:6ms 寻道时间)和存储设备带宽(如:100MB/s)
Ceph把写入分布到多个对象(它们映射到了不同归置组和 OSD )
这样可减少每设备寻道次数、联合多个驱动器的吞吐量,以达到更高的写(或读)速度