HOWTO Install Ceph On FC12, FC上安装Ceph分布式文件系统

Ceph是一个比较新的分布式文件系统,由USSC的存储小组完成,是一个基于OSD(对象存储设备)的网络文件系统;相关文章发表在OSDI'06,MSST03,04等上.最近又Ceph文件系统的客户端部分已经进入了Linux Kernel 2.6.34里.
最近花了些时间用VMWare虚拟机搭了一个Ceph.现把搭建的过程,以及其间遇到并解决的问题写在这里.

1.设计一个Ceph集群

Ceph主要分为4个部分,客户端/monitor/mds/osd
客户端向外export出一个POSIX文件系统接口,共应用程序调用,并连接monitor/mds/osd,进行元数据及数据交互;最原始的客户端使用Fuse来实现的,现在写到内核里面了,需要编译一个ceph.ko内核模块才能使用.
monitor:管理整个集群,对客户端export出一个网络文件系统,客户端可以通过mount –t ceph monitor_ip:/ mount_point,来挂在ceph文件系统.根据官方的说法,3个monitor可以保证集群的可靠性.对应一个daemon程序,cmon
mds: 元数据服务器,Ceph里可以有多个MDS,组成元数据服务器集群,就会涉及到Ceph中动态目录分割,来进行负载均衡.对应的daemon: cmds
osd: osd模拟器,将本地文件系统封装一层对外提供对象存储的接口.这里本地的文件系统可以是ext2,ext3,但ceph认为这些文件系统并不能适应osd特殊的访问模式;它们之前自己实现了ebofs;而现在ceph转用btrfs(google btrfs吧). osd端对应的daemon: cosd.

ceph支持成百上千甚至更多的节点,那种情况下,4个模块最好分布在不同的机器上;也可以都全部部署在同一台机器上.
在我的测试环境中,使用4台虚拟机来搭建,1个客户端,monitor/mds在一个节点上;另外两个节点各作一个osd.
具体的配置如下:

HOSTNAME   IP_Addr   ROLE  
ceph_client   192.168.233.180   Ceph Client  
ceph_mds   192.168.233.182   Monitor & MDS  
ceph_osd   192.168.233.181   OSD  
ceph_osd1   192.168.233.183   OSD  

Ceph还要求对四个节点做些操作
1.修改各自的hostname,并能够通过hostname来互相访问(见附录1)
2.能够ssh互相访问而不输入密码(具体的方法见附录2);

2.在各个节点上安装Ceph 2.1 客户端

客户端主要需要ceph.ko这个模块;方式有两种:一种In-tree,一种out-tree;前者在下载最新的linux内核,修改编译选项,编译;后者下载ceph的客户端源码,在内核外编译.
第一种方法:

$git clone git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
$cd ceph-client
$make menuconfig
#搜索ceph,可以发现有两个关于ceph的选项,选上就好.编译内核的方法这里就不在赘述,直接上命令了
$make && make modules && make modules_install && make install && reboot
 

第二种方法:

#下载源代码
$ git clone git://ceph.newdream.net/git/ceph-client-standalone.git
$ git branch master-backport origin/master-backport
$ git checkout master-backport
#编译
$ make or make KERNELDIR=/usr/src/… #前者表示用于当前在用内核,后者其它路径
# 编译成功后会产生ceph.ko
$ make install
$ modprobe ceph or inmod ceph.ko
 

2.2 其它节点安装ceph

其它节点的代码都是用户态的,在ceph官网上下载较新的代码(目前最新的版本是0.20.1).常规的办法编译即可.

3.配置ceph集群

除客户端外,其它的节点都需一个配置文件,并需要是完全一样的.

3.1 ceph.config

这个文件位于/etc/ceph下面,如果在./configure时没有修改prefix的话,应该是在/usr/local/etc/ceph下.

[root@ceph_mds ceph]# cat ceph.conf
;
; Sample ceph ceph.conf file.
;
; This file defines cluster membership, the various locations
; that Ceph stores data, and any other runtime options.

; If a 'host' is defined for a daemon, the start/stop script will
; verify that it matches the hostname (or else ignore it). If it is
; not defined, it is assumed that the daemon is intended to start on
; the current host (e.g., in a setup with a startup.conf on each
; node).

; global
[global]
; enable secure authentication
; auth supported = cephx

; monitors
; You need at least one. You need at least three if you want to
; tolerate any node failures. Always create an odd number.
[mon]
mon data = /data/mon$id

; some minimal logging (just message traffic) to aid debugging
debug ms = 1

[mon0]
host = ceph_mds
mon addr = 192.168.233.182:6789

; mds
; You need at least one. Define two to get a standby.
[mds]
; where the mds keeps it's secret encryption keys
keyring = /data/keyring.$name

[mds.alpha]
host = ceph_mds

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/8c5b794a1892eb2c1fdc9fa6338067ff.html