Curve是一款高性能、易运维、云原生的开源分布式存储系统。可应用于主流的云原生基础设施平台:对接 OpenStack 平台为云主机提供高性能块存储服务;对接 Kubernetes 为其提供 RWO、RWX 等类型的持久化存储卷;对接 PolarFS 作为云原生数据库的高性能存储底座,完美支持云原生数据库的存算分离架构。Curve 亦可作为云存储中间件使用 S3 兼容的对象存储作为数据存储引擎,为公有云用户提供高性价比的共享文件存储。
Curve已加入云原生计算基金会(CNCF)作为沙箱项目托管。
Curve总体架构图:
Curve支持部署在私有云和公有云环境,也可以以混合云方式使用,私有云环境下的部署架构如下:
其中CurveFS共享文件存储系统可以弹性伸缩到公有云存储,可以为用户提供更大的容量弹性、更低的成本、更好的性能体验。
公有云环境下,用户可以部署CurveFS集群,用来替换云厂商提供的共享文件存储系统,并利用云盘进行加速,可极大的降低业务成本,其部署架构如下:
Curve: v1.2.0
Ceph: L/N
块存储场景下,Curve随机读写性能远优于Ceph。 测试环境:6台服务器*20块SATA SSD,E5-2660 v4,256G,3副本,使用nbd场景。
块存储场景下,常见异常Curve的稳定性优于Ceph。
异常场景 | 单盘故障 | 慢盘 | 机器宕机 | 机器卡住 |
---|---|---|---|---|
Ceph | 抖动7s | 持续io抖动 | 抖动7s | 不可恢复 |
Curve | 抖动4s | 无影响 | 抖动4s | 抖动4s |
块存储场景下,Curve常见运维更友好。
运维场景 | 客户端升级 | 均衡 |
---|---|---|
Ceph | 不支持热升级 | 外部插件调整,影响业务IO |
Curve | 支持热升级,秒级抖动 | 自动均衡,对业务IO无影响 |
- 通过 Curve概述 可以了解 Curve 架构
- CurveBS相关文档
- CurveBS上层应用
- CurveFS相关文档
为了提升 Curve 的运维便利性,我们设计开发了 CurveAdm 项目,其主要用于部署和管理 Curve 集群,目前已支持部署CurveBS & CurveFS(扩容、版本升级等更多功能正在开发中),相关使用文档请参考 CurveAdm用户手册,并根据手册首先安装CurveAdm工具之后再进行Curve集群的部署。
请参考CurveAdm用户手册中CurveBS集群部署步骤,单机体验环境请使用“集群拓扑文件-单机部署”模板。
请参考CurveAdm用户手册中CurveBS集群部署步骤,请使用“集群拓扑文件-多机部署”模板。
为了提升 Curve 的运维便利性,我们设计开发了 CurveAdm 项目,其主要用于部署和管理 Curve 集群,目前已支持部署CurveBS & CurveFS,相关使用文档请参考 CurveAdm用户手册,并根据手册首先安装CurveAdm工具之后再进行Curve集群的部署。
具体流程见:CurveFS部署流程
如何参与 Curve 项目开发详见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版本发布周期:大版本半年,小版本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:当前为微信群,由于群人数过多,需要先添加以下个人微信,再邀请进群。