Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
opencurve
Curve
提交
0b75417d
Curve
项目概览
opencurve
/
Curve
9 个月 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Curve
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
0b75417d
编写于
7月 28, 2020
作者:
王
王盼
提交者:
Wangpan
7月 28, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactor README and docs
上级
af30ce97
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
140 addition
and
55 deletion
+140
-55
README.md
README.md
+45
-9
docs/cn/build_and_run.md
docs/cn/build_and_run.md
+82
-30
docs/cn/deploy.md
docs/cn/deploy.md
+13
-16
未找到文件。
README.md
浏览文件 @
0b75417d
...
...
@@ -3,22 +3,58 @@
CURVE是网易自主设计研发的高性能、高可用、高可靠分布式存储系统,具有非常良好的扩展性。基于该存储底座可以打造适用于不同应用场景的存储系统,如块存储、对象存储、云原生数据库等。当前我们基于CURVE已经实现了高性能块存储系统,支持快照克隆和恢复 ,支持QEMU虚拟机和物理机NBD设备两种挂载方式, 在网易内部作为高性能云盘使用。
## 文档
##
设计
文档
-
通过
[
简介
](
https://opencurve.github.io/
)
可以了解 curve 架构
-
通过
[
编译与运行
](
docs/cn/build_and_run.md
)
可以了解如何编译和执行单元测试
-
CURVE系列文档
-
通过
[
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
)
-
[
C
urve质量体系
](
docs/cn/quality.md
)
-
[
C
URVE质量体系介绍
](
docs/cn/quality.md
)
## 快速开始
-
通过
[
集群部署
](
docs/cn/deploy.md
)
快速搭建 curve 集群
在您开始动手部署前请先仔细阅读特别说明部分:
[
特别说明
](
docs/cn/deploy.md#%E7%89%B9%E5%88%AB%E8%AF%B4%E6%98%8E
)
##
反馈和参与
##
# 部署All-in-one体验环境
-
bug、疑惑、修改建议都欢迎提在
[
Github Issues
](
https://github.com/opencurve/curve/issues
)
中
-
[
FAQ
](
https://github.com/opencurve/curve/wiki/CURVE-FAQ
)
[
单机部署
](
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/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.
异常测试:暂不做要求
### 其他开发流程说明
TODO
## 版本发布周期
-
CURVE版本发布周期:大版本半年,小版本1~2个月
-
版本号规则:采用3段式版本号,x.y.z,x是大版本,y是用来区分开发版本、rc版本、和稳定版本的(对应0、1、2三个数字),z是BugFixes或小的功能版本。每半年的大版本是指x增加1,每1~2个月的小版本是z增加1
## 反馈及交流
-
[
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:当前为微信群,由于群人数过多,需要先添加以下个人微信,再邀请进群。
<img
src=
"https://raw.githubusercontent.com/opencurve/opencurve.github.io/master/image/curve-wechat.jpeg"
style=
"zoom: 75%;"
/>
\ No newline at end of file
docs/cn/build_and_run.md
浏览文件 @
0b75417d
# 编译与运行
本文用于了解如何编译和执行单元测试。
# 编译环境搭建
## 依赖项
请注意:
1.
如您只是想体验CURVE的部署流程和基本功能,
**则不需要编译CURVE**
,请参考
[
单机部署
](
docs/cn/deploy.md#%E5%8D%95%E6%9C%BA%E9%83%A8%E7%BD%B2
)
2.
本文档仅用来帮助你搭建CURVE代码编译环境,便于您参与CURVE的开发调试及打包测试
## 使用Docker进行编译(推荐方式)
### 获取或者构建docker镜像
方法一:从docker hub镜像库中拉取docker镜像(推荐方式)
```
bash
docker pull opencurve/curvebuild:centos8
```
方法二:手动构建docker镜像
使用工程目录下的Dockerfile进行构建,命令如下:
```
bash
docker build
-t
opencurve/curvebuild:centos8 .
```
注意:上述操作不建议在curve工程目录执行,否则构建镜像时会把当前目录的文件都复制到docker镜像中,建议把Dockerfile拷贝到新建的干净目录下进行docker镜像的构建。
### 在docker镜像中编译
```
bash
docker run
-it
opencurve/curvebuild:centos8 /bin/bash
cd
<workspace>
git clone https://github.com/opencurve/curve.git 或者 git clone https://gitee.com/mirrors/curve.git
# (可选步骤)将外部依赖替换为国内下载点或镜像仓库,可以加快编译速度: bash replace-curve-repo.sh
bash mk-tar.sh
```
基于tar包的安装部署流程可参考:
[
集群部署
](
docs/cn/deploy.md
)
## 在物理机上编译
curve编译依赖的包括:
...
...
@@ -11,49 +48,51 @@ curve编译依赖的包括:
| bazel | 0.17.2 |
| gcc | 支持c++11的兼容版本 |
curve的其他依赖项,均
有
bazel去管理,可不单独安装。
curve的其他依赖项,均
由
bazel去管理,可不单独安装。
## 安装依赖
##
#
安装依赖
### Ubuntu/LinuxMint/WSL
###
#
Ubuntu/LinuxMint/WSL
```
sudo apt-get install -y bazel git g++ make
```
### Fedora/CentOS
###
#
Fedora/CentOS
```
sudo yum install bazel git gcc-c++ make
```
## 编译
### 一键编译和打包
opencurve 提供一键编译脚本,mk-tar.sh 生成所需的全部tar二进制包,命令如下:
```
# (可选步骤)将外部依赖替换为国内下载点或镜像仓库,可以加快编译速度: bash replace-curve-repo.sh
bash ./mk-tar.sh
```
基于tar包的安装部署流程可参考:
[
集群部署
](
docs/cn/deploy.md
)
特别的,由于curve内部版本使用在debian系统上,因此特别提供debian的版本,命令如下:
```
bash ./mk-deb.sh
```
注意:基于deb包的安装部署流程正在整理中,目前不推荐使用deb包安装部署
##
# 单独编译和运行模块测试
##
测试用例编译及执行
###
#
编译全部模块
### 编译全部模块
仅编译全部模块,不进行打包
```
bazel build ... --compilation_mode=dbg -s --collect_code_coverage --jobs=32 --copt -DHAVE_ZLIB=1 --define=with_glog=true --define=libunwind=true --copt -DGFLAGS_NS=google --copt -Wno-error=format-security --copt -DUSE_BTHREAD_MUTEX
```
###
# 编译对应模块的代码和运行测试·
###
编译对应模块的代码和运行测试
编译对应模块,例如test/common目录下的common-test测试:
...
...
@@ -61,42 +100,55 @@ bazel build ... --compilation_mode=dbg -s --collect_code_coverage --jobs=32 --c
bazel build test/common:common-test --copt -DHAVE_ZLIB=1 --define=with_glog=true --compilation_mode=dbg --define=libunwind=true
```
单独运行该测试:
### 执行测试
```
./bazel-bin/test/common/common-test
```
执行测试前需要先准备好测试用例运行所需的依赖:
#### 动态库
## 使用Docker进行编译
```
bash
export
LD_LIBRARY_PATH
=
<CURVE-WORKSPACE>/thirdparties/etcdclient:<CURVE-WORKSPACE>/thirdparties/aws-sdk/usr/lib:/usr/local/lib:
${
LD_LIBRARY_PATH
}
```
###
获取或者构建docker镜像
###
# fake-s3
方法一:从镜像库中拉取docker镜像(推荐方式)
快照克隆集成测试中,使用了开源的
[
fake-s3
](
https://github.com/jubos/fake-s3
)
模拟真实的s3服务。
```
bash
docker pull opencurve/curvebuild:centos8
$
apt
install
ruby
-y
OR yum
install
ruby
-y
$
gem
install
fakes3
$
fakes3
-r
/S3_DATA_DIR
-p
9999
--license
YOUR_LICENSE_KEY
```
方法二:构建docker镜像
备注:
使用工程目录下的Dockerfile进行构建,命令如下:
-
`-r S3_DATA_DIR`
:存放数据的目录
-
`--license YOUR_LICENSE_KEY`
:fakes3需要key才能运行,申请地址见
[
fake-s3
](
https://github.com/jubos/fake-s3
)
-
`-p 9999`
:fake-s3服务启动的端口,
**不用更改**
#### etcd
```
bash
docker build
-t
opencurve/curvebuild:centos8 .
wget
-ct0
https://github.com/etcd-io/etcd/releases/download/v3.4.10/etcd-v3.4.10-linux-amd64.tar.gz
tar
zxvf etcd-v3.4.10-linux-amd64.tar.gz
cd
etcd-v3.4.10-linux-amd64
&&
cp
etcd etcdctl /usr/bin
```
Node:这一步操作最好不要在curve工程目录执行,因为docker构建时,会把当前目录的文件都复制到docker中。
#### 执行单个测试模块
```
./bazel-bin/test/common/common-test
```
#### 运行单元/集成测试
bazel 编译后的可执行程序都在
`./bazel-bin`
目录下,例如 test/common 目录下的测试代码对应的测试程序为
`./bazel-bin/test/common/common-test`
,可以直接运行程序进行测试。
-
curve相关单元测试程序目录在 ./bazel-bin/test 目录下,集成测试在 ./bazel-bin/test/integration 目录下
-
nebd相关单元测试程序在 ./bazel-bin/nebd/test 目录下
-
nbd相关单元测试程序在 ./bazel-bin/nbd/test 目录下
### 在docker镜像中编译
如果想运行所有的单元测试和集成测试,可以执行工程目录下的ut.sh脚本:
```
bash
docker run
-it
opencurve/curvebuild:centos8 /bin/bash
cd
<workspace>
git clone https://github.com/opencurve/curve.git 或者 git clone https://gitee.com/mirrors/curve.git
bash mk-tar.sh
bash ut.sh
```
Note:curve使用了一些外部组件,例如etcd、brpc、braft等,在编译时会拉去依赖仓库,这一步骤可能比较耗时。为了加速编译,提供了
`replace-curve-repo.sh`
,用于替换相关仓库为国内的镜像。
docs/cn/deploy.md
浏览文件 @
0b75417d
...
...
@@ -88,15 +88,19 @@ ansible是一款自动化运维工具,curve-ansible 是基于 ansible playbook
$
pip
install
--upgrade
setuptools
```
4.
检查其他依赖,未安装的需要手动安装:net-tools, openssl-1.1.1, perf, perl-podlators, make, gcc6.1, libstdc++.so.6.22, libcurl
#### 实施部署
1.
切换到curve用户下执行以下操作
2.
获取tar包并解压
。有两种方式:从github下载tar包和自行打包
2.
获取tar包并解压
2.
1 从github下载tar包,如果想要部署release版本,则从github下载最新的tar包即可。
**下面的命令仅供参考,tar包会经常更新,下面给出不一定是最新的**
。
有两种方式可以获得tar包:
1.
从
[
github release页面
](
https://github.com/opencurve/curve/releases
)
下载稳定版本tar包
2.
自行通过编译环境打tar包,该方式可以让您体验测试最新代码:
[
编译开发环境搭建
](
docs/cn/build_and_run.md
)
```
# 如下几个tar包可替换为其他版本(如您采用方式2自行打包,则不需要下载,拷贝相关tar包即可),下载命令仅供参考
wget https://github.com/opencurve/curve/releases/download/v0.1.1/curve_0.1.1+4b930380.tar.gz
wget https://github.com/opencurve/curve/releases/download/v0.1.1/nbd_0.1.1+4b930380.tar.gz
wget https://github.com/opencurve/curve/releases/download/v0.1.1/nebd_0.1.1+4b930380.tar.gz
...
...
@@ -105,12 +109,7 @@ ansible是一款自动化运维工具,curve-ansible 是基于 ansible playbook
tar zxvf nebd_0.1.1+4b930380.tar.gz
cd curve/curve-ansible
```
2.
2 如果想要部署代码仓库中最新代码的集群,则需要自行打包。打包的步骤为:
-
cd到本地curve仓库
-
执行mk-tar.sh脚本
-
解压打出来的curve, nbd, nebd三个tar包
-
cd curve/curve-ansible
3.
准备inventory文件
-
在server.ini和client.ini的[all:vars]中增加ansible_connection=local
-
如果是debian系统,则不需要改动,如果是CentOs系统,需要将client.ini和server.ini中的curve_lib_dir修改为/usr/lib64
...
...
@@ -264,11 +263,14 @@ ansible是一款自动化运维工具,curve-ansible 是基于 ansible playbook
#### 实施部署
1. 切换到curve用户下执行以下操作
2. 获取tar包并解压
。有两种方式:从github下载tar包和自行打包
2. 获取tar包并解压
2.1 从github下载tar包,如果想要部署release版本,则从github下载最新的tar包即可。**下面的命令仅供参考,tar包会经常更新,下面给出不一定是最新的**。
有两种方式可以获得tar包:
1. 从[github release页面](https://github.com/opencurve/curve/releases)下载稳定版本tar包
2. 自行通过编译环境打tar包,该方式可以让您体验测试最新代码:[编译开发环境搭建](docs/cn/build_and_run.md)
```
# 如下几个tar包可替换为其他版本(如您采用方式2自行打包,则不需要下载,拷贝相关tar包即可),下载命令仅供参考
wget https://github.com/opencurve/curve/releases/download/v0.1.1/curve_0.1.1+4b930380.tar.gz
wget https://github.com/opencurve/curve/releases/download/v0.1.1/nbd_0.1.1+4b930380.tar.gz
wget https://github.com/opencurve/curve/releases/download/v0.1.1/nebd_0.1.1+4b930380.tar.gz
...
...
@@ -277,11 +279,6 @@ ansible是一款自动化运维工具,curve-ansible 是基于 ansible playbook
tar zxvf nebd_0.1.1+4b930380.tar.gz
cd curve/curve-ansible
```
2.2 如果想要部署代码仓库中最新代码的集群,则需要自行打包。打包的步骤为:
- cd到本地curve仓库
- 执行mk-tar.sh脚本
- 解压打出来的curve, nbd, nebd三个tar包
- cd curve/curve-ansible
3. 在中控机上修改配置文件
...
...
@@ -553,4 +550,4 @@ ansible是一款自动化运维工具,curve-ansible 是基于 ansible playbook
sudo curve-nbd map cbd:pool//test_curve_
3.
查看设备挂载情况
curve-nbd list-mapped
```
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录