一、相关依赖包安装
1. 安装依赖包
yum install libtool gcc gcc-c++ libuuid-devel keyutils-libs-devel libblkid-devel redhat-lsb libedit-* yum install libatomic_ops-devel snappy-devel leveldb-devel libudev-devel cryptopp-* fuse-devellibaio-devel xfsprogs-devel automake autoconf boost-devel expat-devel
2.安装调试依赖包
yum install lttng-tools* lttng-ust* lttng*
3.下载源码
wget http://download.ceph.com/tarballs/ceph_12.2.2.orig.tar.gz
二、源码编译
1.解压ceph
tar xvf ceph_12.2.2.orig.tar.gzcd ceph_12.2.2
2. 安装官方依赖包
./install-deps.sh ./run-make-check.sh
3. 开始编译
#编译源码是个漫长的过程,根据机器配置指定。如果是虚拟机可能需要好几个小时。还会出现各种依赖包缺失的情况,非常耗时。 mkdir build cd build cmake .. make -j40 (可以多核编译加快编译速度) make install
三、测试环境部署
1. 启动开发集群
#此处有一个非常大的坑,折腾了半天。 #必须在build目录下面执行启动脚本,否则一直报缺少libec_jerasure.so,即使配置到系统变量里面也不行。 load dlopen(/libec_jerasure.so): /libec_jerasure.so: cannot open shared object file: No such file or directory #启动开发集群 cd build MON=1 MDS=0 OSD=3 ../src/vstart.sh -d -n -x 参数说明: -m 指出monitor节点的ip地址和默认端口6789; -n 指出此次部署为全新部署; -d 指出使用debug模式(便于调试代码); -r 指出启动radosgw进程; --mon_num 指出部署的monitor个数; --osd_num 指出部署的OSD个数; --mds_num 指出部署的MDS个数; --bluestore 指出ceph后端存储使用最新的bluestore;
2. 停止开发集群
#启动开发集群 cd build ../src/stop.sh all
3. 运行单元测试
cd build make check
四、源码分析工具
1. gdb
擅长做精细化的调试。比如查看变量内容,查看内存内容,条件断点等。
#待续
2.lttng
ceph自带,兼容性好。适当的时候可以打印关键变量内容
#待续
3.systemtap
擅长分析代码流程,打印函数调用关系,不需要修改源码,据说还能分析性能瓶颈
#待续