3.6. Ceph 客户端数据剥离


存储设备存在吞吐量限制,这会影响性能和可扩展性。因此,存储系统通常支持跨多个存储设备的连续部分信息 - 来提高吞吐量和性能。最常用的数据条带形式来自 RAID。RAID 类型与 Ceph 的条带最相似,是 RAID 0 或 'striped 卷'。 Ceph 的条带化提供了 RAID 0 条带的吞吐量,即 n-way RAID 镜像的可靠性并更快地恢复。

Ceph 提供三种类型的客户端:Ceph 块设备、Ceph Filesystem 和 Ceph Object Storage。Ceph 客户端将其数据从它提供的格式转换为其用户,如块设备镜像、RESTful 对象和 CephFS 文件系统目录,并放入 Ceph 存储集群中存储的对象。

提示

Ceph 在 Ceph Storage 集群中存储的对象不是条带的。Ceph Object Storage、Ceph Block Device 和 Ceph Filesystem 在多个 Ceph Storage Cluster 对象上分条数据。使用 librados 直接写入到 Ceph 存储集群的 Ceph 客户端必须执行条带化,并且本身并行 I/O 以获得这些好处。

最简单的 Ceph 分条格式涉及 1 对象的条带数。Ceph 客户端将条带单元写入 Ceph Storage Cluster 对象到其最大容量,然后为数据的额外条带创建另一个对象。最简单的分条形式可能足以用于小型块设备镜像、S3 或 Swift 对象。但是,这种简单形式并不能最大利用 Ceph 在放置组之间分发数据的能力,因而不会提高性能。下图显示了最简单的条带形式:

arc 10

如果您预计大镜像大小,例如视频,则可能会看到大型 S3 或 Swift 对象,通过在对象集中的多个对象间分条客户端数据,从而提高了可读写的性能。当客户端并行将条状单元写入其对应对象时,会发生重大写入性能。由于对象被映射到不同的放置组,并且进一步映射到不同的 OSD,每个写入操作在最大写入速度上并行。对单磁盘的一个写入会限制磁头的移动(例如每个搜索 6ms)和设备的带宽(例如 100MB/s)。Ceph 通过分散在多个对象上写入多个对象(映射到不同的放置组和 OSD),Ceph 可以减少每个驱动器的查找数量,并组合多个驱动器的吞吐量,以实现更快的写入或读取速度。

注意

条带独立于对象副本。由于 CRUSH 在 OSD 之间复制对象,因此会自动复制条带。

在以下示意图中,客户端数据被分散到包括了 4 个对象的对象集(在下图中是 object set 1),其中第一个条带单元是 object 0 中的 stripe unit 0,第四个条带单元是 object 3 中的 stripe unit 3。编写第四个条带后,客户端将确定对象集是否满。如果对象集没有满,客户端会开始重新写入第一个对象,在下图中为 object 0。如果对象集已满,客户端会创建一个新对象集,在下图中为 object set 2,并开始写入第一个条带,分条单元为 16,在新对象集中的第一个对象,在下图中为 object 4

arc 11

三个重要变量决定了 Ceph 条带数据的方式:

  • Object Size: Ceph Storage 集群中的对象具有最大可配置的大小,如 2 MB 或 4 MB。对象大小应该足够大,以适应许多条分条单元,它应该是条带单元的倍数。

    重要

    红帽建议安全最大值为 16 MB。

  • 条带宽度: 条带化有一个可配置的单位大小,例如 64 KB。Ceph 客户端将写入对象的数据分到平等的条状单元中,但最后条带单元除外。分条宽度应该是 Object Size 的比例,以便对象可以包含很多条带单元。
  • Stripe Count: Ceph 客户端将一组由条带数决定的对象写入条带单元序列。一系列对象称为对象集。Ceph 客户端写入对象集合中的最后一个对象后,它会返回对象集中的第一个对象。
重要

在将集群放置到生产环境中前测试条带配置的性能。在分条数据并将其写入对象后,您的 CANNOT 会更改这些分条参数。

Ceph 客户端将数据分条数据到分条单元,并将分条单元映射到对象后,Ceph 的 CRUSH 算法会将对象映射到放置组,而放置组则 map 到 Ceph OSD 守护进程,然后对象存储在存储磁盘上的文件。

注意

由于客户端写入到单个池,因此所有数据分条到对象都会映射到同一池中的放置组。因此它们使用相同的 CRUSH map 和相同的访问控制。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.