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存储系统成功创建.