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
拓扑:
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-18430.png
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 --->
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
|
安装2个RPM包 下载地址
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
|
附件:http://down.运维网.com/data/2356512
|