ceph是在linux kernel 2.6.34后加入内核的,虽然目前还没有大规模的进入生产环境 但是它进入linux的内核 我想ceph会非常有前途的 ,共享出来供大家一起学习探讨

试验环境及拓扑

HP dell360 G5

contos 5.3 x86_64

172.19.100.200  mon01

172.19.100.202  ceph02

172.19.100.201  ceph01

172.19.100.211  osd-01

172.19.100.212  osd-02

172.19.100.213  osd-03

拓扑:

1.了解ceph 

http://www.ibm.com/developerworks/cn/linux/l-ceph/ 这篇文章写的很好 作者比较系统的介绍了ceph的目标 架构 和组件等 图文并茂非常详细。

2.升级linux内核 

我使用的是linux 2.6.35 

先到 www.kernel.org 下载一个内核源码文件

解压内核文件

#tar xvfj linux.2.6.35.tar.bz2

拷贝到相应的目录

 

 

 

mon01上创建文件系统 mkcephfs会在配置文件中所定义的服务器进行配置

#mkcephfs -c /usr/local/etc/ceph/ceph.conf --allhosts -v

启动所有的服务器

#/etc/init.d/ceph -a start

4. 配置客户端 客户端内核同样需要内核支持ceph文件系统

#modprobe -l|grep ceph

/lib/modules/2.6.34.2/kernel/fs/ceph/ceph.ko

#modprobe  ceph 

#mkdir /mnt/ceph

#mount -t ceph 172.19.100.200:/ /mnt/ceph   #这里的ip地址是你mon01的地址

5.  mon几个简单的监控命令

#ceph mon stat -c /usr/local/etc/ceph/ceph.conf   查看mon server 状态

#ceph mds stat -c /usr/local/etc/ceph/ceph.conf    查看mds server 状态

#ceph ods stat -c /usr/local/etc/ceph/ceph.conf    查看ods server 状态

ceph osd out n -c /usr/local/etc/ceph/ceph.conf    osd server n 移除集群

ceph osd out n -c /usr/local/etc/ceph/ceph.conf    osd server n 加入集群

 

#mv linux2.6.35 /usr/src/

定制内核

#cd /usr/src/linux-2..35

#make meunconfig

因为只是测试ceph所有只要修改以下内容

 File systems  --->

                   [*] Network File Systems  --->

 <M>   Ceph distributed file system (EXPERIMENTAL)

 [*]     Include file:line in ceph debug output

修改.config文件 # CONFIG_SYSFS_DEPRECATED_V2 is not set

改为 CONFIG_SYSFS_DEPRECATED_V2=y

开始编译内核和相应的模块

#make bzImage

#make modules && make modules_install

#make install

会出现些错误不用去理会

sh /usr/src/linux-2.6.35/arch/x86/boot/install.sh 2.6.35 arch/x86/boot/bzImage \

                System.map "/boot"

WARNING: No module megasr found for kernel 2.6.35, continuing anyway

WARNING: No module megasr found for kernel 2.6.35, continuing anyway

WARNING: No module megasr found for kernel 2.6.35, continuing anyway

WARNING: No module dm-mem-cache found for kernel 2.6.35, continuing anyway

WARNING: No module dm-message found for kernel 2.6.35, continuing anyway

WARNING: No module dm-raid45 found for kernel 2.6.35, continuing anyway

编译完内核后要做一个小小的改动 /boot/initrd.2.6.35.img

#cp /boot/initrd.2.6.35.img /tmp/

#mkdir /tmp/initrd

#cd /tmp/initrd

#zcat ../initrd-2.6.35.img |cpio -i 

#vi init

 删除以下两行 (重复了)

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

重新打包

#find .|cpio -c -o > ../initrdnew

#cd ..

#gzip -9 < initrdnew > initrd-2.6.35.img

替换原有的initrd-2.6.35.img

mon01上创建文件系统 mkcephfs会在配置文件中所定义的服务器进行配置

#mkcephfs -c /usr/local/etc/ceph/ceph.conf --allhosts -v

启动所有的服务器

#/etc/init.d/ceph -a start

4. 配置客户端 客户端内核同样需要内核支持ceph文件系统

#modprobe -l|grep ceph

/lib/modules/2.6.34.2/kernel/fs/ceph/ceph.ko

#modprobe  ceph 

#mkdir /mnt/ceph

#mount -t ceph 172.19.100.200:/ /mnt/ceph   #这里的ip地址是你mon01的地址

5.  mon几个简单的监控命令

#ceph mon stat -c /usr/local/etc/ceph/ceph.conf   查看mon server 状态

#ceph mds stat -c /usr/local/etc/ceph/ceph.conf    查看mds server 状态

#ceph ods stat -c /usr/local/etc/ceph/ceph.conf    查看ods server 状态

ceph osd out n -c /usr/local/etc/ceph/ceph.conf    osd server n 移除集群

ceph osd out n -c /usr/local/etc/ceph/ceph.conf    osd server n 加入集群

#cp /tmp/initrd-2.6.35.img /boot/

cp: overwrite `/boot/initrd-2.6.35.img'? y

修改/boot/grub/menu.lst default=1 改成default=0 使用新内核启动

重新启动系统

3 ceph 安装

先升级以下包

#yum install rpm-build fuse-devel libtool libtool-ltdl-devel boost-devel libedit-devel git openssl-devel gcc-c++ btrfs-progs

安装2RPM包 下载地址

 libedit-3.0-2.20090905cvs.el5.centos.x86_64.rpm

http://dev.centos.org/centos/5/testing/x86_64/RPMS/libedit-3.0-2.20090905cvs.el5.centos.x86_64.rpm

libedit-devel-3.0-2.20090905cvs.el5.centos.x86_64.rpm

http://dev.centos.org/centos/5/testing/x86_64/RPMS/libedit-devel-3.0-2.20090905cvs.el5.centos.x86_64.rpm

注释:如果用32bit操作系统的使用

http://dev.centos.org/centos/5/testing/i386/RPMS/libedit-3.0-2.20090905cvs.el5.centos.i386.rpm

http://dev.centos.org/centos/5/testing/i386/RPMS/libedit-devel-3.0-2.20090905cvs.el5.centos.i386.rpm

#rpm -ivh libedit-3.0-2.20090905cvs.el5.centos.x86_64.rpm

#rpm -ivh libedit-devel-3.0-2.20090905cvs.el5.centos.x86_64.rpm

检查ceph是否在内核模块中

#modprobe -l ceph

/lib/modules/2.6.34.2/kernel/fs/ceph/ceph.ko

下载最新的ceph并安装

#wget http://ceph.newdream.net/download/ceph-0.21.tar.gz

#tar xvfz ceph-0.21.tar.gz

#cd ceph-0.21

#./configure 

#make && make install

ceph的配置文件默认在/usr/local/etc/ceph/下 有两个例子文件,自己编写一个ceph.conf

内容如下

; global 

[global] 

        ; enable secure authentication 

        ; auth supported = cephx 

; monitors 

[mon] 

        mon data = /data/mon$id 

                debug ms = 1 

[mon0] 

        host = mon01 

        mon addr = 172.19.100.201:6789 

; mds 

[mds] 

                keyring = /data/keyring.$name 

[mds.alpha] 

        host = ceph01 

[mds.beta] 

        host = ceph02 

; osd 

[osd] 

        sudo = true 

        osd data = /data/osd$id 

[osd0] 

        host = osd-01 

        osd data = /data/osd

osd journal = /data/osd$id/journal 

        osd journal size = 100

[osd1] 

        host = osd-02

        osd data = /data/osd

        osd journal = /data/osd$id/journal 

        osd journal size = 100

[osd2] 

        host = osd-03

        osd data = /data/osd

        osd journal = /data/osd$id/journal 

        osd journal size = 100

修改搜有主机的/etc/hosts

增加相应的 地址映射

#/etc/hosts

172.19.100.200  mon01

172.19.100.202  ceph02

172.19.100.201  ceph01

172.19.100.211  osd-01

172.19.100.212  osd-02

172.19.100.213  osd-03

在添加所有的机器对mon01的信任,不然后面敲密码能把手敲木。

#ssh-keygen -d

#scp /root/.ssh/id_dsa.pub ceph01:/root/.ssh/authorized_keys

#scp /root/.ssh/id_dsa.pub ceph02:/root/.ssh/authorized_keys

#scp /root/.ssh/id_dsa.pub osd-01:/root/.ssh/authorized_keys

#scp /root/.ssh/id_dsa.pub osd-02:/root/.ssh/authorized_keys

#scp /root/.ssh/id_dsa.pub osd-03:/root/.ssh/authorized_keys

 

添加ceph 启动服务

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

#chmod 755 /etc/init.d/ceph

#chkconfig --add ceph