Go to file
Yan Chao Mei 4436867569 add retry & unit test 2023-10-07 16:50:31 +08:00
.github github: support auto assign issue 2022-10-12 21:47:38 +08:00
conf curvebs/chunkserver: enable odsync by default 2023-07-07 14:33:18 +08:00
curve-ansible Revert "client/chunkserver/curve-nbd: support 512 aligned IO requests" 2023-07-03 10:54:09 +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 add retry & unit test 2023-10-07 16:50:31 +08:00
curvefs_python curvebs: support poolset 2023-06-08 19:17:58 +08:00
curvesnapshot_python optimize curve-client 2020-09-23 22:20:02 +08:00
deploy/local curvebs/chunkserver: enable odsync by default 2023-07-07 14:33:18 +08:00
docker/debian9 [fix] rm apt cmd in bs 2023-07-04 15:24:21 +08:00
docs upgrade googletest to v1.12.1 2023-06-26 17:09:15 +08:00
include curvebs: support 512 aligned IO 2023-07-03 10:54:09 +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@631784c37f curvebs: support 512 aligned IO 2023-07-03 10:54:09 +08:00
nebd curvebs: support 512 aligned IO 2023-07-03 10:54:09 +08:00
proto curvebs: support 512 aligned IO 2023-07-03 10:54:09 +08:00
robot Revert "client/chunkserver/curve-nbd: support 512 aligned IO requests" 2023-07-03 10:54:09 +08:00
src curvebs: support 512 aligned IO 2023-07-03 10:54:09 +08:00
test curvebs: support 512 aligned IO 2023-07-03 10:54:09 +08:00
thirdparties upgrade googletest to v1.12.1 2023-06-26 17:09:15 +08:00
tools curvebs: support poolset 2023-06-08 19:17:58 +08:00
tools-v2 [feat] tools-v2: add snapshot copyset --all 2023-07-16 15:59:18 +08:00
util curvefs/client: improve metadata performance. 2023-06-01 15:19:00 +08:00
.bazelrc curvebs: support poolset 2023-06-08 19:17:58 +08:00
.bazelversion upgrade bazel 2022-04-06 09:44:35 +08:00
.clang-format add clang-format and add some info to dev guides 2023-02-07 13:59:23 +08:00
.clangd docs: add .clangd template and configuration guide 2023-02-07 14:04:34 +08:00
.gitignore curvebs: support poolset 2023-06-08 19:17:58 +08:00
.gitmodules revert new s3 sdk due to critical bug 2022-12-12 14:24:41 +08:00
.obm.cfg curvefs/client: improve metadata performance. 2023-06-01 15:19:00 +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
CHANGELOG-2.4.md [skipci] add v2.4 changelog 2022-12-08 12:45:26 +08:00
CHANGELOG-2.5.md add CHANGELOG-2.5.md 2023-01-10 17:35:25 +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
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 curvefs/client: improve metadata performance. 2023-06-01 15:19:00 +08:00
README.md add CurveFS+MinIO S3 Gateway practical to README.md 2023-05-12 10:09:22 +08:00
README_cn.md add CurveFS+MinIO S3 Gateway practical to README_cn.md 2023-05-12 10:09:42 +08:00
WORKSPACE upgrade googletest to v1.12.1 2023-06-26 17:09:15 +08:00
build.sh upgrade bazel 2022-04-06 09:44:35 +08:00
buildfs.sh fix buildfs.sh failed an debian11 2023-06-06 09:43:13 +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
developers_guide.md [skipci] doc: update doc(mds, monitor, developers_guide) 2023-05-11 09:45:03 +08:00
developers_guide_cn.md [skipci] doc: update doc(mds, monitor, developers_guide) 2023-05-11 09:45:03 +08:00
localut.sh curvefs/metaserver: now we support rocksdb storage. 2022-04-10 21:17:59 +08:00
mk-deb.sh curvebs: support poolset 2023-06-08 19:17:58 +08:00
mk-tar.sh build: refactor and fix build issues in mk-deb.sh and mk-tar 2023-05-15 19:26:55 +08:00
replace-curve-repo.sh upgrade googletest to v1.12.1 2023-06-26 17:09:15 +08:00
startfs.sh change 'fuse_client' to 'curve-fuse' 2021-10-11 18:53:19 +08:00
ut.sh ci: fix curvbs buiild in ut.sh 2022-12-20 17:47:51 +08:00

README.md

A cloud-native distributed storage system

A sandbox project hosted by the CNCF Foundation

English | 简体中文

📄 Documents || 🌐 Official Website || 🏠 Forum

Contents

About Curve

Curve is a modern storage system developed by netease, currently supporting file storage(CurveFS) and block storage(CurveBS). Now it's hosted at CNCF as a sandbox project.

The core application scenarios of CurveBS mainly include:

  • the performance, mixed, capacity cloud disk or persistent volume of virtual machine/container, and remote disks of physical machines
  • high-performance separation of storage and computation architecture: high-performance and low latency architecture based on RDMA+SPDK, supporting the separation deployment structure of various databases such as MySQL and Kafka

The core application scenarios of CurveFS mainly include:

  • the cost-effective storage in AI training scene
  • the hot and cold data automation layered storage in big data scenarios
  • the cost-effective shared file storage on the public cloud: It can be used for business scenarios such as AI, big data, file sharing
  • Hybrid storage: Hot data is stored in the local IDC, cold data is stored in public cloud
High Performance | More stable | Easy Operation | Cloud Native
  • High Performance : CurveBS vs CephBS

    CurveBS: v1.2.0

    CephBS: L/N Performance: CurveBS random read and write performance far exceeds CephBS 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

  • More stable

    • 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
      CephBS jitter 7s Continuous io jitter jitter 7s unrecoverable
      CurveBS jitter 4s no effect jitter 4s jitter 4s
  • Easy Operation

    • We have developed CurveAdm to help O&M staff.
      tools CephAdm CurveAdm
      easy Installation ✔️ ✔️
      easy Deployment (slightly more steps) ✔️
      playground ✔️
      Multi-Cluster Management ✔️
      easy Expansion (slightly more steps) ✔️
      easy Upgrade ✔️ ✔️
      easy to stop service ✔️
      easy Cleaning ✔️
      Deployment environment testing ✔️
      Operational audit ✔️
      Peripheral component deployment ✔️
      easy log reporting ✔️
      Cluster status statistics reporting ✔️
      Error code classification and solutions ✔️
    • Ops CurveBS ops is more friendly than CephBS in the block storage scenario.
      Ops scenarios Upgrade clients Balance
      CephBS do not support live upgrade via plug-in with IO influence
      CurveBS support live upgrade with second jitter auto with no influence on IO
  • Cloud Native

Docking OpenStack
Docking Kubernetes
  • Use Curve CSI Driver, The plugin implements the Container Storage Interface(CSI) between Container Orchestrator(CO) and Curve cluster. It allows dynamically provisioning curve volumes and attaching them to workloads.
  • For details of the documentation, see CSI Curve Driver Doc.
Docking PolarDB | PG
  • It serves as the underlying storage base for polardb for postgresql in the form of storage and computation separation, providing data consistency assurance for upper layer database applications, extreme elasticity scaling, and high performance HTAP.

  • Deployment details can be found at PolarDB | PG Advanced Deployment(CurveBS).

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

Curve Architecture

Curve on Hybrid Cloud

Curve supports deployment in private and public cloud environments, and can also be used in a hybrid cloud:

One of them, CurveFS shared file storage system, can be elastically scaled to public cloud storage, which can provide users with greater capacity elasticity, lower cost, and better performance experience.

Curve on Public Cloud

In a public cloud environment, users can deploy CurveFS clusters to replace the shared file storage system provided by cloud vendors and use cloud disks for acceleration, which can greatly reduce business costs, with the following deployment architecture:

Design Documentation

CurveBS quick start

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 experience environment

Please refer to the CurveBS cluster deployment steps in the CurveAdm user manual. For standalone experience, please use the "Cluster Topology File - Standalone Deployment" template.

The command tools' instructions

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

If you have any questions during performance testing, please check the Curve block storage performance tuning guide.

CurveFS quick start

Please use CurveAdm tool to deploy CurveFSsee CurveFS Deployment Process, and the CurveFS Command Instructions.

Test environment configuration

Please refer to the Test environment configuration

Practical

Governance

See Governance.

Contribute us

Participation in the Curve project is described in the Curve Developers Guidelines and is subject to a contributor contract. We welcome your contribution!

Code of Conduct

Curve follows the CNCF Code of Conduct.

LICENSE

Curve is distributed under the Apache 2.0 LICENSE.

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.

Contributors

This project exists thanks to all the people who contribute.

Made with contrib.rocks.

Star History

Star History Chart

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.