跳到主要内容

下载和编译curvine

本章节将介绍如何下载和编译curvine。

支持的linux发行版

OS DistributionKernel RequirementTested VersionDependencies
CentOS 7≥3.10.07.6fuse2-2.9.2
CentOS 8≥4.18.08.5fuse3-3.9.1
Rocky Linux 9≥5.14.09.5fuse3-3.10.2
RHEL 9≥5.14.09.5fuse3-3.10.2
Ubuntu 22≥5.15.022.4fuse3-3.10.5

下载代码

git clone https://github.com/CurvineIO/curvine.git ./

本地编译

注意

请确保前置依赖环境已经安装好,并配置到环境变量中。 相关环境依赖的安装过程,您也可以参考 环境的初始化教程

或者 Docker环境初始化

然后,使用make命令即可全量编译, 编译结果位于 build/dist

make all
备注

更多 make 目标可运行 makemake help 查看。简要说明(以仓库为准):

  • 环境make check-env — 检查构建依赖
  • 构建make build / make all — 编译(输出在 build/dist);make dist — 编译并打 tar.gz 到项目根目录;make dist-only — 仅对已有 build/dist 打包
  • Dockermake docker-build — 构建运行时镜像;make docker-build-compile — 构建编译用镜像(交互);make docker-compile — 在容器内编译,输出到本地 build/dist
  • CSImake curvine-csi — 构建 curvine-csi 镜像
  • 示例make build ARGS='-p core'make build ARGS='-p server -p client'make build ARGS='-p object'(S3 网关)、RELEASE_VERSION=v1.0.0 make dist

docker编译

提示

如果您的系统环境是macos 或者 windows,或者linux版本不在 支持列表 中, 则建议使用docker编译,这样您可以在隔离环境中安全操作,而不会影响您的系统环境。

1. 使用 Curvine 提供的编译镜像

Docker Hub 提供编译镜像:curvine/curvine-compile:latest(另有 curvine/curvine-compile:build-cached 含缓存依赖)。

提示

可将该镜像作为沙箱:在容器内编译(及运行),仓库挂载到 /workspace

方式 A — 在容器内编译,输出到本地 build/dist

make docker-compile

(使用镜像 curvine/curvine-compile:build-cached,结果在 build/dist。)

方式 B — 常驻开发容器:

docker run -itd --name curvine-compile \
-u root --privileged=true \
-v $(pwd):/workspace -w /workspace \
--network host \
curvine/curvine-compile:latest /bin/bash

docker exec -it curvine-compile /bin/bash
# 容器内执行:make all

2. 进阶:自建编译镜像

提示

若因网络等原因无法使用官方镜像,可在本地基于仓库中的 Dockerfile 构建编译镜像。

curvine-docker/compile/ 下可用的 Dockerfile:

  • Dockerfile_rocky9 — Rocky Linux 9(推荐基线)
  • Dockerfile_rocky9_cached — Rocky 9,带依赖缓存(重编更快)
  • Dockerfile_ubuntu22 — Ubuntu 22.04
  • Dockerfile_ubuntu24 — Ubuntu 24.04
  • Dockerfile_amzn2 — Amazon Linux 2

项目根目录执行:

# 构建编译镜像(任选一个 Dockerfile)
docker build -f curvine-docker/compile/Dockerfile_rocky9 -t curvine-compile:rocky9 curvine-docker/compile

# 启动容器并编译
docker run -itd --name curvine-compile \
-u root --privileged=true \
-v $(pwd):/workspace -w /workspace \
--network host \
curvine-compile:rocky9 /bin/bash

docker exec -it curvine-compile /bin/bash
# 容器内:make all

编译结果在容器内(及若挂载了仓库则在主机)的 build/dist

注意

如果您的编译镜像的os版本和宿主机os版本有较大差异或者不是相同的发行版,则可能因为libc或者abi等不兼容导致docker编译出来产物无法直接在宿主机运行。

因此, 对于docker编译出来的产物,强烈建议在相同的os版本或者docker容器中运行!

拓展模块支持

curvine 底层存储支持对接oss、hdfs、s3、minio等多种不同的存储,默认情况下这些存储通过opendal实现对接。 curvine针对oss和hdfs实现也提供了特定优化版本。 你可以通过make all --ufs oss-hdfs 这种方式来编译拓展模块。

支持的参数包括

参数说明
oss-hdfs对接阿里jindo-sdk
opendal-oss通过opendal对接OSS对象存储
opendal-hdfs以native模式运行
opendal-s3通过opendal对接S3对象存储
opendal-azblob通过opendal对接Azure Blob
注意

oss-hdfs 模块编译中,你需要指定jindo的环境变量,例如:

export export JINDOSDK_HOME=/opt/jindosdk-6.10.3
export LD_LIBRARY_PATH="${JINDOSDK_HOME}/lib/native:${LD_LIBRARY_PATH}"
make all `--ufs oss-hdfs`

如果需要同时编译多个拓展模块支持,可以多次指定--ufs,比如make all --ufs oss-hdfs --ufs opendal-oss

你需要关注到,对于oss加速桶和默认对象存储桶,在使用的时候都是oss://test-bucket的模式,因此在挂载oss存储的时候,需要指定特定的模块支持,关于挂载的详细用法参考cli mount章节