Skip to content
forked from opencurve/curve

Curve is a distributed block, object and file storage platform

License

Unknown and 3 other licenses found

Licenses found

Unknown
LICENSE
Apache-2.0
LICENSE_APACHE
GPL-2.0
LICENSE_GPL
LGPL-2.1
LICENSE_LGPL
Notifications You must be signed in to change notification settings

daxiguafan/curve

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

中文版

CURVE

Jenkins Coverage Robot failover Robot interface Curve_choas BUILD Status Docs Releases LICENSE

Curve is a distributed storage system designed and developed by NetEase, featured with high performance, easy operation and cloud native. Curve is compose of CurveBS(Curve Block Storage) and CurveFS(Curve FileSystem). CurveBS supports snapshot, clone, and recover, also supports virtual machines with qemu and physical machine with nbd. CurveFS supports POSIX based on Fuse.

Curve Block Service vs Ceph Block Device

Curve: v1.2.0

Ceph: L/N

Performance

Curve random read and write performance far exceeds Ceph in the block storage scenario.

Environment:3 replicas on a 6-node cluster, each node has 20xSATA SSD, 2xE5-2660 v4 and 256GB memory.

Single Vol:

Multi Vols:

Stability

The stability of the common abnormal Curve is better than that of Ceph in the block storage scenario.

Fault Case One Disk Failure Slow Disk Detect One Server Failure Server Suspend Animation
Ceph jitter 7s Continuous io jitter jitter 7s unrecoverable
Curve jitter 4s no effect jitter 4s jitter 4s

Ops

Curve ops is more friendly than Curve in the block storage scenario.

Ops scenarios Upgrade clients Balance
Ceph do not support live upgrade via plug-in with IO influence
Curve support live upgrade with second jitter auto with no influence on IO

Design Documentation

Quick Start of CurveBS

Want to try on it? Take it easy! We'll help you step by step, but make sure you've read this Tips before you start.

Deploy an all-in-one environment (to try how CURVE works)

Deploy on single machine

Deploy multi-machine cluster (try it in production environment)

Deploy on multiple machines

curve_ops_tool introduction

curve_ops_tool introduction

Quick Start of CurveFS

In order to improve the convenience of Curve operation and maintenance, we have designed and developed the CurveAdm project, which is mainly used to deploy and manage Curve clusters. Currently, it supports the deployment of CurveFS ​​(CurveBS support is under development).

Detail for CurveFS deploy: CurveFS ​​deployment

For Developers

Deploy build and development environment

development environment deployment

Compile test cases and run

test cases compiling and running

FIO curve block storage engine

Fio curve engine is added, you can clone https://github.com/skypexu/fio/tree/nebd_engine and compile the fio tool with our engine(depend on nebd lib), fio command line example: ./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

Coding style guides

CURVE is coded following Google C++ Style Guide strictly. Please follow this guideline if you're trying to contribute your codes.

Code coverage requirement

  1. Unit tests: Incremental line coverage ≥ 80%, incremental branch coverage ≥ 70%
  2. Integration tests: Measure together with unit tests, and should fulfill the same requirement
  3. Exception tests: Not required yet

Other processes

After finishing the development of your code, you should submit a pull request to master branch of CURVE and fill out a pull request template. The pull request will trigger the CI automatically, and the code will only be merged after passing the CI and being reviewed.

For more detail, please refer to CONTRIBUTING.

Release Cycle

  • CURVE release cycle:Half a year for major version, 1~2 months for minor version

  • Versioning format: We use a sequence of three digits and a suffix (x.y.z{-suffix}), x is the major version, y is the minor version, and z is for bugfix. The suffix is for distinguishing beta (-beta), RC (-rc) and GA version (without any suffix). Major version x will increase 1 every half year, and y will increase every 1~2 months. After a version is released, number z will increase if there's any bugfix.

Branch

All the developments will be done under master branch. If there's any new version to establish, a new branch release-x.y will be pulled from the master, and the new version will be released from this branch.

Feedback & Contact

  • Github Issues:You are sincerely welcomed to issue any bugs you came across or any suggestions through Github issues. If you have any question you can refer to our FAQ or join our user group for more details.
  • FAQ:Frequently asked question in our user group, and we'll keep working on it.
  • User group:We use Wechat group currently.

About

Curve is a distributed block, object and file storage platform

Resources

License

Unknown and 3 other licenses found

Licenses found

Unknown
LICENSE
Apache-2.0
LICENSE_APACHE
GPL-2.0
LICENSE_GPL
LGPL-2.1
LICENSE_LGPL

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 91.6%
  • Python 3.3%
  • Shell 1.4%
  • Starlark 1.4%
  • Lua 1.1%
  • Jinja 0.6%
  • Other 0.6%