Go to file
Hanqing Wu d4468fa6eb curve-fuse: fix miss use GetInodeAttr[Locked]
Signed-off-by: Hanqing Wu <wuhanqing@corp.netease.com>
2022-09-07 16:07:03 +08:00
.github Update bug_report.md 2022-04-26 10:35:24 +08:00
conf make callback of s3async request async to avoid deadlock, issue #1854 2022-09-07 09:50:12 +08:00
curve-ansible curvebs: fix mismatch config item in chunkserver.conf.j2 2022-07-06 10:53:08 +08:00
curve-chunkserver/DEBIAN ansible: fix chunkserver_ctl.sh 2021-07-22 09:48:14 +08:00
curve-mds/DEBIAN ansible: fix some issues 2021-06-10 20:47:50 +08:00
curve-monitor/DEBIAN 添加版本信息 2019-12-21 20:56:08 +08:00
curve-nginx/DEBIAN add package nginx 2020-04-16 17:04:53 +08:00
curve-sdk/DEBIAN fix file header for *.sh and *.py 2020-07-25 16:02:51 +08:00
curve-snapshotcloneserver/DEBIAN ansible: fix some issues 2021-06-10 20:47:50 +08:00
curve-tools/DEBIAN move curve-snapshotcloneserver outside 2020-07-15 18:31:46 +08:00
curvefs curve-fuse: fix miss use GetInodeAttr[Locked] 2022-09-07 16:07:03 +08:00
curvefs_python chunkserver: fix crc issues 2021-07-09 10:21:27 +08:00
curvesnapshot_python optimize curve-client 2020-09-23 22:20:02 +08:00
deploy/local update chunkserver.conf 2022-05-18 19:21:34 +08:00
docker seperate aws-sdk && use new sdk 2022-08-05 19:41:13 +08:00
docs docs: fixed build step. 2022-08-16 20:19:01 +08:00
include curve-fuse: auto get volume size when creating fs and extend volume when space used up 2022-07-28 20:00:42 +08:00
k8s Improve the k8s mount curve script 2021-01-20 16:09:37 +08:00
monitor curve/monitor: fix Readme 2022-07-14 10:03:27 +08:00
nbd@6231d3bc49 nbd submodule 2022-06-28 13:49:25 +08:00
nebd common: fix Uncopyable class destructor and use modern style rewrite it 2022-08-22 19:22:13 +08:00
proto curvebs client、mds、chunkserver: add io fence 2022-07-20 12:30:40 +08:00
robot Increase mount check time 2022-09-02 09:51:55 +08:00
src make callback of s3async request async to avoid deadlock, issue #1854 2022-09-07 09:50:12 +08:00
test unittest: change BraftCliServiceTest listening port 2022-08-17 13:54:42 +08:00
thirdparties update aws-sdk-cpp: add ip and custom port support 2022-08-11 15:51:41 +08:00
tools delete ci scripts 2022-06-22 15:03:01 +08:00
tools-v2 curve/tools-v2: fix some bug 2022-09-07 09:53:07 +08:00
util curve: fix build erro in debian11 2022-09-06 15:50:33 +08:00
.bazelignore seperate aws-sdk && use new sdk 2022-08-05 19:41:13 +08:00
.bazelrc upgrade bazel 2022-04-06 09:44:35 +08:00
.bazelversion upgrade bazel 2022-04-06 09:44:35 +08:00
.gitignore curvefs/toolsv2: add feature of warmup 2022-08-15 19:34:55 +08:00
.gitmodules seperate aws-sdk && use new sdk 2022-08-05 19:41:13 +08:00
BUILD curve: add compile warning/error options 2021-11-22 22:04:55 +08:00
CHANGELOG-1.0.md curve: update changelog 2021-11-22 19:49:31 +08:00
CHANGELOG-1.1.md Add performance test data 2020-10-19 15:46:40 +08:00
CHANGELOG-1.2.md curve: update changelog 2021-11-22 19:49:31 +08:00
CHANGELOG-1.3.md docs: update change log for tag v1.3-beta2 2021-07-14 13:55:31 +08:00
CHANGELOG-2.0.md doc: add changelog-2.0.md 2022-02-15 13:55:19 +08:00
CHANGELOG-2.1.md doc: add changelog-2.1.md 2022-03-22 13:49:07 +08:00
CHANGELOG-2.2.md docs: added v2.2 changelog. 2022-06-23 00:45:28 -05:00
CHANGELOG-2.3.md curve: add metadata performance to changelog-v2.3 2022-07-14 13:52:27 +08:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2021-03-09 17:18:42 +08:00
CONTRIBUTING.md Update CONTRIBUTING.md 2020-08-13 10:47:13 +08:00
Community_Guidelines.md curvefs: add curve community guidelines English doc 2022-07-01 17:09:50 +08:00
Community_Guidelines_cn.md curvefs: add curve community guidelines English doc 2022-07-01 17:09:50 +08:00
Dockerfile Update build_and_run.md 2020-07-24 16:19:13 +08:00
LICENSE update LICENSE 2022-06-28 13:49:25 +08:00
MAINTAINERS.md doc: add maintainer list 2022-06-22 11:19:14 +08:00
Makefile build: support build deps by alone. 2022-08-11 10:45:28 +08:00
README.md add ut and failover shields 2022-09-07 14:57:16 +08:00
README_cn.md docs: make README.md more pretty and remove old build guides Links 2022-08-17 10:13:59 +08:00
WORKSPACE seperate aws-sdk && use new sdk 2022-08-05 19:41:13 +08:00
build.sh upgrade bazel 2022-04-06 09:44:35 +08:00
buildfs.sh curve: add compile warning/error options 2021-11-22 22:04:55 +08:00
common.bzl fix compile error in gcc-4.8 2020-07-29 15:25:52 +08:00
copts.bzl upgrade bazel 2022-04-06 09:44:35 +08:00
localut.sh curvefs/metaserver: now we support rocksdb storage. 2022-04-10 21:17:59 +08:00
mk-deb.sh add c-styled header file to curve-sdk 2022-05-09 18:46:26 +08:00
mk-tar.sh add c-styled header file to curve-sdk 2022-05-09 18:46:26 +08:00
replace-curve-repo.sh replace nbd github repo with gitee 2022-06-30 15:29:33 +08:00
startfs.sh change 'fuse_client' to 'curve-fuse' 2021-10-11 18:53:19 +08:00
ut.sh Update ut.sh 2022-09-07 14:59:39 +08:00

README.md

CURVE

A could-native distributed storage system

English | 简体中文

Docs Releases LICENSE CII Best Practices Jenkins Coverage Robot failover

Curve is a high-performance, lightweight-operation, cloud-native open source distributed storage system. It can be applied to mainstream cloud-native infrastructure platforms:

  • connect to OpenStack platform to provide high-performance block storage services for cloud VM;
  • connect to Kubernetes to provide RWO, RWX and other types of persistent volumes;
  • connect to PolarFS as a high-performance storage for cloud-native databases, perfectly supports the storage-computing separation architecture of cloud-native databases.

Curve can also be used as a cloud storage middleware using S3-compatible object storage as a data storage engine, providing cost-effective shared file storage for public cloud users.

Curve has hosted by the Cloud Native Computing Foundation (CNCF) as a sandbox project.

Curve Architecture

The architecture overview of Curve is as follows:

Curve supports deployment in private cloud and public cloud environment, and can also be used in hybrid cloud. The deployment architecture in private cloud environment is as follows:

The CurveFS shared file storage system can be elastically scaled to public cloud storage, which can provide users with greater capacity elasticity, lower costs, and better performance experience:

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.

Environment3 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

In order to improve the operation and maintenance convenience of Curve, we designed and developed the CurveAdm project, which is mainly used for deploying and managing Curve clusters. Currently, it supports the deployment of CurveBS & CurveFS (scaleout, upgrade and other functions are under development), please refer to the CurveAdm User Manual for related documentation, and install the CurveAdm tool according to the manual before deploying the Curve cluster.

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

Please refer to the CurveBS cluster deployment steps in the CurveAdm User Manual , for the single-machine experience environment, please use the template about "cluster topology file for single-machine deployment".

Deploy on single machine - deprecated method

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

Please refer to the CurveBS cluster deployment steps in the CurveAdm User Manual , please use the template about "cluster topology file for multi-machine deployment".

Deploy on multiple machines - deprecated method

curve_ops_tool introduction

curve_ops_tool introduction

Quick Start of CurveFS

In order to improve the operation and maintenance convenience of Curve, we designed and developed the CurveAdm project, which is mainly used for deploying and managing Curve clusters. Currently, it supports the deployment of CurveBS & CurveFS, please refer to the CurveAdm User Manual for related documentation, and install the CurveAdm tool according to the manual before deploying the Curve cluster.

Detail for deploying CurveFS cluster: CurveFS deployment

curvefs_tool introduction

curvefs_tool introduction

For Developers

How to participate in the Curve project development is detailed in Curve Community Guidelines

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/opencurve/fio 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`

Release Cycle

  • CURVE release cycleHalf 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 IssuesYou 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.
  • FAQFrequently asked question in our user group, and we'll keep working on it.
  • User groupWe use Wechat group currently.
  • Double Week Meetings: We have an online community meeting every two weeks which talk about what Curve is doing and planning to do. The time and links of the meeting are public in the user group and Double Week Meetings.