Ceph 中的写入放大

深入解析Ceph纠删码(EC)的编码优化策略与性能权衡 本文深入解析了Ceph存储系统中纠删码(EC)的核心原理与优化策略。详细对比了RS、LRC和SHEC三种主流编码方式,剖析了它们在空间利用率、数据恢复效率及可靠性之间的权衡。文章结合实战经验,提供了根据业务场景选择编码方案的具体建议,并探讨了代码流程中的写入对齐、插件优化(如ISA加速)及参数调优等高级技巧,帮助用户构建高性能、高性价比的Ceph存储集群。 阅读详情

c63a47d534cc55fde99ba1c24c885862.gif

新钛云服已累计为您分享769篇技术干货

cb8fd68ff8ed45d4da03ae43cb6ea7c1.gif

d3c01d76d540ddc2c5c6c6698412cf95.png

介绍

f9f764197358682b5a131d16bce17a51.png

Ceph 是一个开源的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。 Ceph 独一无二地在一个统一的系统中同时提供了对象、块、和文件存储功能。 Ceph 消除了对系统单一中心节点的依赖,实现了无中心结构的设计思想。

我们知道Ceph为了保障数据的可靠性,存放数据通常是三副本策略(另有EC策略)。那么无论是data,metadata,journal都是三份。因此在应用端写入一个IO,在ceph内部实际上会额外产生许多内部IO,不同的存储后端差异很大。 Ceph提供了FileStore、KStore和BlueStore三种存储后端以供选择,那么以FileStore为例,来看看13X的写放大的来由。FileStore中ceph的数据被存放在XFS或者ZFS等本地文件系统中。这些文件系统本身又会记录日志(FS journal),以及还有它自己的元数据(FS metadata)。

在设计存储基础结构时,为了防止故障,保证一定的冗余度是非常有必要的。但是,冗余伴随着存储效率的降低,这也会增加您的成本。对于大型基础设施,每 TB 成本的差异可能会导致总存储成本显著提高。因此,Ceph 中的纠删码非常有吸引力。 纠删码类似于基于奇偶校验的 RAID 阵列。为每个对象创建许多数据块 (K) 和奇偶校验块 (M)。另一方面,副本只是创建给定对象的其他副本,类似于镜像 RAID 阵列。这通常意味着纠删码比副本具有更高的存储效率,计算公式为 k/(k+m)。 例如,以 6+2 为例,您将获得 75% 的存储效率——在记录的总 8 个区块中,有 6 个数据块。与三个副本相比,您将有 33% 的效率,总共 3 个记录的块中有 1 个数据块。

8eaa5f71470b61c012bf027c6fdcf87f.png

写入放大

正常来说,Ceph 都没啥问题,除了一个经常被忽视的问题:写入放大。 数据存储中的最小分配大小本质上是一段数据可以写入的最小单位。在 Pacific Ceph 之前,此值默认为 64kb。此最小分配单元会给某些工作负载带来问题,尤其是那些对小文件进行操作的工作负载。

c25d7834a552f2dff2f9d483cd7aeb2d.png

案例

4% 存储效率示例如下图:

31fcbd43a4bcecdc06ee9b85faedc6c3.png

为了更直观一点,让我们考虑一个传入写入为 16kb 的 4+2 纠删码池。 在上面的示例中,单个 16K 写入最终会放大 24 倍的大小,因为每个块至少需要以 64K 的速度写入磁盘。这导致此特定对象的总存储效率为 ~4%。如果您的工作负载主要由 16K 对象组成,那么这可能会很快抵消您的 EC 配置文件提供的任何优势。下面是使用相同文件大小的 3 副本示例。

9471229f7ab9c3900f476d940a7accb5.png

如上图所示,在此特定工作负载中,3 Replica 实际上比 4+2 纠删码池的存储效率更高。这表明规则总是有例外。从理论上讲,当存储效率是最高优先级时,应使用纠删码,但根据您的数据集,这可能会发生巨大变化。

89dee4692e8e72dba317728a15e2d851.png

写入放大重要的用例

当然,即使按照小文件工作负载标准,16K 文件也很小,单单一篇文章的大小就 100K 左右。另外,一些可能存在写入放大问题的场景是:

  • AI training 人工智能训练

  • audio editing 音频编辑

  • log storing/aggregation 日志存储/聚合

  • scientific computing 科学计算

6b26e436dcb65a85a1ecd40b2618220a.png

结论

了解数据和工作负载是确定 Ceph 集群构建的关键部分。了解整个数据的平均文件大小将使您能够避免这种极高的写入放大。 当然,这并不总是这样的。通常,在单个集群中往往会存在各种大小的文件。在这种情况下,只需确定数据的位置即可。例如,如果单个目录树拥有大部分小文件,则可以将副本池固定到该特定树,而具有较大文件大小的其余数据仍保留在纠删码上。 如前所述,当您的最小分配大小太大时,写入放大会更加普遍,这就是为什么较新版本的 Ceph(如 Pacific 和 Quincy)默认为 4K 而不是 64K 的原因。在较新的集群或最小分配大小修改的 Octopus 集群中,写入放大的问题要小得多,因此,我们在后续的集群部署前,需要认真考虑一下。

    推荐阅读   

2f4b0dc5c19beacfb7eb35176948882d.png

2af4835627faf1c6d38059aba3c2777a.png

    推荐视频    

Ceph存储引擎bluestore简介 【背景】 ceph后端支持多种存储引擎,以插件的方式进行管理和使用,默认使用filestore,如ext4、btrfs,xfs。理论上每个文件系统都实现了POSIX协议,但是每个文件系统都会有那么一些不标准的地方。主要存在以下几个方面: 1.Ceph的实现非常注重可靠性,因而需要为每种文件系统引入不同的Walkaround或者Hack;例如Rename不幂等性,等等。这些工作为Ceph的不断开发带来了很大负担。 2.FileStore构建与Linux文件系统之上。POSIX提供了非常强大的功能,但.. 阅读详情

相关推荐

Ceph的FileStore存储引擎详解

Ceph FileStore存储引擎将对象数据以文件形式存储在本地文件系统上,通过日志机制保证数据一致性。其核心架构包括Journal日志、ObjectMap对象映射和底层文件系统三个关键组件,采用"先写日志再写数据"的写入流程。文章详细介绍了FileStore的数据组织方式、性能优化方法,并与BlueStore进行了对比分析,包括日志配置、并发调优等具体参数设置。虽然FileStore已被BlueStore取代,但理解其工作机制对掌握Ceph存储原理仍有重要意义,文中还提供了典型问题的

super的博客 779

Ceph性能测试:纠删码 vs. 三副本?.pdf

Ceph 在今天有多火就不⽤多说了吧。正如许多分布式存储那样,三副本的容量利利 用率始终是个问题,特别是对于海量⾮结构化数据和冷存储这些在意性价比的应用来说。相比之下,纠删码(Erasure Code)能够提供接近于本地 RAID 5/6 的有效磁盘空间,代价是牺牲了性能。纠删码在随机写⼊,特别是改写和重构(Rebuild)时产生的 I/O 惩罚较大,对应的集群网络流量比副本保护模式要大。 那么 Ceph 使⽤用纠删码在各种情况下的性能都⽐比三副本要低吗?答案是否定的。如果您 还⼼心存疑问,请看本⽂文分解。

ceph bluestore 架构简介

文章目录前言设计理念整体架构核心模块BlueFSAlloactorFreeListManagerCacheIO流程读流程写流程相关专业术语解释1、ACID2、RMW3、COW4、LRU(Least Recently Used)5、LFU(Least Frequently Used)6、ARC7、2Q大牛blog 前言 Ceph早期的单机对象存储引擎是FileStore,为了维护数据的一致性,写入之...

qq_23929673的博客 1692

ceph集群性能测试结果

ceph存储集群(8台万服务器)从以下几个方面进行测试的结果 1、读写稳定性 无故障下的ceph集群性能完全满足业务对磁盘性能的需求。 测试数据结果如下表1-1,1-2 2、业务稳定性 ceph集群出现节点脱离的故障状态时,设置恢复QoS可以有效的保证业务正常运行无中断。 测试数据结果如下表2-1 3、节点故障恢复时间 节点故障的恢复时间依据故障时间段内的新增数据的大小决定,若...

weixin_34088583的博客 991

Linux IO实时监控iostat命令详解

简介 iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。   语法 iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ ...

weixin_33904756的博客 738

ceph性能估算

ceph读写性能估算

weixin_45437959的博客 1054

【weaviate】分布式数据写入之LSM树深度解析:读写放大的权衡

【weaviate】分布式数据写入之LSM树深度解析:读写放大的权衡

hiliang521的博客 1951

一次对象存储元数据osd空间放大问题调查

对象存储的部分元数据池osd空间放大问题调查及解决方案

strugglesquirrel的博客 1195

Ceph RocksDB 深度调优

调优 Ceph 可能是一项艰巨的挑战。在 Ceph、RocksDB 和 Linux 内核之间,实际上有数以千计的选项可以进行调整以提高存储性能和效率。由于涉及的复杂性,比较优的配置通常分散在博客文章或邮件列表中,但是往往都没有说明这些设置的实际作用或您可能想要使用或避免使用它们的原因。这种现象的一个特别常见的例子是调优 Ceph 的 BlueStore RocksDB。本文档将尝试解释这些选项的实际作用以及您可能想要调整它们或保持它们默认值的原因。

大隐隐于野 1886

Ceph读写性能估算方法

最近在做Ceph性能测试相关工作,在测试初期由于没有得到理想的测试结果,因此对Ceph集群进行了优化,但是一直有个问题萦绕在我的脑海:基于当前硬件配置,这个Ceph集群的极限是多少?

渡江客涂鸦板 1110

ceph fileStore与 blueStore逻辑架构对比

ceph 消息处理逻辑架构图 ceph后端支持多种存储引擎,以插件化的形式来进行管理使用,目前支持filestore,kvstore,memstore以及bluestore,目前默认使用的是filestore,但是目前bluestore也可以上生产。 1)Firestore存在的问题是: 在写数据前需要先写journal,会有一倍的写放大; 若是另外配备SSD盘给journal使用又增加额外的...

波哥在路上 8811

Ceph后端两种存储引擎介绍

Ceph是一个可靠的、自治的、可扩展的分布式存储系统,它支持文件系统存储、块存储、对象存储三种不同类型的存储,以满足多样存储的需求。在Ceph的存储架构中,FileStore和BlueStore是两种重要的后端存储引擎,下面将分别进行详细介绍: FileStore 概述: FileStore是Ceph早期采用的后端存储引擎。 它建立在传统的文件系统之上,如XFS、EXT4、BTRFS等。 工作原理: 在FileStore模式下,数据从OSD(Object Storage Dae

zuopiezia的博客 1342

Ceph RocksDB 性能改进说明

新钛云服已累计为您分享792篇技术干货关于Ceph的RocksDB的性能优化,并没有什么特别好的方式。但本文会给出⼀个比较好的改进方式:如果你使用的是上游 Ceph Ubuntu 软件包,那么改进会变的更简单些。简单说明Mark Nelson 发现,在合并Pull request (PR) 之前,构建过程没有正确地将CMAKE_BUILD_TYPE选项 传递给由Ceph构建的外部项目(在本例中为 ...

NewTyun的博客 425

网易数帆 Ceph EC 纠删码在线存储性能优化实践

写在前面 术语说明 EC 的全称是Erasure Code——纠删码,是一种编码理论,EC 介绍链接 如下是和本文档相关的一些术语: EC 策略:一般就是我们常说的(K+M),K 个数据块,M 个校验块 条带(stripe):和磁盘阵列中的条带类似,是把连续的数据分割成相同大小的数据块,把每块数据分别写入Ceph EC 中的不同磁盘上,EC 会针对这些数据块计算校验块,1 个条带包含多数据块和多个校验块,数据块的个数一般称为 K,校验块的个数称为 M,每个条带包含 (K + M) 块 Ceph中 其他

NetEaseResearch的博客 1万+

Ceph 扩展到十亿个对象甚至更多

因此,对于大于 bluestore_min_alloc_size_hdd 的对象,默认值似乎是最佳的,如果您打算减少 bluestore_min_alloc_size_hdd 参数,较小的对象还需要更多调查。当我们的集群中的存储容量用完时,我们别无选择,只能删除存储在桶中的旧大对象,而我们有数百万个这样的对象。我们最初是从 S3 API 的 DELETE 方法开始的,但我们很快意识到它不适用于存储桶删除,因为必须先删除存储桶中的所有对象,然后才能删除存储桶本身。这证明了 Ceph 集群的可扩展性和健壮性。

小Eason哥 682
上一篇: APP备案常见问题解答
下一篇: Kubernetes 中的 Java 应用的内存调优
新钛云服
博客等级 码龄7年 501粉丝 · 477原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值