ceph luminous版本编译及部署
一、载ceph L版本代码github下载即可,省略二、改do_cmake.sh文件
注释这一行,添加如下:#cmake -DBOOST_J=$(nproc) $ARGS '$@' ..cmake -DCMAKE_C_FLAGS='-O0 -g3 -gdwarf-4' -DCMAKE_CXX_FLAGS='-O0 -g3 -gdwarf-4' -DBOOST_J=$(nproc) $ARGS '$@' ..
上述修改解释:
CMAKE_C_FLAGS=“-O0 -g3 -gdwarf-4” : c 语言编译配置CMAKE_CXX_FLAGS=“-O0 -g3 -gdwarf-4” :c++ 编译配置-O0 : 关闭编译器的优化,如果没有,使用GDB追踪程序时,大多数变量被优化,无法显示, 生产环境必须关掉-g3 : 意味着会产生大量的调试信息-gdwarf-4 : dwarf 是一种调试格式,dwarf-4 版本为4
三、执行do_cmake.sh脚本,
这个步骤会创建一个叫build的目录,进入到build目录。可以看到Makefile文件,方便下一步的make编译。
此步骤应该会报很多错误,逐个解决即可:大约需要安装一下rpm包及其依赖包:
yum install python-sphinx nss-devel lttng-ust-devel babeltrace libbabeltrace-devel libibverbs python3 python3-devel python-Cython python3*-Cython gperftools gperftools-devel gperfTips:这里安装python3-devel的时候会冲突,需要先卸载python-devel,等待安装python3-devel后,再安装python-devel即可;rpm -e python-develyum install python-devel
1. pthread_create 问题该问题定位很久.../home/ceph-luminous/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c:8:对‘pthread_create’未定义的引用
解决:yum install python-sphinx有博客说可以通过升级cmake的版本可以解决,但是升级后问题依然存在。ref:https://tracker.ceph.com/issues/192942. nss相关解决:yum install nss-devel3.LTTngUST相关
解决:yum install lttng-ust-devel4.babeltrace相关解决: yum install babeltraceyum install libbabeltrace-devel
5.libibverbs相关解决:yum install libibverbs
6.liblua相关该问题也定位很久。解决:忘记怎么解决了,似乎是用do_cmake.sh 脚本中,执行git submodule update --init --recursive,安装相关源码包?(因为之前为了方便,我把这行注释掉了)
已经编译好的环境上相关依赖包?[root@ceph1 ceph-luminous]# rpm -qa | grep lualua-5.1.4-15.el7.x86_64lua-static-5.1.4-15.el7.x86_64[root@ceph1 ceph-luminous]# ls src/lua/cmake CMakeLists.txt dist.info doc etc Makefile README.md src
https://tracker.ceph.com/issues/21418
7.Python3Libs问题
解决:yum install yum install python3-devel python3-devel
tips:先卸载rpm -e python-devel,再安装python3-devel,再安装python-devel8.Cython问题
解决:
yum install python-Cython,其实安装了:sclo-cassandra3-runtime-1.0-17.el7.x86_64 sclo-cassandra3-python2-Cython-0.27.1-2.el7.x86_64yum install python3*-Cython,其实安装了:python34-3.4.10-4.el7.x86_64.rpm python34-Cython-0.28.5-1.el7.x86_64.rpm python34-libs-3.4.10-4.el7.x86_64.rpm python36-Cython-0.28.5-1.el7.x86_64.rpm
9.gperf问题:解决:yum install gperftools gperftools-devel (69个依赖包)yum install gperf10.sclo问题
解决:yum install centos-release-scl
至此执行do_cmake.sh 完成四、编译和安装
执行cmake . -LH 查看下ceph有哪些编译选项,根据自己的需要来选择
执行
cmake .. -DWITH_LTTNG=OFF -DWITH_RDMA=OFF -DWITH_FUSE=OFF -DWITH_DPDK=OFF -DCMAKE_INSTALL_PREFIX=/usr
执行make –j8编译源码
执行make install编译安装源码
五、检查ceph版本,prettytable问题解决:yum install python-prettytable
六、开始部署
1.时间同步:
[root@ceph-node1 ~]# yum install -y ntp ntpdate ntp-doc[root@ceph-node2 ~]# yum install -y ntp ntpdate ntp-doc[root@ceph-node3 ~]# yum install -y ntp ntpdate ntp-doc[root@ceph-node1 ~]# ntpdate ntp1.aliyun.com31 Jul 03:43:04 ntpdate[973]: adjust time server 120.25.115.20 offset 0.001528 sec[root@ceph-node1 ~]# hwclock Tue 31 Jul 2018 03:44:55 AM EDT -0.302897 seconds[root@ceph-node1 ~]# crontab -e*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
2.节点间无密钥访问及/etc/hosts、主机名配置略3.mon的初始化配置
ceph-deploy new ceph1 ceph2 ceph3 --public-network=192.168.111.0/24 --cluster-network=192.168.111.0/24ceph-deploy --overwrite-conf mon create-initial
问题一:报错:Failed to execute command: systemctl enable ceph.target(该问题处理较长时间)设置setenforce 0 后
主要是源码安装后, /usr/lib/systemd/system/下没有生成对于得target和service文件解决:
[root@ceph2 ceph-luminous]# pwd/home/ceph-luminouscp systemd/ceph*.target /usr/lib/systemd/system/cp systemd/ceph*.service /usr/lib/systemd/system/cp systemd/ceph /usr/lib/systemd/system/
问题二:没有ceph用户问题解决:
添加ceph用户,并修改权限adduser -d /home/easystack/ -m ceph vim /etc/passwd //改为0
问题三:这个是因为/etc/hosts 的名字和hostname不一致导致(或者冲突导致)。
修改正确后:
执行ceph-deploy admin ceph1 ceph2 ceph3 把key推送到相应的位置(主要是ceph.client.admin.keyring要放到 /etc/ceph/ 下)至此,mon初始化成功
4、mgr部署no active mgr 这个 manager 是在 J 版本以后加入的,此时需要开启这个功能模块:解决:手动创建mgr目录即可:mkdir -p /var/lib/ceph/mgr
重新部署:
5、osd部署
//这里prepare换为create 效果相同ceph-deploy osd prepare --bluestore --block-wal /dev/vde1 --block-db /dev/vde2 ceph1:/dev/vdb ceph-deploy osd activate ceph1:/dev/vdb1
部署后block-wal、block-db以及block之间的结构关系(以osd.0为例):
部署成功后,出现“ HEALTH_WARN application not enabled on 1 pool(s)”,refs:https://ceph.io/community/new-luminous-pool-tags/
大概是给创建的存储池做标记使用:use 'ceph osd pool application enable <pool-name> <app-name>', where <app-name> is 'cephfs', 'rbd', 'rgw', or freeform for custom applications.处理:ceph osd pool application enable dpool rbd
a.通过允许高层管理工具轻松确定池的用例,从而简化其行为。例如,新的Ceph仪表板(即将发布的博客)目前使用一组启发式方法来猜测是否将池用于RBD工作负载。池标签避免了笨拙且容易出错的过程。b.防止应用程序使用未正确标记以供其使用的池。例如,rbd CLI可以警告或阻止在带有RGW标签的池中创建映像。
6、结束最终部署完成,效果图:
部署脚本:deploy_luminous.sh
参考链接:https://www.cnblogs.com/powerrailgun/p/12133107.html https://www.cnblogs.com/linuxk/p/9419423.htmlhttps://www.cnblogs.com/hukey/p/11975109.html