背景
Curve 是云原生计算基金会 (CNCF) Sandbox 项目,是网易主导自研和开源的高性能、易运维、云原生的分布式存储系统。
网易游戏基础设施团队给美术、策划、QA 业务部门做了一套 win PC + iSCSI 云盘 + 快照克隆能力的素材分发加速流程,能给相关研发流程的用户提供分钟级的分发体验(相比之前的人肉给 PC 机加硬盘扩容、svn clone/checkout 分支耗时数小时),要快上 N 倍,大大提升了研发效率,非常受研发团队欢迎。
但是这个方案的性能目前有一些业务场景不能完全满足(之前是基于开源 Ceph RBD + 开源 tgt target 实现的),Curve 要做的事情就是分析性能瓶颈点、进一步提升整个方案的性能,让更多的研发团队能体验到极速云盘,同时也能覆盖更多的业务场景。
部署架构介绍
存储服务器配置:
- 内存128G,800G SATA SSD \* 6
- 网卡Mellanox ConnectX-5 10GbE \* 1

问题分析
win PC 也就是 iSCSI initiator 端到目标节点之间的网络时间
目标的能力
目标本地区存在能力
分布式存储集群性能
优化方案
网络时延:配合集团 IT 部门进行交换机参数调优,将ms级时延降低到数百us,极大提升了 PC 机到 IT 交换机的网络性能;
target性能:使用 spdk 版本的 target 替换 tgt target,后端对接 Curve 集群,利用用户态协议栈增加极限性能;
target缓存能力:tgt版本的target不支持本地缓存,spdk版本通过配合Open CAS缓存模块,极大提升了PC端iSCSI盘的性能;
分布式集群性能:从 Ceph rbd 集群更换为 Curve 块存储集群,并使用RDMA网络方案,进一步降低存储网络时延,提升集群 IOPS 和吞吐能力;
部署架构调整
比较原始的 Ceph RBD 部分方案,Curve 在部分方案方面做了以下几点调整:
这些调整都得到了性能提升的预期效果。
优化效果
使用 win 操作系统上比较流动的硬盘基准工具 CrystalDiskMark 进行大小型 IO 对比测试,结果如下:
Ceph RBD 方案(开启 RBD 缓存):

Curve 块存储方案(开启 SPDK OCF 缓存):

通过对比数据可以看出,随着小 IO 性能有 2~3 倍的提升。大 IO 受 PC 机千兆网卡限制达到带宽瓶颈。
后续规划
还需要进一步结合业务实际场景分析性能优化效果,并做进一步的优化调整;
CurveFS + SMB 协议支持渲染等依赖共享存储场景探索;
扩展知识
→ Curve 块存储
与 Ceph 块存储相比,Curve 小文件随机性能比较高,大文件顺序读写性能差别不大。
这方面的指标数据可以参考 GitHub 上的版本 release notes:→ iSCSI
→ SPDK target
→ Open CAS
Open CAS 是 Intel 主导开源的块设备级别的缓存方案,主要目标是通过使用更高性能的存储设备加速后端块存储 IO 访问。其已被默认集成到了 SPDK 项目中,其项目介绍可以参考:https://open-cas.github.io/getting_started_spdk.htmlSPDK 和 Open CAS Framework 的结合架构示意图如下:

使用 fio 进行性能对比测试发现,配置 OCF 缓存与不启用 OCF 缓存,在同样的 Curve 卷作为后端数据盘场景下,4K 单深度随机写入的 IOPS 性能提升了 5 倍之多。
🔥 火爆报名中:
2023 开源之夏 | Curve 邀你与中国存储软件共成长,赢万元奖金


关于 Curve
Curve 亦可作为云存储中间件使用 S3 兼容的对象存储作为数据存储引擎,为公有云用户提供高性价比的共享文件存储。
GitHub:https://github.com/opencurve/curve 官网:https://opencurve.io/ 用户论坛:https://ask.opencurve.io/ 微信群:搜索群助手微信号 OpenCurve_bot




