因为总结的报错有点多,就写一起了,以便于大家可以直接复制,然后用能查找关键字的工具直接查找。但是这样看起来可能会很乱

1.yum仓库,创建ceph.repo
# vim /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-hammer/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

问题1:
# yum makecache   的时候报错
yum源的问题 改成baseurl=http://download.ceph.com/rpm-hammer/el7/noarch/
问题2:
# yum install ceph-deploy -y
警告:/var/cache/yum/x86_64/7/ceph-noarch/packages/ceph-deploy-2.0.1-0.noarch.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 460f3994: NOKEY
ceph-deploy-2.0.1-0.noarch.rpm 的公钥尚未安装
ceph-deploy-2.0.1-0.noarch.rpm                                                       | 286 kB  00:01:06     
从 https://download.ceph.com/keys/release.asc 检索密钥
yum源的问题 改成gpgkey=http://download.ceph.com/keys/release.asc
=================================================================
2.创建集群
问题1:
$ ceph-deploy new node1
Traceback (most recent call last):
  File "/bin/ceph-deploy", line 18, in <module>
    from ceph_deploy.cli import main
  File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module>
    import pkg_resources
ImportError: No module named pkg_resources


重新安装python的distribution:
下载 distribution 
distribution下载地址:
https://files.pythonhosted.org/packages/5f/ad/1fde06877a8d7d5c9b60eff7de2d452f639916ae1d48f0b8f97bf97e570a/distribute-0.7.3.zip
你可以把该链接直接复制到网页上下载然后上传到虚拟机上,也可以用wget命令直接下
cd distribution-0.7.3/
sudo python setup.py install     
========================================================
3.获取秘钥失败
#yum -y  install ceph ceph-radosgw   
问题1:
警告:/var/cache/yum/x86_64/7/Ceph/packages/ceph-mon-12.2.13-0.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 460f3994: NOKEY
从 https://download.ceph.com/keys/release.asc 检索密钥
获取 GPG 密钥失败:[Errno 14] curl#60 - "Peer's Certificate has expired."
同样 改为http://download.ceph.com/keys/release.asc

问题2:
warning: /var/cache/yum/x86_64/7/epel/packages/userspace-rcu-0.7.16-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 检索密钥
获取 GPG 密钥失败:[Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7"

# vim /etc/yum.repos.d/epel.repo 
#安装的时候会检查key我们可以在repo文件中关闭即可
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=0      #默认是1改为0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
把gpgcheck=1  改为gpgcheck=0 即可,意思是在安装的时候不进行源的检查
========================================================
4.
[ERROR ] admin_socket: exception getting command descriptions: [Errno 2] No such file or dir

cat /etc/ceph/ceph.conf
添加
public_network= 192.168.13.0/24   #自己网段
然后
ceph-deploy --overwrite-conf config push admin node1 node2 node3

5. ceph-deploy osd create --data /dev/vdc node3
[node1][WARNIN] ceph-volume lvm create: error: GPT headers found, they must be removed on: /dev/vdb
[node1][ERROR ] RuntimeError: command returned non-zero exit status: 2
[ceph_deploy.osd][ERROR ] Failed to execute command: /usr/sbin/ceph-volume --cluster ceph lvm create --bluestore --data /dev/vdb
[ceph_deploy][ERROR ] GenericError: Failed to create 1 OSDs


千万不要分区,然后重新加磁盘,重新做
文档说加上参数也可以但是
ceph-deploy osd create --data /dev/vdc  --fs-type xfs node3 会报错

[cephu@node1 ~]$ sudo ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
[mgr.node1]
        key = AQD8HPdcmntqJRAAlZ3Aeialqq0nVcdcg+axqQ==



6.  rdb map出错rbd sysfs write failed
创建了一个rbd镜像
    $ rbd create --size 4096 docker_test
然后,在Ceph client端将该rbd镜像映射为本地设备时出错。
    $ rbd map docker_test --name client.admin

    rbd: sysfs write failed
    RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable".
    In some cases useful info is found in syslog - try "dmesg | tail" or so.

原因:
     rbd镜像的一些特性,OS kernel并不支持,所以映射失败。我们查看下该镜像支持了哪些特性。
    $ rbd info docker_test

    rbd image 'docker_test':
        size 4096 MB in 1024 objects
        order 22 (4096 kB objects)
        block_name_prefix: rbd_data.43702ae8944a
        format: 2
        features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
        flags: 
    可以看到特性feature一栏,由于我OS的kernel只支持layering,其他都不支持,所以需要把部分不支持的特性disable掉。

方法一: 直接diable这个rbd镜像的不支持的特性:
    $ rbd feature disable docker_test exclusive-lock object-map fast-diff deep-flatten

方法二: 创建rbd镜像时就指明需要的特性,如:
    $ rbd create --size 4096 docker_test --image-feature layering
    
方法三: 如果还想一劳永逸
那么就在执行创建rbd镜像命令的服务器中,
修改Ceph配置文件/etc/ceph/ceph.conf,
在global section下,增加rbd_default_features = 1
再创建rdb镜像。
    $ rbd create --size 4096 docker_test

通过上述三种方法后,查看rbd镜像的信息。
    $ rbd info docker_test

    rbd image 'docker_test':
        size 4096 MB in 1024 objects
        order 22 (4096 kB objects)
        block_name_prefix: rbd_data.43a22ae8944a
        format: 2
        features: layering
        flags:

再次尝试映射rdb镜像到本地块设备,成功!
    $ rbd map docker_test --name client.admin  
    /dev/rbd0
======================================
7. [cephu@client ~]$ sudo  rbd map docker_test --name client.admin


rbd: sysfs write failed
In some cases useful info is found in syslog - try "dmesg | tail".
rbd: map failed: (110) Connection timed out

解决方案:
[cephu@client ~]$ sudo ceph osd crush tunables hammer
adjusted tunables profile to hammer

然后重新 
[cephu@client ~]$ sudo  rbd map docker_test --name client.admin
/dev/rbd0

成功

=====================================

8.     $sudo yum install ceph ceph-radosgw  -y    
问题1:
如果由于网速太慢,可以如下操作
由于网速慢的问题,安装并不会成功。之所以仍进行这一步,只因执行过了该命令就会自动创建相应文件夹。在进入各个节点手动安装的时候,才能把下载的不成功的包放到正确的目录下,这样,手动安装使用yum命令才会成功。之后进入每个节点执行安装。
以node1为例:
• 先从https://download.ceph.com/rpm-luminous/el7/x86_64/ 下载所有最有最新版本的rpm包到本地

• 之后使用secure shell client上传到node1的/var/cache/yum/x86_64/7/Ceph/packages/文件夹下

• 然后安装ceph:
$ ssh node1
$ sudo yum install –y epel-release ceph ceph-radosgw
虽然所有安装包都在相应的目录中了,但仍可能不成功,这个时候只需要再次重新把安装包放到对应目录后再执行该命令就成功了,原因不明。
======================================
问题2:
如果开启防火墙需要做如下操作
设置防火墙(由于node1既是mon节点又是osd节点,所以要添加下面两个规则。其他节点只开启ceph服务即可):
$ sudo firewall-cmd --zone=public --add-service=ceph-mon --permanent  //该规则仅在mon节点执行,如果不添加就不能在其他osd上进行一些查询操作
$ sudo firewall-cmd --zone=public --add-service=ceph --permanent
$ sudo firewall-cmd --reload
注意:该防火墙规则只能在安装成功ceph后才能添加,否则就不识别,添加失败。最后退出node1节点,返回admin节点
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
问题3:
激活 OSD 的时候需要先把OSD所在服务器的目录所有者和所属组手动改成ceph,不然无法激活
[root@vm42 yum.repos.d]# chown ceph:ceph /var/local/osd2

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
问题4:
ceph:health_warn clock skew detected on mon的解决办法
造成集群状态health_warn:clock skew detected on mon节点的原因有两个,一个是mon节点上ntp服务器未启动,另一个是ceph设置的mon的时间偏差阈值比较小。
 排查时也应遵循先第一个原因,后第二个原因的方式。

第一步:确认ntp服务是否正常工作

第二步:修改ceph配置中的时间偏差阈值
1. 在admin部署节点修改配置参数:
# vi ~/my-cluster/ceph.conf在global字段下添加:
mon clock drift allowed = 2
mon clock drift warn backoff = 30    

2. 向需要同步的mon节点推送配置文件:
# ceph-deploy --overwrite-conf config push node{1..3}这里是向node1 node2 node3推送,也可以后跟其它不联系节点
 3. 重启mon服务(centos7环境下)
# systemctl restart ceph-mon.target4.验证:
# ceph -s显示health_ok说明问题解决

问题5:
有些场景下,对osd进行一些操作,但是并不想要集群进行数据恢复,此时,可以通过设置noout标志来实现:
[root@node3 ~]# ceph osd set noout
noout is set
[root@node3 ~]# ceph -s
  cluster:
    id:     b8b4aa68-d825-43e9-a60a-781c92fec20e
    health: HEALTH_WARN
            noout flag(s) set
 
  services:
    mon: 1 daemons, quorum node1
    mgr: node1(active)
    osd: 6 osds: 6 up, 6 in
         flags noout
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 bytes
    usage:   6339 MB used, 55100 MB / 61440 MB avail
    pgs:     去除noout标志命令:
[root@node3 ~]# ceph osd unset noout
noout is unset
[root@node3 ~]# ceph -s
  cluster:
    id:     b8b4aa68-d825-43e9-a60a-781c92fec20e
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum node1
    mgr: node1(active)
    osd: 6 osds: 6 up, 6 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 bytes
    usage:   6339 MB used, 55100 MB / 61440 MB avail
    pgs:     
 

==================================================

9. Error: Package: 2:librbd1-12.2.12-0.el7.x86_64 (Ceph)            
   Requires: liblttng-ust.so.0()(64bit

方法1
sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ &&sudo  yum install --nogpgcheck -y epel-release &&sudo  rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 &&sudo  rm -f /etc/yum.repos.d/dl.fedoraproject.org*

方法二:
yum install epel-release   -y
 
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm
 
rpm -Uvh epel-release*rpm
 
yum install lttng-ust -y