编译和部署UCX开源软件包,主要包括编译并构建出编译Ceph时需要依赖的UCX RPM包。
- 进入编译容器,在容器中配置代理等环境变量,不建议配置到bashrc中。
|
podman exec -it openeuler2203sp4_build /bin/bash
export TMOUT=0
export http_proxy=http://xxx// 按需配置
export https_proxy=http://xxx // 按需配置
|
- 获取UCX开源软件包,获取路径请参见表4。
cd /home
wget https://github.com/openucx/ucx/releases/download/v1.14.1/ucx-1.14.1-1.el7.src.rpm --no-check-certificate
wget https://github.com/openucx/ucx/releases/download/v1.14.1/ucx-1.14.1.tar.gz --no-check-certificate
- 安装通用组件。
|
yum install CUnit-devel boost-random checkpolicy cmake cryptsetup-devel expat-devel fmt-devel fuse-devel gperf java-devel junit keyutils-libs-devel libaio-devel libbabeltrace-devel libblkid-devel libcap-ng-devel libcurl-devel numactl-devel libicu-devel libnl3-devel liboath-devel librabbitmq-devel librdkafka-devel librdmacm-devel libtool libxml2-devel lttng-ust-devel lua-devel luarocks lz4-devel make nasm ncurses-devel ninja-build nss-devel openldap-devel openssl-devel libudev-devel python3-Cython python3-devel python3-prettytable python3-pyyaml python3-setuptools python3-sphinx re2-devel selinux-policy-devel sharutils snappy-devel sqlite-devel sudo thrift-devel valgrind-devel xfsprogs-devel xmlstarlet doxygen meson python3-pyelftools -y
|
- 定义RPM包编译路径。
- 打开“/root/.rpmmacros”文件。
- 按“i”进入编辑模式,将%_topdir路径设置为编译RPM包的路径(本文档中以新建路径“/root/rpmbuild”为例),并将其他行的内容全部注释掉(首次定义RPM包编译路径时,该文件不存在,内容为空,直接新增以下内容保存即可)。
- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
- 创建rpmbuild下的构建目录。
- 下载安装UCX包,并将其上传至服务器。下载地址见表4。
- 安装UCX软件包。
|
rpm -ivh ucx-1.14.1-1.el7.src.rpm
|
- 为了解决UCX在容器中部署存在的报错问题和提升UCX性能,需要修改几行代码。参考下方的代码完成修改。
- 切换到“/root/rpmbuild/SOURCES/”路径下。
|
cd /root/rpmbuild/SOURCES/
|
- 解压缩ucx-1.14.1.tar.gz文件。
|
tar -zxvf ucx-1.14.1.tar.gz
|
- 打开“ucx-1.14.1/src/ucs/sys/sys.c”文件,将光标定位到该文件的第1560行。
|
vim ucx-1.14.1/src/ucs/sys/sys.c +1560
|
- 按“i”进入编辑模式。在1560行新增如下内容。

- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
- 打开“ucx-1.14.1/src/ucp/core/ucp_context.c”文件,并将光标定位到2156行。
|
vim ucx-1.14.1/src/ucp/core/ucp_context.c +2156
|
- 按“i”进入编辑模式,在2156行新增“#if 0”,在函数最后新增“#endif”。

- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
- 打开“ucx-1.14.1/src/ucs/config/parser.c”文件,并将光标定位到1989行。
|
vim ucx-1.14.1/src/ucs/config/parser.c +1989
|
- 按“i”进入编辑模式,在1989行新增“#if 0”,在打印后面新增“#endif”。

- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
- 打开“ucx-1.14.1/src/uct/ib/base/ib_iface.c”文件,并将光标定位到735行。
|
vim ucx-1.14.1/src/uct/ib/base/ib_iface.c +735
|
- 按“i”进入编辑模式,注释735行,并添加一行以下代码。
ah_attr->grh.flow_label = 0;

- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
- 对该文件进行打包。
|
rm -rf ucx-1.14.1.tar.gz
tar zcvf ucx-1.14.1.tar.gz ucx-1.14.1
|
- 在RPM编译路径下,编译并构建ucx.spec文件,生成RPM包。
|
cd /root/rpmbuild/SPECS
rpmbuild -bb ucx.spec
|
编译完成后在“/root/rpmbuild/RPMS/aarch64”目录会生成如下图所示的8个RPM包。

- 把编译生成后的RPM包拷贝到“/home/local_rpm/”目录下,然后进行安装。
|
mkdir -p /home/local_rpm/
cp /root/rpmbuild/RPMS/aarch64/ucx* /home/local_rpm/
cd /home/local_rpm/
|
|
rpm -ivh ucx-1.14.1-1.aarch64.rpm
rpm -ivh ucx-cma-1.14.1-1.aarch64.rpm
rpm -ivh ucx-debuginfo-1.14.1-1.aarch64.rpm
rpm -ivh ucx-debugsource-1.14.1-1.aarch64.rpm
rpm -ivh ucx-devel-1.14.1-1.aarch64.rpm
rpm -ivh ucx-ib-1.14.1-1.aarch64.rpm
rpm -ivh ucx-rdmacm-1.14.1-1.aarch64.rpm
rpm -ivh ucx-static-1.14.1-1.aarch64.rpm
|