云原生高性能分布式存储系统
CNCF基金会的沙箱托管项目
English | 简体中文
Curve 是网易主导自研的现代化存储系统, 目前支持文件存储(CurveFS)和块存储(CurveBS)。现作为沙箱项目托管于CNCF。
CurveBS的核心应用场景主要包括:
- 虚拟机/容器的性能型、混合型、容量型云盘或持久化卷,以及物理机的远程存储盘
- 高性能存算分离架构:基于RDMA+SPDK的高性能低时延架构,支撑MySQL、kafka等各类数据库、中间件的存算分离部署架构,提升实例交付效率和资源利用率
CurveFS的核心应用场景主要包括:
- AI训练(含机器学习等)场景下的高性价比存储
- 大数据场景下的冷热数据自动化分层存储
- 公有云上高性价比的共享文件存储:可用于AI、大数据、文件共享等业务场景
- 混合云存储:热数据存储在本地IDC,冷数据存储在公有云
高性能 | 更稳定 | 易运维 | 云原生
-
高性能 : CurveBS vs CephBS
CurveBS: v1.2.0
CephBS: L/N 性能: 块存储场景下,CurveBS随机读写性能远优于CephBS。 测试环境:6台服务器*20块SATA SSD,E5-2660 v4,256G,3副本,使用nbd场景。
-
更稳定
-
块存储场景下,常见异常CurveBS的稳定性优于CephBS。
异常场景 单盘故障 慢盘 机器宕机 机器卡住 CephBS 抖动7s 持续io抖动 抖动7s 不可恢复 CurveBS 抖动4s 无影响 抖动4s 抖动4s
-
-
易运维
-
我们开发了 CurveAdm来帮助运维人员。
工具 CephAdm CurveAdm 一键安装 ✔️ ✔️ 一键部署 ❌(步骤稍多) ✔️ playground ❌ ✔️ 多集群管理 ❌ ✔️ 一键扩容 ❌(步骤稍多) ✔️ 一键升级 ✔️ ✔️ 一键停服 ❌ ✔️ 一键清理 ❌ ✔️ 部署环境检测 ❌ ✔️ 操作审计 ❌ ✔️ 周边组件部署 ❌ ✔️ 一键日志上报 ❌ ✔️ 集群状态统计上报 ❌ ✔️ 错误码分类及解决方案 ❌ ✔️ -
运维 块存储场景下,CurveBS常见运维更友好。
运维场景 客户端升级 均衡 CephBS 不支持热升级 外部插件调整,影响业务IO CurveBS 支持热升级,秒级抖动 自动均衡,对业务IO无影响
-
-
云原生
- 详见我们对云原生的理解。
对接 OpenStack
- 详见 Curve-cinder。
对接 Kubernetes
- 使用 Curve CSI Driver 插件在 Container Orchestrator (CO) 与 Curve 集群中实现了 Container Storage Interface(CSI)。
- 文档详见CSI Curve Driver Doc。
对接 PolarDB | PG
- 作为存算分离形态分布式数据库 PolarDB | PG 底层存储底座, 为上层数据库应用提供数据一致性保证, 极致弹性, 高性能HTAP。部署详见PolarDB | PG 进阶部署(CurveBS)。
更多...
- Curve 亦可作为云存储中间件使用 S3 兼容的对象存储作为数据存储引擎,为公有云用户提供高性价比的共享文件存储。
Curve混合云支持
Curve支持部署在私有云和公有云环境,也可以以混合云方式使用,私有云环境下的部署架构如下:
- 通过 Curve概述 可以了解 Curve 架构。
- CurveBS相关文档
- CurveBS上层应用
- CurveFS相关文档
- CurveAdm相关文档
为了提升 Curve 的运维便利性,我们设计开发了 CurveAdm 项目,其主要用于部署和管理 Curve 集群,目前已支持部署CurveBS & CurveFS(扩容、版本升级等更多功能正在开发中),相关使用文档请参考 CurveAdm用户手册,并根据手册首先安装CurveAdm工具之后再进行Curve集群的部署。
请参考CurveAdm用户手册中CurveBS集群部署步骤,单机体验环境请使用“集群拓扑文件-单机部署”模板。
curve 提供了命令行工具以查看集群状态和进行基本集群操作:命令行工具说明
fio的Curve块存储引擎代码已经上传到 https://github.com/opencurve/fio ,请自行编译测试(依赖nebd库),fio命令行示例:
$ ./fio --thread --rw=randwrite --bs=4k --ioengine=nebd --nebd=cbd:pool//pfstest_test_ --iodepth=10 --runtime=120 --numjobs=10 --time_based --group_reporting --name=curve-fio-test
在性能测试过程中有任何问题,请查看Curve块存储性能调优指南
请使用 CurveAdm 工具进行 CurveFS 的部署,具体流程见:CurveFS部署流程, 以及CurveFS命令行工具说明。
请参考 测试环境配置
请参考社区治理。
参与 Curve 项目开发详见Curve 开发者指南并且请遵循贡献者准则, 我们期待您的贡献!
Curve 的行为守则遵循CNCF Code of Conduct。
Curve 在 Apache 2.0 协议下进行分发。
- CURVE版本发布周期:大版本半年,小版本1~2个月
- 版本号规则:采用3段式版本号,x.y.z{-后缀},x是大版本,y是小版本,z是bugfix,后缀用来区beta版本(-beta)、rc版本(-rc)、和稳定版本(没有后缀)。每半年的大版本是指x增加1,每1~2个月的小版本是y增加1。正式版本发布之后,如果有bugfix是z增加1。
所有的开发都在master分支开发,如果需要发布版本,从master拉取新的分支release-x.y。版本发布从release-x.y分支发布。
- Github Issues:欢迎提交BUG、建议,使用中如遇到问题可参考FAQ或加入我们的User group进行咨询。
- FAQ:主要根据User group中常见问题整理,还在逐步完善中。
- User group:当前为微信群,由于群人数过多,需要先添加以下个人微信,再邀请进群。