使能SPDK

在编译容器中编译SPDK模块替换掉Ceph中默认的SPDK模块以加速OSD性能。

  1. 进入编译容器。

    1
    podman exec -it openeuler2203sp4_build /bin/bash
    

  2. “/home”目录下载ceph-17.2.7源码。

    1
    2
    cd /home
    wget https://download.ceph.com/tarballs/ceph-17.2.7.tar.gz --no-check-certificate
    

  3. “/home”目录下载openEuler社区SPDK代码,并进行编译。

    1
    2
    3
    4
    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
    

  4. “/home”目录下载openEuler社区DPDK代码,并进行编译。

    1
    2
    3
    4
    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
    

  5. 使用编译后的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

  6. “/home”目录下载openEuler社区isa-l代码。使用编译后的isa-l模块替换SPDK代码中的isa-l模块。

    1
    2
    3
    4
    5
    6
    7
    8
    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
    

  7. “/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及以下版本,可跳过此步骤。
    1
    2
    3
    4
    5
    6
    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
    

  8. “/home”目录下面解压Ceph源码,并将openEuler SPDK代码移到“ceph-17.2.7/src”目录下。

    1
    2
    3
    4
    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
    

  9. 将ceph-17.2.7-spdk.patch文件放入ceph-17.2.7目录下,然后合入SPDK patch。

    1
    2
    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

  10. 完成上述步骤后,需要进行编译Ceph,具体操作步骤请参见编译Ceph