尝试编译16.2.14版本
写在前面
松鼠哥的ceph专业课程上线啦!
面向新手同学,从0实战,全面入门ceph安装部署与运维,有需要的同学赶紧扫码订购吧:
春节刚过,又是新的一年好时光。
本篇是Debian Buster系统上进行的Ceph编译,由于Ceph Pacific不支持Centos7.x了,后续版本上,选型的话Debian是一个不错的选择。
有同学会问,松鼠哥上篇的P版本部署是在ubuntu上,怎么现在又跑去搞Debian了。
这不是要试错嘛~
ubuntu本身是debian系的,但是松鼠哥在近期的使用中发现数次ubuntu在vbox中无法正常关机,报错莫名其妙说内核卡死,顿时有点害怕,而Debian Buster系统也用了差不多的时间,而且数量更多,感觉上速度快体验好而且从未有问题。
虽说这波ubuntu在vbox的表现可能是小概率事件,不过松鼠哥对Debian的印象说实话好了不少。
松鼠哥即将推出的ceph专业课程也使用Debian Buster + Ceph Pacific的组合,届时还请各位多多支持^_^
开始
本次使用的Debian系统是最小化安装的,首先配置apt源,腾讯云的源速度不错
1 | cat /etc/apt/source.list |
接下来安装编译所需要的依赖
1 | apt install git cmake libleveldb-dev zlib1g-dev librdmacm-dev libudev-dev libblkid-dev libkeyutils-dev libldap-dev libfuse-dev libaio-dev xfslibs-dev pkg-config libcryptsetup-dev libsqlite3-dev libsnappy-dev liblz4-dev libgoogle-perftools-dev libcurl4-openssl-dev libexpat-dev liboath-dev python3-dev liblttng-ust-dev libbabeltrace-dev nasm libthrift-dev libfmt-dev lua5.3 liblua5.3-dev jq libnl-* libcap-ng-dev gperf libicu-dev librabbitmq-dev librdkafka-dev curl python3-pip python3-venv |
安装完deb包,还需要手动安装一下pip3的一个包cython,先配置清华源再安装
1 | mkdir ~/.pip |
需要的包比较多,其中不少包是实践了好多次才知道要安装的-.-,安装不全编译不通过,疯狂报错。
依赖都安装好之后,搞Ceph的源代码。
由于Ceph源代码及其子模块项目访问不太稳定,这里松鼠哥用了科学的方法先clone到机器上,再完成子模块的update,这样的话就能保证代码的顺利获取,代码下载完最后弄到本地机器即可。
1 | [root@mycloud ~]# git clone --branch v16.2.14 https://github.com/ceph/ceph.git |
接下来do_cmake,这里我们需要配置不少参数,有些参数不加它还会下载别的包,可能会导致编译失败,各位按需调整即可。
1 | root@debian:~/ceph# ./do_cmake.sh -DWITH_MANPAGE=OFF -DWITH_BABELTRACE=OFF -DWITH_MGR_DASHBOARD_FRONTEND=OFF -DCMAKE_BUILD_TYPE=Release -DWITH_CCACHE=OFF -DSPAWN_TEST_ADDRESS_SANITIZER=OFF -DWITH_DMCLOCK_TESTS=OFF -DWITH_GTEST_PARALLEL=OFF -DWITH_SYSTEM_GTEST=OFF -DWITH_TESTS=OFF -Ddmclock_TEST=OFF -DWITH_LTTNG=OFF |
我们这里关闭了DWITH_MGR_DASHBOARD_FRONTEND
,即不要dashboard,也关闭了一堆不必要的TEST
模块,并且设置了DCMAKE_BUILD_TYPE
为release,即按照release标准来进行编译,那么编译出来的包才不会混入一些debug信息,另外,如果需要编译后的文件用做线上替换使用,或者打包成内部发行版本,则需要继续修改配置才行,这里就不演示了。
do_cmake
完成后,我们就得到了build目录,现在我们先将下载好的两个项目拷贝进去
1 | root@debian:~/ceph# cp ~/boost_1_73_0.tar.bz2 build/boost/src/ |
多次编译发现这两个项目在编译过程中会进行下载,但是下载经常失败(编译机器没有科学能力),所以事先下载好,手动放进去,后面编译的时候它就不会下载了。
接下来进入build目录,进行编译
1 | root@debian:~/ceph# cd build/ |
由于本次编译的机器内存仅有可怜的8GiB
,所以编译只能-j4
,实测发现,当机器的内存为16GiB
时,make参数-j8
会导致swap有轻微占用,这表示-j8
至少需要16GiB的内存。
make -j4
跑完,没有问题,机器较差,编了好久。
接下来可以make install
部署本机或者make vstart
搞个测试小环境。
总结
这个编译也搞了挺久的,尤其是依赖的问题,编来编去各种失败,都要尝试。
有一个实用的代码环境对学习ceph的代码和原理有很大的帮助,希望本篇能够给大家带来帮助。
- 本文作者: 奋斗的松鼠
- 本文链接: http://www.strugglesquirrel.com/2024/03/07/Debian-Buster编译Ceph-Pacific/
- 版权声明: 本博客所有文章除特别声明外,创作版权均为作者个人所有,未经允许禁止转载!