Ceph 自述文件 摘选
构建依赖
我们在这个过程中提供了Debian和Ubuntu的apt
命令。如果使用具有不同包管理器的系统,则必须使用不同的命令。
1.安装curl
:
apt install curl
- 通过运行
install-deps.sh
脚本安装包依赖项:
./install-deps.sh
- 安装
python3-routes
包:
apt install python3-routes
构建Ceph
这些说明适用于为开发和测试编译代码的开发人员。要构建适合安装的二进制文件,我们建议您构建.deb
或.rpm
包,或者参考ceph.spec.in
或debian/rules
中查看为生产版本指定了哪些配置选项。
要构建Ceph,请遵循以下步骤:
-
请确保您位于包含
do_cmake.sh
和CONTRIBUTING.rst
文件的顶级ceph
目录中。 -
运行
do_cmake.sh
脚本:
./do_cmake.sh
默认情况下,do_cmake.sh
会创建Ceph的“调试构建”,其速度可能比非调试构建慢五倍。将-DCMAKE_BUILD_TYPE=RelWithDebInfo
传递给do_cmake.sh
以创建非调试版本。
- 移动到
build
目录:
cd build
- 使用
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]
- 安装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