本文适用于具有一定ceph源码编译基础的人阅读,38rfd.com:本文主要从操作过程中遇到问题及解决角度出发;

一、安装必要的安装包
默认的centos7 版本对于ceph的源码编译没有对应的rpm包,需要额外下载。

yum install snappy-devel leveldb leveldb-devel gperftools-devel libatomic_ops-devel xfsprogs-devel yasm yasm-devel fcgi fcgi-devel Cython libblkid-devel libudev-devel expat-devel openldap-devel python-devel virtuoso-opensource* python-virtualenv openssl-devel cryptopp cryptopp-devel cryptopp-progs  fuse-devel libaio-devel boost boost-devel  gdisk Cython -y

以上为自己环境上需要的依赖包,可能还需要其他的,在编译过程中遇到问题自己可以再根据情况安装必要的rpm 包。

二、编译中问题

生成makefile文件:
./configure --prefix=/usr  --localstatedir=/var --sysconfdir=/etc --with-debug

make -j 24
make install

tips:
make
根据Makefile编译源代码,连接,生成目标文件,可执行文件。
make clean
清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件。
make install
将编译成功的可执行文件安装到系统目录中,一般为/usr/local/bin目录。

make distclean类似make clean,但同时也将configure生成的文件全部删除掉,包括Makefile。

a. 步骤“一、安装必要的安装包”中大部分的rpm 安装问题;
b. pip命令无法找到,安装pip

yum install python-pip

/bin/sh: /tmp/ceph-disk-virtualenv/bin/pip: 没有那个文件或目录
make[3]: *** [/tmp/ceph-disk-virtualenv] 错误 127

修改pip文件的头,由#!/usr/bin/python改为#!/usr/bin/python2.7

三、部署中问题

a. mon 初始化失败:

[ERROR ] admin_socket: exception getting command descriptions: [Errno 2] No such file or directory

解决:
case1:
修改ceph.conf配置文件(此IP段根据个人情况设定),添加public_network = 192.168.1.0/24
或者  ceph-deploy new 时候指定:
ceph-deploy new ceph1 ceph2 ceph3 --public-network=192.168.111.0/24 --cluster-network=192.168.111.0/24

case2:
添加ceph用户,并修改权限
adduser -d /home/ceph/ -m ceph
vim /etc/passwd //改为0
   ceph:x:0:0::/home/ceph/:/bin/bash


低版本的ceph-deploy不支持systemctl,更换为 ceph-deploy-1.5.38-0.noarch.rpm版本


gatherkeys 问题

[root@node1 ~]# systemctl  stop firewalld
[root@node1 ~]# systemctl   disable firewalld
这里cephx保留,不改为none,重新部署一遍即可解决gatherkeys 问题
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

或者:
ceph-deploy gatherkeys ceph 

初始化成功后:


主机名和/etc/hosts不符,或者冲突问题。

[ceph3][INFO  ] Running command: ceph --cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.ceph3.asok mon_status
[ceph_deploy.mon][WARNIN] mon.ceph3 monitor is not yet in quorum, tries left: 1

解决:是因为/etc/hosts 中主机名hostname和配置的不符合,或者是该文件中的ip不正确导致。

b. osd prepare 失败

需要安装sgdisk
yum install gdisk

c. osd activate 失败

ceph-deploy osd activate ceph:/dev/vdb1 ceph:/dev/vdc1 ceph:/dev/vdd1

缺少ceph-osd-prestart.sh文件:
解决:
[root@ceph ceph-10.2.5]# chmod +x src/ceph-osd-prestart.sh
[root@ceph ceph-10.2.5]# scp -rp src/ceph-osd-prestart.sh /usr/lib/ceph/