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代表Object Storage Service裝置,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 查看各個組件的運行狀態。