# curve
**Repository Path**: lmirrors-github/curve
## Basic Information
- **Project Name**: curve
- **Description**: 来源 https://github.com/opencurve/curve.git
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2021-09-02
- **Last Updated**: 2024-05-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
[English version](README.md)
# Curve
[](http://59.111.91.248:8080/job/curve_untest_job/HTML_20Report/)
[](http://59.111.91.248:8080/job/curve_failover_testjob/)
[](http://59.111.91.248:8080/job/curve_robot_job/)
[](http://59.111.91.248:8080/job/opencurve_multijob/lastBuild)
[](https://github.com/opencurve/curve/tree/master/docs)
[](https://github.com/opencurve/curve/releases)
[](https://github.com/opencurve/curve/blob/master/LICENSE)
Curve是网易自主设计研发的高性能、易运维、云原生的分布式存储系统,目前提供块(CurveBS)和文件(CurveFS)两种存储方式。CurveBS支持快照克隆和恢复,支持QEMU虚拟机和物理机NBD设备两种挂载方式。CurveFS基于Fuse支持POSIX文件系统接口。
## Curve vs Ceph
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概述](https://opencurve.github.io/) 可以了解 CURVE 架构
- CURVE相关文档
- [NEBD](docs/cn/nebd.md)
- [MDS](docs/cn/mds.md)
- [Chunkserver](docs/cn/chunkserver_design.md)
- [Snapshotcloneserver](docs/cn/snapshotcloneserver.md)
- [CURVE质量体系介绍](docs/cn/quality.md)
- [CURVE监控体系介绍](docs/cn/monitor.md)
- [Client](docs/cn/curve-client.md)
- [Client Python API](docs/cn/curve-client-python-api.md)
- CURVE上层应用
- [对接k8s文档](docs/cn/k8s_csi_interface.md)
## 快速开始
在您开始动手部署前请先仔细阅读特别说明部分:[特别说明](docs/cn/deploy.md#%E7%89%B9%E5%88%AB%E8%AF%B4%E6%98%8E)
### 部署All-in-one体验环境
[单机部署](docs/cn/deploy.md#%E5%8D%95%E6%9C%BA%E9%83%A8%E7%BD%B2)
### 部署多机集群
[多机部署](docs/cn/deploy.md#%E5%A4%9A%E6%9C%BA%E9%83%A8%E7%BD%B2)
### 查询工具说明
[查询工具说明](docs/cn/curve_ops_tool.md)
## 参与开发
### 部署编译开发环境
[编译开发环境搭建](docs/cn/build_and_run.md)
### 测试用例编译及运行
[测试用例编译及运行](docs/cn/build_and_run.md#%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B%E7%BC%96%E8%AF%91%E5%8F%8A%E6%89%A7%E8%A1%8C)
### 编码规范
CURVE编码规范严格按照[Google C++开源项目编码指南](https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/)来进行代码编写,请您也遵循这一指南来提交您的代码。
### 测试覆盖率要求
1. 单元测试:增量行覆盖80%以上,增量分支覆盖70%以上
2. 集成测试:与单元测试合并统计,满足上述覆盖率要求即可
3. 异常测试:暂不做要求
### 其他开发流程说明
代码开发完成之后,提[pr](https://github.com/opencurve/curve/compare)到curve的master分支。提交pr时,请填写pr模板。pr提交之后会自动触发CI,CI通过并且经过review之后,代码才可合入。
具体规则请见[CONTRIBUTING](https://github.com/opencurve/curve/blob/master/CONTRIBUTING.md).
## 版本发布周期
- 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](https://github.com/openCURVE/CURVE/issues):欢迎提交BUG、建议,使用中如遇到问题可参考FAQ或加入我们的User group进行咨询
- [FAQ](https://github.com/openCURVE/CURVE/wiki/CURVE-FAQ):主要根据User group中常见问题整理,还在逐步完善中
- User group:当前为微信群,由于群人数过多,需要先添加以下个人微信,再邀请进群。
