暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Curve 混闪之 bcache 与 open-cas 对比

OpenCurve 2023-05-31
1176

Curve 支持混闪场景

Curve 是云原生计算基金会 (CNCF) Sandbox 项目,是网易主导自研和开源的高性能、易运维、云原生的分布式存储系统。

近几年 SSD 固态硬盘已经快速普及,但是大容量、低成本的 HDD 硬盘在实际生产中任然有强的业务需求,所以把 SSD 和 HDD 结合起来各展所长的混闪系统在市面上也是主要的存储方案之一。
Curve 作为分布式存储系统,混闪也是必须支持的场景,支持基于 NVME+HDD 的混闪场景是 Cureve 2023 年的重要任务之一,具体的信息可以参考 Curve Roadmap 2023[1]。

缓存技术调研

作为经典的分布式存储系统,基于 Ceph 的混闪方案也是非常多的,一般在 Ceph 中使用 SSD 缓存有 2 种方式:cache tiering 和 OSD cache,但是大家都知道,Ceph 的 cache tiering 机制并不成熟,策略复杂,IO路径长,实际生产中很少有具体的应用;更多的时候,是用 SSD 对块设备进行缓存加速。
目前常见的块设备缓存技术,主要有 flashcache,dm-cache,bcache,open-cas 等,其中 flashcache 已经停止维护了,dm-cache 由于需要引入 lvm,太过于复杂所以暂时不在考虑范围内。针对 bcache 和 open-cas,太过于复杂所以暂时不在考虑范围内。针对 bcache 和 open-cas,根据参考文档[2][3],做了一下大概的整理和对比:
从以上的总结可以看到,2 种技术提供的功能虽然略有差异,但总体上都能满足作为块设备缓存的要求;相对而言,bcache 开发时间比较久,并且直接在 Linux kernel 中集成,也经历过大规模的测试和验证,稳定性应该会比 open-cas 还一些。


基于 Curve 的混闪性能测试
分别基于 bcache 和 open-cas,部署一个 NVME+HDD 的 CurveBS 三节点混闪集群,部署方式采用 2+6 模式,即 2 块 NVME SSD 做缓存,加速 6 块普通 HDD 磁盘;对NVME 磁盘分区,每个分区大小 300G,作为一个 1.8T HDD 的缓存盘。
以下是基于 bcache 部署的结果,open-cas 也是完全相同的部署方案;关于bcache 和 open-cas 缓存的具体部署方法和流程,就不在这里详细描述了,参考文档[4][5]即可。
部署好的 CurveBS 集群:
存储节点上的部署结果:
采用 fio cbd 引擎来测试 CurveBS 混闪集群的性能,在 CurveBS 里创建 6 个卷,分别在 2 个 client 上执行 fio 进行压测,获得集群的总体性能。性能数据如下表:
可以看到,在 2 种缓存技术的加持下,随机读写的性能跟 HDD 集群相比都有了数量级粒度的提升。
  • 在全部缓存时,随机写的绝对性能,bcache 要比 open-cas 高出不少,但是在实际测试过程中会发现,bcache 的写性能会出现明显的波动,甚至掉底的情况,这是由于 bcache 在测试过程中出现的 gc 操作,影响了缓存的写入性能;而 open-cas 的性能表现则要稳定很多;

  • 随机读的性能二者差异并不大,这并不是二者真实性能体现,而是因为测试环境 10G 网络的限制,网络瓶颈导致 CurveBS 集群性能提前达到瓶颈,实际上在缓存命中场景下,bcache 的读的性能也比 open-cas 高出不少。

  • 在缓存满回写时,二者的读写性能都出现了不同程度的下降,相对而言,bcache 的性能下降要比 open-cas 明显很多,主要的原因有 2 个,一个因为bcache 会优先处理回写,导致回写线程占满后端 HDD 的带宽,所以随机读的性能下降比较明显;另一个是由于 open-cas 默认采用的 aLRU 策略,只要设备上有 IO,缓存的回写就是被抑制的,即使通过配置调高回写的周期和带宽,这种抑制也无法完全消除,所以它的性能下降就没那么厉害。

总结
本文简单的比较了 bcache 和 open-cas 这两种块设备缓存技术的功能差异,同时分别基于这两种缓存技术,搭建了 NVME+HDD 混闪形态部署的 CurveBS 分布式存储集群,测试了两种缓存技术在全部缓存和缓存会刷场景下的随机读写性能,并对相关的性能数据进行了分析。基于以上对比测试和分析,也可以看到两种缓存技术都存在一些问题,还需要花费较多的时间去进行分析和调优,才能真正地落地到实际业务中,也欢迎社区小伙伴一起参与~

参考文档

[1] opencurve/curve#2207

[2] https://segmentfault.com/a/1190000038448569

[3] Open-CAS/open-cas-linux#667 (comment)

[4] https://gist.github.com/mikulely/e2931b7cce388dbff006622a3eef7b42

[5]https://open-cas.github.io/guide_configuring.html

[6] https://www.modb.pro/db/135111

[7] https://zhuanlan.zhihu.com/p/354018669


------ END. ------

🔥 火爆报名中:

2023 Curve 开发者活动来了!

2023 开源之夏 | Curve 邀你与中国存储软件共成长,赢万元奖金

Curve丨Google 编程之夏 2023 招募中

🔥 推荐用户案例:
Curve 文件存储在 Elasticsearch 冷热数据存储中的应用实践
扬州万方:基于申威平台的 Curve 块存储在高性能和超融合场景下的实践
创云融达:基于 Curve 块存储的超融合场景实践 
🔥 推荐硬核技术解析:
ChunkServer 优化使用 bthread 的思考
通过 Samba 来使用 CurveFS 
Curve 块存储 IO 链路零拷贝



关于 Curve 

Curve 是一款高性能、易运维、云原生的开源分布式存储系统。可应用于主流的云原生基础设施平台:对接 OpenStack 平台为云主机提供高性能块存储服务;对接 Kubernetes 为其提供 RWO、RWX 等类型的持久化存储卷;对接 PolarFS 作为云原生数据库的高性能存储底座,完美支持云原生数据库的存算分离架构。

Curve 亦可作为云存储中间件使用 S3 兼容的对象存储作为数据存储引擎,为公有云用户提供高性价比的共享文件存储。

  • GitHub:https://github.com/opencurve/curve
  • 官网https://opencurve.io/
  • 用户论坛:https://ask.opencurve.io/
    微信群:搜索群助手微信号 OpenCurve_bot

文章转载自OpenCurve,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论