你可以从 github 克隆
git clone git@github.com:ceph/ceph
或者,如果你不是 github 用户,
git clone https://github.com/ceph/ceph.git
Ceph 包含许多需要检查的 git 子模块
git submodule update --init --recursive
Debian 或 RPM 软件包依赖项列表可以通过以下方式安装:
./install-deps.sh
请注意,这些说明适用于为开发和测试编译代码的开发人员。要构建适合安装的二进制文件,我们建议您构建 deb 或 rpm 包或参考ceph.spec.in
或debian/rules
查看为生产构建指定了哪些配置选项。
构建说明:
./do_cmake.sh
cd build
ninja
(do_cmake.sh 现在默认创建 ceph 的调试版本,在某些工作负载下可能会慢 5 倍。请将“-DCMAKE_BUILD_TYPE=RelWithDebInfo”传递给 do_cmake.sh 以创建非调试版本。
如果未指定,则使用的作业数ninja
来自构建主机的 CPU 内核数。-j
如果构建作业内存不足,请使用该选项来限制作业数量。平均而言,每个作业占用大约 2.5GiB 内存。)
这假设您将构建目录设为 ceph.git 检出的子目录。如果您将其放在其他地方,只需指向CEPH_GIT_DIR
结帐的正确路径即可。可以通过在调用 do_cmake 之前设置 ARGS 来指定任何其他 CMake args。 有关详细信息,请参阅cmake 选项。例如。
ARGS="-DCMAKE_C_COMPILER=gcc-7" ./do_cmake.sh
要仅构建某些目标,请使用:
ninja [target name]
安装:
ninja install
如果您cmake
手动运行该命令,您可以使用“-D”设置许多选项。例如,构建 RADOS 网关的选项默认为开启。在没有 RADOS 网关的情况下构建:
cmake -DWITH_RADOSGW=OFF [path to top-level ceph directory]
下面的另一个示例是为几个外部依赖项构建调试和备用位置:
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
:
cmake -LH
如果您经常通过管道传输ninja
并less
希望维护错误和警告的诊断颜色(如果您的编译器支持它),您可以调用cmake
:
cmake -DDIAGNOSTICS_COLOR=always ...
然后您将在执行时获得诊断颜色:
ninja | less -R
“DIAGNOSTICS_COLOR”的其他可用值是“自动”(默认)和“从不”。
要构建包含从源构建和/或构建(deb 或 rpm)包所需的一切的完整源 tarball,运行
./make-dist
这将从 git 创建一个像 ceph-$version.tar.bz2 这样的压缩包。(确保您要包含在工作目录中的任何更改都已提交给 git。)
要运行功能测试集群,
cd build
ninja vstart # builds just enough to run vstart
../src/vstart.sh --debug --new -x --localhost --bluestore
./bin/ceph -s
几乎所有常用的命令都可以在 bin/ 目录中找到。例如,
./bin/rados -p rbd bench 30 write
./bin/rbd create foo --size 1000
要关闭测试集群,
../src/stop.sh
要启动或停止单个守护进程,可以使用 sysvinit 脚本:
./bin/init-ceph restart osd.0
./bin/init-ceph stop
要构建和运行所有测试(并行使用所有处理器),请使用ctest
:
cd build
ninja
ctest -j$(nproc)
(注意:许多从src/testctest
构建的目标不使用.ninja check
ctest
发生故障时,查看 build/Testing/Temporary 中的日志。
要在 Ceph 中构建并运行所有测试及其依赖项,而无需其他不必要的目标:
cd build
ninja check -j$(nproc)
要手动运行单个测试,请ctest
使用 -R(正则表达式匹配)运行:
ctest -R [regex matching test name(s)]
(注意:ctest
不构建它正在运行的测试或运行它所需的依赖项)
要手动运行单个测试并查看所有测试输出,请 ctest
使用 -V(详细)标志运行:
ctest -V -R [regex matching test name(s)]
要手动运行测试并并行运行作业,请ctest
使用-j
标志运行:
ctest -j [number of jobs]
您可以提供许多其他标志ctest
以更好地控制手动测试执行。要查看这些选项运行:
man ctest
可以在以下位置找到用于构建文档的包依赖项列表doc_deps.deb.txt
:
sudo apt-get install `cat doc_deps.deb.txt`
要构建文档,请确保您位于顶级 /ceph
目录中,然后执行构建脚本。例如:
admin/build-doc
Ceph 的大部分都在 LGPL 2.1 或 3.0 版下获得双重许可。一些杂项代码在 BSD 样式许可下或属于公共领域。该文档根据 Creative Commons Attribution Share Alike 3.0 (CC-BY-SA-3.0) 获得许可。此处包含的一些标头已根据 GPL 获得许可。请参阅文件 COPYING 以获取按文件列出的完整许可证清单。
代码贡献必须包括一个有效的“签名者”,以确认修改或贡献文件的许可。请参阅文件 SubmittingPatches.rst 以了解有关这意味着什么以及如何生成和提交补丁的详细信息。
我们不需要转让版权来贡献代码;代码是根据适用许可的条款提供的。