Ceph 自述文件 摘选

构建依赖

我们在这个过程中提供了Debian和Ubuntu的apt命令。如果使用具有不同包管理器的系统,则必须使用不同的命令。

1.安装curl:

apt install curl
  1. 通过运行install-deps.sh脚本安装包依赖项:
./install-deps.sh
  1. 安装python3-routes包:
apt install python3-routes

构建Ceph

这些说明适用于为开发和测试编译代码的开发人员。要构建适合安装的二进制文件,我们建议您构建.deb.rpm包,或者参考ceph.spec.indebian/rules中查看为生产版本指定了哪些配置选项。

要构建Ceph,请遵循以下步骤:

  1. 请确保您位于包含 do_cmake.shCONTRIBUTING.rst 文件的顶级 ceph 目录中。

  2. 运行do_cmake.sh脚本:

./do_cmake.sh

默认情况下,do_cmake.sh会创建Ceph的“调试构建”,其速度可能比非调试构建慢五倍。将-DCMAKE_BUILD_TYPE=RelWithDebInfo传递给do_cmake.sh以创建非调试版本。

  1. 移动到build目录:
cd build
  1. 使用ninja构建系统构建开发环境:
ninja -j3

[重要]

Ninja是Ceph项目用来构建测试构建的构建系统。如果未指定,ninja使用的作业数来自构建主机的CPU内核数。如果构建作业内存不足,使用1 -j 1选项限制作业数。如果你试图运行ninja并收到一条消息g++: fatal error: Killed signal terminated program cc1plus,那么你已经耗尽内存。

使用-j选项和一个适合运行ninja命令的硬件的参数,预计会导致成功的构建。例如,要将作业数限制为3,请运行命令ninja -j3 。平均而言,并行运行的每个Ninja作业需要大约2.5 GiB的RAM。

本文档假设您的构建目录是ceph.git checkout的子目录。如果构建目录位于其他位置,请将CEPH_GIT_DIR指向正确的签出路径。在调用do_CMake.sh之前,可以通过设置args来指定其他CMake参数。请参阅cmake-options以获取更多详细信息。例如:

ARGS="-DCMAKE_C_COMPILER=gcc-7" ./do_cmake.sh

要只构建某些目标,运行如下命令:

ninja [target name]
  1. 安装vstart集群:
ninja install

CMake选项

-D标志可以与cmake一起使用,以加快构建Ceph的过程并自定义构建。

不带RADOS网关的构建

RADOS网关是默认建立的。要构建没有RADOS网关的Ceph,运行以下命令:

cmake -DWITH_RADOSGW=OFF [path to top-level ceph directory]

带有调试和任意依赖位置的构建

运行以下形式的命令来构建Ceph,并为一些外部依赖项提供调试和替代位置:

cmake -DCMAKE_INSTALL_PREFIX=/opt/ceph -DCMAKE_C_FLAGS="-Og -g3 -gdwarf-4" \
..

Ceph有几个捆绑的依赖,比如Boost、RocksDB和Arrow。默认情况下,cmake从源代码构建这些捆绑的依赖项,而不是使用系统上已经安装的库。您可以选择使用这些系统库,只要它们满足Ceph的版本要求。要使用系统库,使用cmake选项,如WITH_SYSTEM_BOOST ,如下例所示:

cmake -DWITH_SYSTEM_BOOST=ON [...]

要查看-D选项的详细列表,请调用cmake -LH

cmake -LH

保留诊断颜色

如果将ninja管道到less,并希望保留输出中的诊断颜色,以便使错误和警告更清晰,请运行以下命令:

cmake -DDIAGNOSTICS_COLOR=always ...

上述命令仅适用于受支持的编译器。

当执行以下命令时,诊断颜色将可见:

ninja | less -R

DIAGNOSTICS_COLOR的其他可用值是auto(默认)和never

构建源tarball

要构建包含从源代码构建和/或构建(deb或rpm)包所需的所有内容的完整源代码tarball,请运行

./make-dist

这将从git创建一个类似ceph-$version.tar.bz2的tarball。(确保您要包含在工作目录中的任何更改都已提交到git。)

运行测试集群

ceph/目录中,运行以下命令以启动测试ceph集群:

cd build
ninja vstart        # builds just enough to run vstart
../src/vstart.sh --debug --new -x --localhost --bluestore
./bin/ceph -s

大多数Ceph命令都在bin/目录中可用。例如:

./bin/rbd create foo --size 1000
./bin/rados -p foo bench 30 write

要关闭测试集群,请从build/目录运行以下命令:

../src/stop.sh

使用sysvinit脚本启动或停止单个守护进程:

./bin/init-ceph restart osd.0
./bin/init-ceph stop

运行单元测试

要构建和运行所有测试(使用所有处理器并行),使用ctest :

cd build
ninja
ctest -j$(nproc)

(注意:从src/test构建的许多目标不使用ctest运行。
以“unittest”开头的目标在ninja check中运行,因此可以
使用ctest运行。以“ceph_test”开头的目标不能,而且应该
手工操作。)

当出现故障时,在build/Testing/Temporary中查找日志。

在Ceph中构建和运行所有测试及其依赖关系,而不需要其他不必要的目标:

cd build
ninja check -j$(nproc)

要手动运行单个测试,使用-R(正则表达式匹配)运行ctest

ctest -R [regex matching test name(s)]

(注:ctest不会构建正在运行的测试或运行该测试所需的依赖项)

要手动运行单个测试并查看所有测试输出,请使用-V (verbose)标志运行ctest:

ctest -V -R [regex matching test name(s)]

要手动运行测试并并行运行作业,请使用-j标志运行ctest:

ctest -j [number of jobs]

为了更好地控制手动测试的执行,你可以给ctest添加许多其他标志。要查看这些选项,运行:

man ctest

构建文档

先决条件

构建文档的包依赖列表可以在doc_depth .deb.txt 中找到:

sudo apt-get install `cat doc_deps.deb.txt`

构建文档

要构建文档,请确保您位于顶级/ceph目录中,并执行构建脚本。例如:

admin/build-doc
posted @ 2024-10-12 15:08  LoftyAmbition  阅读(17)  评论(0编辑  收藏  举报