一、载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’未定义的引用
ceph luminous版本编译及部署_第1张图片

解决:
yum install python-sphinx
有博客说可以通过升级cmake的版本可以解决,但是升级后问题依然存在。
ref:https://tracker.ceph.com/issues/19294
2. nss相关
ceph luminous版本编译及部署_第2张图片
解决:
yum install nss-devel
3.LTTngUST相关
ceph luminous版本编译及部署_第3张图片

解决:
yum install lttng-ust-devel
4.babeltrace相关
ceph luminous版本编译及部署_第4张图片
解决:
yum install babeltrace
yum install libbabeltrace-devel

5.libibverbs相关
ceph luminous版本编译及部署_第5张图片
解决:
yum install libibverbs

6.liblua相关
该问题也定位很久。
ceph luminous版本编译及部署_第6张图片
解决:
忘记怎么解决了,
似乎是用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问题

ceph luminous版本编译及部署_第7张图片

解决:
yum install yum
install python3-devel python3-devel

tips:先卸载rpm -e python-devel,再安装python3-devel,再安装python-devel
8.Cython问题
ceph luminous版本编译及部署_第8张图片

解决:

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问题:
ceph luminous版本编译及部署_第9张图片
解决:
yum install gperftools gperftools-devel (69个依赖包)
yum install gperf
10.sclo问题
ceph luminous版本编译及部署
解决:
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问题
ceph luminous版本编译及部署
解决:
yum install python-prettytable
ceph luminous版本编译及部署

六、开始部署

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(该问题处理较长时间)
ceph luminous版本编译及部署_第10张图片
设置setenforce 0 后
ceph luminous版本编译及部署_第11张图片

主要是源码安装后, /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用户问题
ceph luminous版本编译及部署_第12张图片
解决:

添加ceph用户,并修改权限
adduser -d /home/easystack/ -m ceph
 vim /etc/passwd //改为0

ceph luminous版本编译及部署

问题三:
这个是因为/etc/hosts 的名字和hostname不一致导致(或者冲突导致)。
ceph luminous版本编译及部署_第13张图片

修改正确后:
ceph luminous版本编译及部署_第14张图片

执行ceph-deploy admin ceph1 ceph2 ceph3 把key推送到相应的位置(主要是ceph.client.admin.keyring要放到 /etc/ceph/ 下)
至此,mon初始化成功

ceph luminous版本编译及部署_第15张图片

4、mgr部署
no active mgr 这个 manager 是在 J 版本以后加入的,此时需要开启这个功能模块:
ceph luminous版本编译及部署_第16张图片
解决:
手动创建mgr目录即可:mkdir -p /var/lib/ceph/mgr

重新部署:

ceph luminous版本编译及部署_第17张图片

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为例):
ceph luminous版本编译及部署_第18张图片

部署成功后,出现“ HEALTH_WARN application not enabled on 1 pool(s)”,refs:https://ceph.io/community/new-luminous-pool-tags/

ceph luminous版本编译及部署_第19张图片

大概是给创建的存储池做标记使用:
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、结束
最终部署完成,效果图:

ceph luminous版本编译及部署_第20张图片

部署脚本:
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