为了实验的简单性,本实验就是在一台虚拟的CentOS-5.5 i386上进行。
准备:
centos5.5 下yum库扩展工具链接:
ftp://ftp.univie.ac.at/systems/linux/dag/RedHat/el5/en/x86_64/dag/RPMS/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
ftp://ftp.univie.ac.at/systems/linux/dag/redhat/el5/en/i386/dag/RPMS/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
# yum install rpm-build fuse-devel libtool libtool-ltdl-devel boost-devel libedit-devel git
openssl-devel gcc-c++ btrfs-progs
步骤1、因为光盘上的内核版本不是最新,所有第一步就是编译内核,本实验选择的是2.6.37。
# make mrproper && # make menuconfig 认真查找将与btrfs和Ceph相关的选项多选择上,保存退出
# make bzImage && # make modules && # make modules_install && # make install
(注意其中会出现两个错误,请参照本博客的另外两篇博文)
步骤2、安装btrfs和创建btrfs文件系统
下载源码包:btrfs-progs-0.19.tar.gz ,注意步骤1中我们已经将btrfs编入内核,就无需源码包btrfs-0.xx。
tar -zxvf XXXX && make && make install
可以实验一下: fdisk /dev/sdb ...&& mkdir /mnt/btrfs && mkfs.btrfs /dev/sdb1
&& mount -t btrfs /dev/sdb1 /mnt/sdb1 && df 一下就能看到结果 ,记得umount掉。
步骤3、安装ceph
进入源码包ceph-0.24 , ./autogen && ./configure && make &&make install
在这个过程中会出现一些问题
(1)要求安装libcrypto++:下载源码包cryptopp561.zip,&& mkdir cryptopp561 &&cd &&unzip ../cryptopp561.zip && vim GNUmakefile ,CXXFLAGS += -fPIC && make
&& make libcryptopp.so && make install
(2)要求安装libedit:因为本系统是i386系列,
rpm -Uvh
rpm -Uvh
步骤4、
# mkcephfs -c /usr/local/etc/ceph/ceph.conf --allhosts --mkbtrfs -k /etc/ceph/keyring.bin
# mkcephfs -c /etc/ceph/ceph.conf --allhosts --mkbtrfs -k /etc/ceph/keyring.bin
这两条命令有点混。
# /etc/init.d/ceph -a start
步骤5、ceph挂载,出现了问题:
# mount -t ceph 10.65.1.86:/ /mnt/ceph
mount: wrong fs type, bad option, bad superblock on 10.65.1.87:/,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
查看错误:
[root@ceph86 src]# dmesg | tail
libceph: no secret set (for auth_x protocol)
libceph: error -22 on auth protocol 2 init
问题解决了
将ceph-0.24卸载掉后,重装最新的ceph-0.25.1即可。
附录1 修改hostname
这里主要涉及 /etc/sysconfig/network文件, hostname命令, /etc/hosts文件
附录2 无需密码ssh访问原理就是公私钥机制,我要向让别人访问我,那么就要把自己的公钥发给别人,这样他就可以凭该公钥来访问我了.
$ ssh-keygen –d#该命令会在~/.ssh下面生成几个文件,这里有用的是id_dsa.pub,为该节点(甲)的公钥,然后把里面的内容添加到对方节点(乙)
#~/.ssh/目录下的authorized_keys文件中,如果没有则创建一个,这样就从乙节点不需要密码ssh登陆到甲上了.
附录3 请记住一定要关闭 selinux
setenforce 0
vim /etc/sysconfig/selinux
不然在客户端对新加进来的设备操作,会出现错误:XXXXXPermission denied
为了排除干扰:servcie iptabes stop