一、相關(guān)依賴(lài)包安裝
1. 安裝依賴(lài)包
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.安裝調(diào)試依賴(lài)包
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. 安裝官方依賴(lài)包
./install-deps.sh
./run-make-check.sh
3. 開(kāi)始編譯
#編譯源碼是個(gè)漫長(zhǎng)的過(guò)程多律,根據(jù)機(jī)器配置指定宙地。如果是虛擬機(jī)可能需要好幾個(gè)小時(shí)。還會(huì)出現(xiàn)各種依賴(lài)包缺失的情況喧兄,非常耗時(shí)无畔。
mkdir build
cd build
cmake ..
make -j40 (可以多核編譯加快編譯速度)
make install
三、測(cè)試環(huán)境部署
1. 啟動(dòng)開(kāi)發(fā)集群
#此處有一個(gè)非常大的坑吠冤,折騰了半天浑彰。
#必須在build目錄下面執(zhí)行啟動(dòng)腳本,否則一直報(bào)缺少libec_jerasure.so,即使配置到系統(tǒng)變量里面也不行拯辙。
load dlopen(/libec_jerasure.so): /libec_jerasure.so: cannot open shared object file: No such file or directory
#啟動(dòng)開(kāi)發(fā)集群
cd build
MON=1 MDS=0 OSD=3 ../src/vstart.sh -d -n -x
參數(shù)說(shuō)明:
-m 指出monitor節(jié)點(diǎn)的ip地址和默認(rèn)端口6789郭变;
-n 指出此次部署為全新部署;
-d 指出使用debug模式(便于調(diào)試代碼)涯保;
-r 指出啟動(dòng)radosgw進(jìn)程诉濒;
--mon_num 指出部署的monitor個(gè)數(shù);
--osd_num 指出部署的OSD個(gè)數(shù)夕春;
--mds_num 指出部署的MDS個(gè)數(shù)未荒;
--bluestore 指出ceph后端存儲(chǔ)使用最新的bluestore;
2. 停止開(kāi)發(fā)集群
#啟動(dòng)開(kāi)發(fā)集群
cd build
../src/stop.sh all
3. 運(yùn)行單元測(cè)試
cd build
make check
四撇他、源碼分析工具
1. gdb
擅長(zhǎng)做精細(xì)化的調(diào)試茄猫。比如查看變量?jī)?nèi)容,查看內(nèi)存內(nèi)容困肩,條件斷點(diǎn)等划纽。
#待續(xù)
2.lttng
ceph自帶,兼容性好锌畸。適當(dāng)?shù)臅r(shí)候可以打印關(guān)鍵變量?jī)?nèi)容
#待續(xù)
3.systemtap
擅長(zhǎng)分析代碼流程勇劣,打印函數(shù)調(diào)用關(guān)系,不需要修改源碼,據(jù)說(shuō)還能分析性能瓶頸
#待續(xù)