在编译容器中编译SPDK模块替换掉Ceph中默认的SPDK模块以加速OSD性能。
- 进入编译容器。
| podman exec -it openeuler2203sp4_build /bin/bash
|
- 在“/home”目录下载ceph-17.2.7源码。
| cd /home
wget https://download.ceph.com/tarballs/ceph-17.2.7.tar.gz --no-check-certificate
|
- 在“/home”目录下载openEuler社区SPDK代码,并进行编译。
| cd /home/
git clone -b openEuler-22.03-LTS-SP4 https://gitee.com/src-openeuler/spdk.git
cd spdk/
rpmbuild -bp -D "_sourcedir `pwd`" -D "_builddir `pwd`" spdk.spec
|
- 在“/home”目录下载openEuler社区DPDK代码,并进行编译。
| cd /home/
git clone -b openEuler-22.03-LTS-SP4 https://gitee.com/src-openeuler/dpdk.git
cd dpdk/
rpmbuild -bp -D "_sourcedir `pwd`" -D "_builddir `pwd`" dpdk.spec
|
- 使用编译后的DPDK模块替换SPDK代码中的DPDK模块。
cd /home
rm -rf spdk/spdk-21.01.1/dpdk/
cp -r dpdk/dpdk-21.11 spdk/spdk-21.01.1/dpdk
- 在“/home”目录下载openEuler社区isa-l代码。使用编译后的isa-l模块替换SPDK代码中的isa-l模块。
| cd /home
git clone -b openEuler-22.03-LTS-SP4 https://gitee.com/src-openeuler/isa-l.git
cd isa-l
tar -zxvf v2.30.0.tar.gz
cd /home
rm -rf spdk/spdk-21.01.1/isa-l/
cp -r isa-l/isa-l-2.30.0/ spdk/spdk-21.01.1/isa-l
|
- 在“/home”目录下载selinux-policy代码。打包结果可以暂时放在“/root/rpmbuild/RPMS/noarch”中。
- selinux-policy的手动编译步骤仅需要在openEuler-22.03-LTS-SP3系统和Ceph 17.2.8版本配合时需要执行。
- Ceph 17.2.8安装时依赖的selinux-policy版本需为35.5-22及以上版本,openEuler社区未在openEuler-22.03-LTS-SP3版本发布该版本的RPM包,所以需要手动编译。
- 如果用户使用openEuler-22.03-LTS-SP4系统,可跳过此步骤。
- 如果用户使用Ceph 17.2.7及以下版本,可跳过此步骤。
| cd /home
git clone https://gitee.com/src-openeuler/selinux-policy.git
git checkout -b 2203sp3 origin/openEuler-22.03-LTS-SP3
cp -r selinux-policy/* /root/rpmbuild/SOURCES/
cp selinux-policy/selinux-policy.spec /root/rpmbuild/SPECS/
rpmbuild -bb /root/rpmbuild/SPECS/selinux-policy.spec
|
- 在“/home”目录下面解压Ceph源码,并将openEuler SPDK代码移到“ceph-17.2.7/src”目录下。
| cd /home
tar -zxvf ceph-17.2.7.tar.gz
rm -rf ceph-17.2.7/src/spdk
cp -r spdk/spdk-21.01.1 ceph-17.2.7/src/spdk
|
- 将ceph-17.2.7-spdk.patch文件放入ceph-17.2.7目录下,然后合入SPDK patch。
| cd ceph-17.2.7
patch -p1 < ceph-17.2.7-spdk.patch
|
物理机中的文件拷贝到容器中,可使用
podman cp命令。
podman cp ./ceph-17.2.7-spdk.patch openeuler2203sp4_build:/home/ceph-17.2.7
- 完成上述步骤后,需要进行编译Ceph,具体操作步骤请参见编译Ceph。