通过源码方式在 CentOS 7 上安装 Ceph firefly

来源:互联网 发布:他趣是什么软件 编辑:程序博客网 时间:2024/05/22 13:44

  通常开源软件都会提供两种安装方式:tar包安装和RPM包安装,具体到Ceph,还提供了ceph-deploy的交互式安装方式,大大简化了Ceph的安装复杂度。在生产环境下,当然是建议使用ceph-deploy。然而对于软件开发人员来说,掌握一款开源软件最好的方式就是直接调试代码,下文告诉你如何在CentOS 7 安装Ceph调试环境。

安装前准备

下载tar包

首先从ceph官方下载源码包,我这里下载的是firefly 0.80.7

#> wget http://ceph.com/download/ceph-0.80.7.tar.gz

安装依赖

 #> yum install -y make automake autoconf boost-devel fuse-devel gcc-c++ libtool libuuid-devel libblkid-devel keyutils-libs-devel cryptopp-devel fcgi-devel libcurl-devel expat-devel gperftools-devel libedit-devel libatomic_ops-devel snappy-devel leveldb-devel libaio-devel xfsprogs-devel git libudev-devel libcrypto++-dev libcrypto++-utils

安装

Ceph的安装很简单,只要下面几步就好:

#> tar -zxvf ceph-0.80.7.tar.gz && cd ceph-0.80.7 #> ./autogen.sh      #> ./configure  --prefix=/usr/local CFLAGS=-g #> make -j8#> make install 

注意:
1. configure 命令后添加了CFLAGS=-g选项,这样用gdb或者cgdb调试的时候,才能找到符号
2. make 命令使用了多线程模式,以加快构建速度,通常线程个数设置为cpu核心数

配置Ceph

安装完Ceph软件包后,下面就是配置Ceph了,首先将sample.ceph.conf和sample.fetch.conf文件拷贝到/etc/ceph/目录下,并分别重命名为ceph.conf和fetch.conf,命令如下:

#> mkdir -p /etc/ceph#> cp /ceph-0.80.7/src/sample.ceph.conf /etc/ceph/ceph.conf#> cp /ceph-0.80.7/src/sample.fetch.conf /etc/ceph/fetch.conf

编辑配置文件fetch.conf

修改后的fetch.conf 文件内容如下:

#> cat fetch.conf## from a locally accessible filecp /usr/local/etc/ceph/ceph.conf $conf

其中路径/usr/local是./configure 配置命令中指定的安装前缀

编辑配置文件ceph.conf

修改后的ceph.conf文件内容如下:

#> cat ceph.confglobal】 log file = /var/log/ceph/$cluster-$name.log##################################################################【mon】 mon data = /data/mon$id【mon.0】 host = ceph-test mon addr = 192.168.20.159:6789###################################################################【osd】 osd data = /data/osd$id     //osd的数据目录,需要先挂载 osd mkfs type = xfs        //使用xfs文件系统 osd mkfs options xfs = -f osd mount options xfs = rw, noatime osd journal  = /var/lib/ceph/osd/$name/journal【osd.0】 host = ceph-test devs = /dev/sdb1   //需要先格式化,并挂载到对应的 “osd data”目录【osd.1】 host = ceph-test devs = /dev/sdc1【osd.2】 host = ceph-test devs = /dev/sdd1

准备OSD及MON

#> mkcephfs -a -c /user/local/etc/ceph/ceph.conf --mkfs#> /usr/local/bin/ceph osd create //ceph.conf中配置了几个OSD,该命令就需要执行几次,本文中是3次

启动ceph集群

到这里一个简单的ceph调试集群就安装完成了,使用下面的命令启动集群:

#> /etc/init.d/cpeh -a start 

踩过的那些坑

Q: umount: /data/osd0 : not mounted
这是osd数据目录没有挂载导致,根据错误提示和ceph.conf配置挂载数据目录就好,如: mkfs.xfs -f /dev/sdb1 && mount -t xfs /dev/sdb1 /data/osd0

Q: usr/local/bin/ceph-osd:error while loading shared libraries: libtcmalloc.so.4: cannot open shared object file: No such file or directory
找不到tcmalloc库文件,可能是没有安装,也可能是路径不对;如果是第一种情况,安装就是;对于第二种情况,需要将tcmalloc库路径添加到ldconfig中,如下:

#> echo /usr/local/lib > /etc/ld.so.conf.d/libtcmalloc.conf#> ldconfig

Q: /etc/init.d/ceph : no such file

#> cp  ceph-0.80.7/src/init-ceph /etc/init.d/ceph

Q: /lib/lsb/init-functions : no such file or directory

#> yum install redhat-lsb

Q: ImportError: No module named rados

#> cp -rfdp /usr/local/lib/python2.7/site-packages/*    /usr/lib64/python2.7/

Q: Error ENOENT: osd.0 does not exist. create it before updating the crush map

同“umount: /data/osd0 : not mounted”

0 0