编译Ceph安装包
源码合入插件后需编译生成新的Ceph安装包,主要包括配置编译环境、修改相关文件和执行编译等操作。请在编译机上完成编译出包的操作。
前提条件
编译时“/home”目录下需要存放编译的中间结果和目标文件,建议“/home”目录下的可用容量不小于100GB。
注:本文档Ceph部署适用于openEuler 20.03 LTS SP1操作系统
配置本地源
- 下载liboath源码及补丁。
1 2 3
yum install git -y git config --global http.sslVerify false git clone https://gitee.com/src-openeuler/oath-toolkit.git
- 通过Yum方式安装RPM打包所需的依赖。
1
yum install wget rpmdevtools gtk-doc pam-devel xmlsec1-devel libtool libtool-ltdl-devel createrepo cmake -y
- 创建“rpmbuild”目录,并将patch文件和源码包移动到“/root/rpmbuild/SOURCES”目录下。
1 2 3 4 5
rpmdev-setuptree cd oath-toolkit mv 0001-oath-toolkit-2.6.5-lockfile.patch /root/rpmbuild/SOURCES mv oath-toolkit-2.6.5.tar.gz /root/rpmbuild/SOURCES cp oath-toolkit.spec /root/rpmbuild/SPECS/
- 编译RPM包。
1
rpmbuild -bb /root/rpmbuild/SPECS/oath-toolkit.spec
- 将编译好的RPM包作为本地Yum源。
1 2 3
mkdir -p /home/oath cp -r /root/rpmbuild/RPMS/* /home/oath/ cd /home/oath && createrepo .
- 配置repo文件。
- 新建“local.repo”文件。
1
vi /etc/yum.repos.d/local.repo
- 按“i”键进入编辑模式,在文件中加入以下内容。
1 2 3 4 5 6
[local-oath] name=local-oath baseurl=file:///home/oath enabled=1 gpgcheck=0 priority=1
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 新建“local.repo”文件。
- 设置Yum证书验证状态为不验证。
- 打开“yum.conf”文件。
1
vim /etc/yum.conf
- 按“i”键进入编辑模式,添加如下内容至末尾。
1 2
sslverify=false deltarpm=0
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 打开“yum.conf”文件。
- 将pip源配置为华为镜像源,以提高下载速度。
- 新建“.pip”目录并在该目录下新建“pip.conf”文件。
1 2
mkdir -p ~/.pip vim ~/.pip/pip.conf
- 按“i”键进入编辑模式,添加如下内容。
1 2 3 4
[global] timeout = 120 index-url = https://repo.huaweicloud.com/repository/pypi/simple trusted-host = repo.huaweicloud.com
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 新建“.pip”目录并在该目录下新建“pip.conf”文件。
安装依赖包
- 配置epel源。
- 新建“epel.repo”文件。
1
vim /etc/yum.repos.d/epel.repo
- 按“i”键进入编辑模式,添加如下内容。
1 2 3 4 5 6
[epel] name=epel baseurl=https://repo.huaweicloud.com/epel/7/aarch64/ enabled=1 gpgcheck=0 priority=1
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 新建“epel.repo”文件。
- 使用epel源安装openEuler中缺少的依赖。
1
yum install python-routes python-tox -y
- 删除epel源。
1
rm -rf /etc/yum.repos.d/epel.repo
epel源仅用于2中的两个依赖的安装,使用后必须删除,否则后续步骤将会从epel源下载与openEuler冲突的RPM包。
- 下载华为镜像源repo。
1
wget -O /etc/yum.repos.d/openEulerOS.repo https://repo.huaweicloud.com/repository/conf/openeuler_aarch64.repo
- 安装服务端Ceph源码编译需要的依赖。
1
yum install java-devel sharutils checkpolicy selinux-policy-devel gperf cryptsetup fuse-devel gperftools-devel libaio-devel libblkid-devel libcurl-devel libudev-devel libxml2-devel libuuid-devel ncurses-devel python-devel valgrind-devel xfsprogs-devel xmlstarlet yasm nss-devel libibverbs-devel openldap-devel CUnit-devel python2-Cython python3-setuptools python-prettytable lttng-ust-devel expat-devel junit boost-random keyutils-libs-devel openssl-devel libcap-ng-devel python-sphinx python2-sphinx python3-sphinx leveldb leveldb-devel snappy snappy-devel lz4 lz4-devel liboath liboath-devel libbabeltrace-devel librabbitmq librabbitmq-devel librdkafka librdkafka-devel libnl3 libnl3-devel rdma-core-devel numactl numactl-devel numactl-libs createrepo openldap-devel rdma-core-devel lz4-devel expat-devel lttng-ust-devel libbabeltrace-devel python3-Cython python2-Cython gperftools-devel bc dnf-plugins-core librabbitmq-devel rpm-build java-1.8.0-openjdk-devel -y
编译出包
- 修改ceph.spec.in文件。
1 2
cd /home/ceph-14.2.8/ sed -i 's#%if 0%{?fedora} || 0%{?rhel}#%if 0%{?fedora} || 0%{?rhel} || 0%{?openEuler}#' ceph.spec.in
- 回到上级目录并将ceph-14.2.8目录打包为tar.bz2格式的压缩包。
1 2
cd /home tar -cjvf ceph-14.2.8.tar.bz2 ceph-14.2.8
- 修改rpmmacros文件。
- 打开文件。
1
vi /root/.rpmmacros
- 按“i”进入编辑模式,修改“%_topdir”的路径为“/home/rpmbuild”,并注释掉如下四行代码。
1 2 3 4 5 6
%_topdir /home/rpmbuild #%__arch_install_post \ # [ "%{buildarch}" = "noarch" ] || QA_CHECK_RPATHS=1 ; \ # case "${QA_CHECK_RPATHS:-}" in [1yY]*) /usr/lib/rpm/check-rpaths ;; esac \ # /usr/lib/rpm/check-buildroot
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 再次执行rpmbuild安装命令。
1
rpmdev-setuptree
- 打开文件。
- 将ceph.spec文件拷贝到SPECS目录下。
1
cp ceph-14.2.8/ceph.spec /home/rpmbuild/SPECS/
- 将2打包好的文件放到SOURCES目录下。
1
cp ceph-14.2.8.tar.bz2 /home/rpmbuild/SOURCES/
- 删除“/etc/profile.d/performance.sh”以提高编译速度。
1
rm -rf /etc/profile.d/performance.sh
- 重新开启一个新的终端让6生效,使用rpmbuild开始编译。
1 2
unset GOMP_CPU_AFFINITY rpmbuild -bb /home/rpmbuild/SPECS/ceph.spec
编译过程需要花费半小时以上,编译完成后会在“/home/rpmbuild/RPMS/”目录下生成两个目录“aarch64”和“noarch”,其中包含有部署Ceph集群相关的RPM包。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
[root@localhost RPMS]# ls aarch64 noarch [root@localhost RPMS]# ls * aarch64: ceph-14.2.8-0.aarch64.rpm Librbd-devel-14.2.8-0.aarch64.rpm ceph-base-14.2.8-0.aarch64.rpm librgw2-14.2.8.0.aarch64.rpm ceph-common-14.2.8-0.aarch64.rpm librgw-devel-14.2.8-0.aarch64.rpm ceph-debuginfo-14.2.8-0.aarch64.rpm python3-ceph-argparse-14.2.8-0.aarch64.rpm ceph-debugsource-14.2.8-0.aarch64.rpm python3-cephfs-14.2.8-0.aarch64.rpm ceph-fuse-14.2.8-0.aarch64.rpm python3-rados-14.2.8-0.aarch64.rpm ceph-nds-14.2.8-0.aarch64.rpm python3-rbd-14.2.8-0.aarch64.rpm ceph-mgr-14.2.8-0.aarch64.rpm python3-rgw-14.2.8-0.aarch64.rpm ceph-mon-14.2.8-0.aarch64.rpm python-ceph-argparse-14.2.8-0.aarch64.rpm ceph-osd-14.2.8-0.aarch64.rpm python-ceph-compat-14.2.8-0.aarch64.rpm ceph-radosgw-14.2.8-0.aarch64.rpm python-cephfs-14.2.8-0.aarch64.rpm ceph-test-14.2.8-0.aarch64.rpm python-rados-14.2.8-0.aarch64.rpm Libcephfs2-14.2.8-0.aarch64.rpm python-rbd-14.2.8-0.aarch64.rpm Libcephfs-devel-14.2.8-0.aarch64.rpm python-rgw-14.2.8-0.aarch64.rpm Librados2-14.2.8-0.aarch64.rpm rados-objclass-devel-14.2.8-0.aarch64.rpm librados-devel-14.2.8-0.aarch64.rpm rbd-fuse-14.2.8-0.aarch64.rpm libradospp-devel-14.2.8-0.aarch64.rpm rbd-mirror-14.2.8-0.aarch64.rpm librbd1-14.2.8-0.aarch64.rpm rbd-nbd-14.2.8-0.aarch64.rpm noarch: ceph-grafana-dashboards-14.2.8-0.noarch.rpm ceph-mgr-k8sevents-14.2.8-0.noarch.rpm ceph-mgr-dashboard-14.2.8-0.noarch.rpm ceph-mgr-rook-14.2.8-0.noarch.rpm ceph-mgr-diskprediction-cloud-14.2.8-0.noarch.rpm ceph-mgr-ssh-14.2.8-0.noarch.rpm ceph-mgr-diskprediction-local-14.2.8-0.noarch.rpm
- 打包编译出的RPM包。
1 2
cd /home/rpmbuild/RPMS tar -zcvf ceph-ksal-rpm.tar.gz aarch64/ noarch/
父主题: 编译部署Ceph