一、载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 gperf
Tips:这里安装python3-devel的时候会冲突,需要先卸载python-devel,等待安装python3-devel后,再安装python-devel即可;
rpm -e python-devel
yum 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/19294
2. nss相关
解决:
yum install nss-devel
3.LTTngUST相关
解决:
yum install lttng-ust-devel
4.babeltrace相关
解决:
yum install babeltrace
yum 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 lua
lua-5.1.4-15.el7.x86_64
lua-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-devel
8.Cython问题
解决:
yum install python-Cython,其实安装了:
sclo-cassandra3-runtime-1.0-17.el7.x86_64
sclo-cassandra3-python2-Cython-0.27.1-2.el7.x86_64
yum 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 gperf
10.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.com
31 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/24
ceph-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-luminous
cp systemd/ceph*.target /usr/lib/systemd/system/
cp systemd/ceph*.service /usr/lib/systemd/system/
cp systemd/ceph /usr/lib/systemd/system/
添加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 ', where 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.html
https://www.cnblogs.com/hukey/p/11975109.html