阅读了ceph-volume的源码,找到了编译安装创建bluestore osd失败的问题。编译安装和rpm打包安装区别不大,安装的文件都类似,主要的区别就是安装路径的问题。ceph文件众多,有二进制文件、库文件、service文件等,这些文件rpm包的安装路径和编译安装的默认路径完全不同。
拿ceph-volume说,ceph-volume除了二进制文件,还有python脚本和service文件。问题就出在ceph-volume的service文件:rpm包将它的service文件安装在了systemctl能识别到的路径,而编译安装却默认安装在了/usr/local,导致使用systemctl创建bluestore osd服务时找不到ceph-volume的service文件。所以解决办法也很容易,就是修改编译安装的默认路径。
在do_cmake阶段修改默认安装路径。这里我写了一个脚本,将默认路径和rpm包安装的路径保持一致:
./do_cmake.sh \
-DCMAKE_C_FLAGS=-ltbb \
-DCMAKE_INSTALL_PREFIX=$(rpm --eval "%{_prefix}") \
-DCMAKE_INSTALL_LIBDIR=$(rpm --eval "%{_libdir}") \
-DCMAKE_INSTALL_LIBEXECDIR=$(rpm --eval "%{_libexecdir}") \
-DCMAKE_INSTALL_LOCALSTATEDIR=$(rpm --eval "%{_localstatedir}") \
-DCMAKE_INSTALL_SYSCONFDIR=$(rpm --eval "%{_sysconfdir}") \
-DCMAKE_INSTALL_MANDIR=$(rpm --eval "%{_mandir}") \
-DCMAKE_INSTALL_DOCDIR=$(rpm --eval "%{_docdir}/ceph") \
-DCMAKE_INSTALL_INCLUDEDIR=$(rpm --eval "%{_includedir}") \
-DCMAKE_BUILD_TYPE=DEBUG \
-DALLOCATOR=libc -O0 -g3 -gdwarf-4
网友评论