ceph 源码安装(mkcephfs方式)

ceph有两种常见的部署方法

Ceph官网推荐用 Ceph-deploy 进行Ceph集群的部署.

  • Ceph-deploy的工作方式是: 需要有一个admin-node安装Ceph-deploy, 该admin-node需要能够密码free地ssh访问Ceph node.通过在admin-node上执行Ceph-deploy的简单命令一步一步增量式地构建Ceph存储系统. 这种方式部署简单, 在各个Ceph node上安装的是Ceph的binary包(从包管理系统获得)

    如果需要改源码的话, 那么不推荐这种部署方式:因为确实可以先在Ceph的各个node上先源码编译安装好, 然后从Admin-node上用Ceph-deploy构建Ceph存储系统, 但是我在实际中尝试这么做时遇到了很多很多的问题, 虽然最后也成功部署, 但远不如第2种方法省事.

  • 源码编译安装, 然后用mkcephfs脚本来初始化Ceph存储系统. 主要就是 下载源码包 -> 编译安装 -> 编写配置文件,设置分区 -> 执行mkcephfs -> 启动ceph服务.本文重点讲解第二种方法.

  redhat-7.1 (64位), 4 vCpu, 2G内存, 挂载了/dev/sdb, /dev/sda 两块20G的Volume. Ceph环境是: 1个mon, 2个osd, 每个osd的data 和 journal分别写到不同分区

源码安装及部署过程

  代码下载,编译:

1  ./autogen.sh                                                                                                          
2  ./configure     #添加参数                                                                     
3  make   -j5                                                                                                 
4  make install   
5 ldconfig       #加载动态库,否则出现librados.so不存在的错误

由于Ceph make的时候非常慢, 在make的时候可以用 make -j{CPU Core数目}来加快编译

4.把ceph作为系统服务

    cp ceph/src/init-ceph /etc/init.d/ceph

5.创建Ceph配置文件 ceph.conf:

  Ceph配置文件主要包含以下几个部分:

    [global]里是全局设置, [mon]里是monitor的一般性设置, [mon.a]里是monitor a的特殊设置, [osd]里是osd的一般设置, [osd.0]是osd.0的特殊设置, 后面以此类推.

 1 [global]
 2 osd pool default size = 2
 3 osd pool default min size = 1
 4 ms_crc_data=false
 5 ms_crs_header=false
 6 admin socket = /var/run/ceph/rbd-$pid.asok
 7 osd crush update on start = 0
 8 public network = 192.168.83.0/8
 9 
10 [client]
11 rbd cache = false
12 
13 [mon]
14 mon data = /var/lib/ceph/mon/ceph-$name
15 
16 [mon.node1]
17         host = node1
18         mon addr = 192.168.83.101:6789
19 
20 [osd]
21         osd mkfs type = xfs
22         osd data = /var/lib/ceph/osd/ceph-$name
23 
24 [osd.0]
25         host = node1
26         osd journal = /dev/sdb1
27         devs = /dev/sdb2
28 
29 [osd.1]
30         host = node2
31         osd journal = /dev/sdb1
32         devs = /dev/sdb2
33 [mds]
34         host = node1
35 [mds.node1]     

  注意: 上面提到的/var/lib/ceph相关的路径都是需要手动创建的

  mkdir -pv /var/lib/ceph/osd/ceph-0

  mkdir -pv /var/lib/ceph/mon/ceph-node1

6.磁盘分区

  以/dev/sdb为例, 小容量的将来存OSD的journal, 大容量的将来存OSD的Data

    parted -a optimal -s /dev/sdb mktable gpt && parted -a optimal -s /dev/sdb mkpart ceph 0% 5GB  parted -a optimal -s /dev/sdb mkpart ceph 5GB 100%

7.mkcephfs

  mkcephfs是稍微有点老的工具, 在ceph-0.80及之前的版本中存在与src/目录下:

   1、mkdir /root/mkcephfs 

   2、[root@node1 ~]# ls  /root/mkcephfs/

    -rw-r--r--. 1 root root 5940 May 12 2014 ceph_common.sh
    -rwxr-xr-x. 1 root root 13851 May 31 05:01 mkcephfs

    3、ln -s /root/mkcephfs/mkcephfs /usr/bin/mkcephfs  && chmod +x /usr/bin/mkcephfs 

   4、mkcephfs -a -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.keyring --mkfs

  成功的话就完成了初始化工作

9.启动ceph服务

    /etc/init.d/ceph -c /etc/ceph/ceph.conf -a start

  如果报错:

      /etc/init.d/ceph: line 15: /lib/lsb/init-functions: No such file or directory

  就在mon结点上

      yum install redhat-lsb

10.ceph服务启动完成后,

    ceph -s

   如果显示HEALTH_OK, 则表示ceph存储系统成功创建.

 

posted on 2016-06-08 17:54  阳台  阅读(434)  评论(0编辑  收藏  举报

导航