概述
前几天在一台ubuntu测试机上进行了Ceph编译打包,过程也是相当揪心。记录一下过程,方便以后查阅。
准备
准备一台ubuntu机器,物理机虚拟机都行,但应该物理机好一点,在编译的时候可以使用多线程加速。
下载源码
第一种方式是在Github上下载源码
git clone git@github.com:ceph/ceph
这样下载源码不会下载Ceph的子模块,这样编译的时候会出现问题。
运行以下命令来安装这些子模块:
git submodule update --init --recursive
不知道为啥我电脑用git下载不了源码,所以这个方法自己没有亲身实践。
第二种方式是在官网下载源码
http://ceph.com/resources/downloads/
官网有个好处就是会将所有子模块一并下载下来,免除掉些许麻烦。
这次我编译的是Ceph-10.2.2
版本。
安装依赖
现在Ceph都会自带install-deps.sh
来安装所需要的依赖包。
如果出现问题,手动装也是能解决问题的。
sudo apt-get install autotools-dev autoconf automake cdbs gcc g++ git libboost-dev libedit-dev libssl-dev libtool libfcgi libfcgi-dev libfuse-dev linux-kernel-headers libcrypto++-dev libcrypto++ libexpat1-dev pkg-config
若是之后过程中提示缺少什么包,手动安装就好了。
编译方法
在Github上或者自带文档上面都能看到编译方法,也很简单,就这三步,照着做就好了。
./autogen.sh
./configure
make
make的时候可以使用多线程来加速make -j4
,可以把4换成你CPU的核数,这样会快些。
编译成功
编译完源码后,你可以启动一个开发模式的 Ceph 集群,命令如下:
cd src
install -d -m0755 out dev/osd0
./vstart.sh -n -x -l
# check that it's there
./ceph health
若是前面一切顺利的话,运行完就成功了。可以进入到编译的目录下去,开始运行测试集群:
root@cci-test3:~/blog/ceph-10.2.2/src/#:MON=1 MDS=0 ./vstart.sh -d -n -x
......
root@cci-test3:~/blog/ceph-10.2.2/src/#:./ceph -s
*** DEVELOPER MODE: setting PATH, PYTHONPATH and LD_LIBRARY_PATH ***
cluster 05f0dc34-4a98-498a-9e89-06decaba704c
health HEALTH_OK
monmap e1: 1 mons at {a=192.168.138.95:6789/0}
election epoch 2, quorum 0 a
osdmap e9: 3 osds: 3 up, 3 in
pgmap v2689: 8 pgs, 1 pools, 0 bytes data, 0 objects
54178 MB used, 48713 MB / 105 GB avail
8 active+clean
root@cci-test3:~/blog/ceph-10.2.2/src/#
调试集群已经启动成功,可以使用命令停止集群
./stop.sh
接下来就可以更改代码了,修改代码后可以重新编译,然后启动集群。查看编译后的集群。
osd目录:~/ceph-10.2.2/src/dev/
log目录:~/ceph-10.2.2/src/out/
打包
Ubuntu下使用dpkg工具打包
sudo apt-get install dpkg-dev
dpkg-checkbuilddeps # make sure we have all dependencies
dpkg-buildpackage
要是不出问题的话,慢慢等着就可以了,打包的过程不比编译的过程慢,我这里会先生成一个.dsc
文件和源码的tar
包,可以上官网看这个.dsc
文件干嘛的,我也没去关心了。
最后面打包的结果如下,很多个deb包:
-rw-r--r-- 1 root root 16828 Oct 12 18:34 ceph_10.2.2-1_amd64.changes
-rw-r--r-- 1 root root 999078 Oct 12 17:26 ceph_10.2.2-1_amd64.deb
-rw-r--r-- 1 root root 3744 Oct 12 14:55 ceph_10.2.2-1.dsc
-rw-r--r-- 1 root root 66488177 Oct 12 14:55 ceph_10.2.2-1.tar.gz
-rw-r--r-- 1 root root 53079646 Oct 12 17:27 ceph-base_10.2.2-1_amd64.deb
-rw-r--r-- 1 root root 12683536 Oct 12 17:37 ceph-common_10.2.2-1_amd64.deb
-rw-r--r-- 1 root root 222737196 Oct 12 17:43 ceph-common-dbg_10.2.2-1_amd64.deb
-rw-r--r-- 1 root root 1020478 Oct 12 17:43 ceph-fs-common_10