Curve是网易自主设计研发的高性能、易运维、云原生的分布式存储系统,目前提供块(CurveBS)和文件(CurveFS)两种存储方式。CurveBS支持快照克隆和恢复,支持QEMU虚拟机和物理机NBD设备两种挂载方式。CurveFS基于Fuse支持POSIX文件系统接口。
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部署流程
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编码规范严格按照Google C++开源项目编码指南来进行代码编写,请您也遵循这一指南来提交您的代码。
- 单元测试:增量行覆盖80%以上,增量分支覆盖70%以上
- 集成测试:与单元测试合并统计,满足上述覆盖率要求即可
- 异常测试:暂不做要求
代码开发完成之后,提pr到curve的master分支。提交pr时,请填写pr模板。pr提交之后会自动触发CI,CI通过并且经过review之后,代码才可合入。CI的Jenkins用户名密码为netease/netease,如遇到CI运行失败可以登录Jenkins平台查看失败原因。 具体规则请见CONTRIBUTING.
- 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:当前为微信群,由于群人数过多,需要先添加以下个人微信,再邀请进群。