centos 6.2 64位的内核版本是2.6.32-220.el6.i686,ceph的客户端已经在2.6.34以后的版本集成了,很明显centos6.2中没有client客户端,由于我已经在UBUNTU 11.10 64位版本中安装了ceph0.47.2,并且UBUNTU 11.10版本的内核版本是3.0.0-12-generic所以自然包含ceph 的client客户端,为了简便所以我打算在按照如下的配置做实验。
下面的例子中mon代表监控节点,osd代表对象存储设备,mds代表元数据服务器,client代表客户端。
在mon,osd,mds上分别要装有ceph,并且按照下面的例子配置好,client端要有ceph的客户端(如上面分析,如果内核版本足够高的话就内置了)
| 位置 | IP | 身份 |
UBUNTU 11.10 | 本地虚拟机 | 192.168.10.3 | mon及client |
CENTOS 6.2 | 真实服务器 | 192.168.5.101 | osd |
CENTOS6.2 | 真实服务器 | 192.168.5.100 | mds |
通过ssh添加对于mon节点的信任。
#ssh-keygen
#cd ~/.ssh; cat id_dsa.pub >>authorized_keys
#复制.ssh 文件夹到其他机器用户home目录上
首先./autogen.sh
然后执行./configure
会提示缺少一些包
configure: error: libuuid not found
configure: error: no FUSE found (use --without-fuse to disable)
configure: error: No usable version of libedit found.
configure: error: libaio not found
比如libuuid,fuse,libaio,libedit,分别按照如下命令安装。
yum install libuuid-devel
yum install fuse-devel
yum install libedit-devel
yum install libaio-devel
然后执行./configure --without-tcmalloc --without-libatomic-ops
configure成功以后生成了makefile文件
执行make 这个过程很慢请耐心等待。
这时候会出现一个问题error: ‘INT_MAX’ was not declared in this scope
不知道为什么会出现这个问题,提醒很明显是没有声明,所以直接在它提示的.cc文件中加入如下的定义
#include<limits.h>
不知道这样做对不对,但确实能够编译通过了。
后来又出现了个问题叫做error: expat.h: No such file or directory
error: ‘XML_Parser’ does not name a type
这时候缺少包expat-devel 执行yum install expat-devel
OK,这时候就能够编译通过了,不容易啊。
然后执行make install.
没有问题,这时候就行了,可以通过配置ceph.conf文件组成ceph小集群进行测试了。
具体ceph.conf的配置参考http://ceph.com/docs/master/config-cluster/ceph-conf/
注意要建立一些文件参考http://ceph.com/docs/master/config-cluster/mkcephfs/
对于我这个配置来说
需要在UBUNTU 11.10 192.168.10.3
mkdir /home/xieke/mon.0
在192.168.5.101上
mkdir /home/xieke/osd.0
在192.168.5.100上
mkdir /home/xieke/mds.0
由于这些目录不会被自己创建,所以要自己创建。
另外将ceph.conf放到mon节点,osd节点和mds节点下的/etc/ceph/ceph.conf后,还要将ceph文件夹复制到/usr/local/etc/ceph中,每次更新/etc/ceph/ceph.conf后都要同时更新/usr/local/etc/ceph/ceph.conf文件
每次更新完以后,都要在mon节点上执行mkcephfs -c /etc/ceph/ceph.conf -a操作
在mon节点上执行service ceph -a start
可以通过执行ceph -s 查看各个部件的运行状态。