ceph安装运行错误过程血泪史(15.2.1版本部署)

接上一篇文章seastar架构安装完毕,正式开启ceph15.2.1部署之路。

  1. 官网获取源码包,wget https://download.ceph.com/tarballs/ceph-15.2.1.tar.gz
  2. 安装依赖
    gcc-8.3.0,见seastar篇
    git clone https://github.com/google/leveldb.git
    cd leveldb
    git checkout v1.20
    make
    cp out-shared/.so /usr/lib64/
    cp out-static/*.a /usr/lib64/
    cp -r …/leveldb/ /usr/include/
  3. 安装
    tar zxf ceph-15.2.1.tar.gz
    cd ceph-15.2.1
    ./install-deps.sh
    修改src/seastar/cmake/SeastarDependencies.cmake,将需要的yaml-cpp版本号删掉,c-ares版本号也删掉 (一处)
  4. 下面正式开始糟心之旅
    执行 ./do_cmake.sh -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_SEASTAR=ON -DWITH_MGR_DASHBOARD_FRONTEND=OFF
    【其中参数1,默认是debug模式编译,改为release模式。 参数2,会编译seastar和crimson。 参数3,该组件编译会下载很多node的模块,没什么用所以禁用】
    错误1. fatal not a git repository
    解决: git init
    错误2. file failed to open for reading(no such file or dir)
    /home/ceph-15.2.1/build/src/CMakeFiles/git-data/head-ref
    解决: vi /run/ceph-15.2.1/.git/refs/heads/master,加入150201(此处需要是int,否则编译生成ceph_ver.c.o会报错,但这样装好之后ceph -v显示会有点问题,不影响使用暂时未关注。对比14.2.1两者的.c文件相同,但build中生成的ceph_ver.h中git版本宏是一串字符序列),:wq保存退出
    错误3. WARNING do_cmake.sh now creates debug builds by default……,详细信息可以看该脚本,原因是ARGS缺少初始值并未从命令行参数中读取
    解决: vi do_cmake.sh,上方加入ARGS+=$@即可
    错误4. ceph -v,报错import rados ImportError: /usr/local/lib64/python3.6/site-packages/rados.cpython-36m-aarch64-linux-gnu.so:undefined symbol : rados_mgr_command_target
    解决: 删除该so即可
  5. 编译安装
    cd build
    make -j96
    make install
    6.运行集群Running a test cluster (https://github.com/ceph/ceph#cmake-options)
    cd build
    make vstart
    …/src/vstart.sh --debug --new -x --localhost --bluestore
    #####下面划重点#####
    报错1. 死循环 waiting for mgr restful module to start
    调试: /home/ceph-15.2.1/build/bin/ceph -c /home/ceph-15.2.1/build/ceph.conf -k /home/ceph-15.2.1/build/keyring -h,可以查看mon帮助,会发现监控下没有对应的restful模块,引起报错。
    分析: 查看日志/home/ceph-15.2.1/build/out/mon.a.log,以下同样要查看该日志。
    mon.a mgrstat health checks: detail项 message: Module restful has failed dependency: No module named pecan.
    【再次运行会发现restful还缺werkzeug,orchestrator和volumes模块缺yaml】
    解决: pip3 install pecan,pip3 install werkzeug,pip3 install pyyaml.(此处曾以为是yaml-cpp安装错误,重新安装发现没卵用,至于为什么是pip3见另一篇python2.7到期无法使用)

另. 打rpm包与部署ceph-15.2.1环境有冲突,都会生成build目录,建议先打包。(rpmbuild见ceph14.2.1环境移植)
同上修改do_cmake.sh
cp ceph.spec /home/rpmbuild/SPECS/
tar cjvf /home/rpmbuild/SOURCES/ceph-15.2.1.tar.bz2 ceph-15.2.1
打包 rpmbuild -bb /home/rpmbuild/SPECS/ceph.spec
报错1. undefined reference to leveldb::DB::

你可能感兴趣的:(笔记)