Skip to content

Latest commit

 

History

History
159 lines (103 loc) · 8.85 KB

README_cn.md

File metadata and controls

159 lines (103 loc) · 8.85 KB

English version

Curve

Jenkins Coverage Robot failover Robot interface BUILD Status Docs Releases LICENSE CII Best Practices

Curve是网易自主设计研发的高性能、易运维、云原生的分布式存储系统,目前提供块(CurveBS)和文件(CurveFS)两种存储方式。CurveBS支持快照克隆和恢复,支持QEMU虚拟机和物理机NBD设备两种挂载方式。CurveFS基于Fuse支持POSIX文件系统接口。

Curve Architecture

Curve总体架构图:

Curve支持部署在私有云和公有云环境,也可以以混合云方式使用,私有云环境下的部署架构如下:

其中CurveFS共享文件存储系统可以弹性伸缩到公有云存储,可以为用户提供更大的容量弹性、更低的成本、更好的性能体验。

公有云环境下,用户可以部署CurveFS集群,用来替换云厂商提供的共享文件存储系统,并利用云盘进行加速,可极大的降低业务成本,其部署架构如下:

Curve Block Service vs Ceph Block Device

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无影响

设计文档

CurveBS快速开始

为了提升 Curve 的运维便利性,我们设计开发了 CurveAdm 项目,其主要用于部署和管理 Curve 集群,目前已支持部署CurveBS & CurveFS(扩容、版本升级等更多功能正在开发中),相关使用文档请参考 CurveAdm用户手册,并根据手册首先安装CurveAdm工具之后再进行Curve集群的部署。

部署All-in-one体验环境

请参考CurveAdm用户手册中CurveBS集群部署步骤,单机体验环境请使用“集群拓扑文件-单机部署”模板。

单机部署 - 即将废弃方式

部署多机集群

请参考CurveAdm用户手册中CurveBS集群部署步骤,请使用“集群拓扑文件-多机部署”模板。

多机部署 - 即将废弃方式

命令行工具说明

命令行工具说明

CurveFS快速开始

为了提升 Curve 的运维便利性,我们设计开发了 CurveAdm 项目,其主要用于部署和管理 Curve 集群,目前已支持部署CurveBS & CurveFS(扩容、版本升级等更多功能正在开发中),相关使用文档请参考 CurveAdm用户手册,并根据手册首先安装CurveAdm工具之后再进行Curve集群的部署。

具体流程见:CurveFS部署流程

命令行工具说明

命令行工具说明

参与开发

部署编译开发环境

编译开发环境搭建

测试用例编译及运行

测试用例编译及运行

FIO 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编码规范严格按照Google C++开源项目编码指南来进行代码编写,请您也遵循这一指南来提交您的代码。

测试覆盖率要求

  1. 单元测试:增量行覆盖80%以上,增量分支覆盖70%以上
  2. 集成测试:与单元测试合并统计,满足上述覆盖率要求即可
  3. 异常测试:暂不做要求

其他开发流程说明

代码开发完成之后,提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:当前为微信群,由于群人数过多,需要先添加以下个人微信,再邀请进群。