編譯部署
參考:https://github.com/ceph/ceph/
- 寫在前面
一定要給足夠的磁盤空間,建議100GB,我之前使用40GB的虛擬機(jī)進(jìn)行部署,部署起來(lái)幾十秒就GG了,df看磁盤發(fā)現(xiàn)只剩170MB空間了。。日志顯示如下:
2017-11-22 06:04:37.745439 mon.a mon.0 192.168.116.129:40000/0 133 : cluster [ERR] Health check failed: mons a,b,c are very low on available space (MON_DISK_CRIT)
如果遇到vmware虛擬機(jī)root分區(qū)空間不夠的情況,解決方法如下:首先在vmware中擴(kuò)展分區(qū),然后進(jìn)入ubuntu, 使用sudo apt install gparted安裝gparted,然后可以參考http://blog.csdn.net/Fly_Lucas/article/details/53868722 操作。
- clone code from github
git clone https://github.com/ceph/ceph.git
- ceph contains many git submodules that need to be checked out with
git submodule update --init --recursive
- install dependences
cd ceph
./install-deps.sh
- build ceph
./do_cmake.sh
cd build
make
這里要注意,ceph的編譯對(duì)內(nèi)存要求很大,我使用ubuntu虛擬機(jī),4GB內(nèi)存在執(zhí)行make命令時(shí)g++仍然報(bào)錯(cuò)停止,后來(lái)將內(nèi)存上升到8GB才編譯完成。
另外,因?yàn)槲覀冎幌脒\(yùn)行一個(gè)測(cè)試集群,所以可以只編譯vstart模塊,所以上述的make命令可以替換成make vstart。
- run test cluster
cd build
MON=3 OSD=3 MDS=1 MGR=1 RGW=1 ../src/vstart.sh -n -d
上述命令表示使用debug模式(-d)new一個(gè)新的集群(-n),前面的參數(shù)表示各組件的數(shù)量,如果不明確指定,默認(rèn)應(yīng)該是MON=3 OSD=1 MDS=1 MGR=1 RGW=1。
運(yùn)行上述命令后,會(huì)輸出大量日志到終端,其中包含了用于s3cmd和swift的賬戶
- use it
現(xiàn)在我們就可以通過(guò)./bin下的命令還操作集群了,例如:
./bin/ceph -s
- shut down the test cluster
../src/stop.sh
使用s3cmd控制
- install s3cmd
for ubuntu:
sudo apt install s3cmd
- generate config file
s3cmd --configure
這時(shí)會(huì)出現(xiàn)很多選項(xiàng)讓你選擇,其實(shí)這些選項(xiàng)都可以在生成的配置文件中自行修改,所以不必?fù)?dān)心選錯(cuò)。
- 修改~/.s3cfg
我們可以看到,在當(dāng)前用戶的根目錄下生成了一個(gè).s3cfg文件,其中包含了各項(xiàng)配置,可以通過(guò)修改這個(gè)文件直接修改配置。
其中有幾項(xiàng)是必須要修改的:cloudfront_host host_base和host_bucket。
但因?yàn)槲沂窃诒镜夭渴饻y(cè)試集群,rgw的服務(wù)器地址是127.0.0.1,端口是8000(可以在ceph.conf中看到),修改成:
cloudfront_host = 127.0.0.1:8000
host_base = 127.0.0.1:8000
host_bucket = 127.0.0.1:8000/%(bucket)
- use it
現(xiàn)在我們可以使用s3cmd命令來(lái)操作rgw集群了,比如
創(chuàng)建一個(gè)名為first_bucket的桶
s3cmd mb s3://first_bucket
存儲(chǔ)一個(gè)名為hello.txt的文件
s3cmd put hello.txt s3://first_bucket
獲得剛剛上傳的文件,并存儲(chǔ)為test.txt(可省略)
s3cmd get s3://first_bucket/hello.txt test.txt
列出所有的桶
s3cmd ls
列出指定桶里所有的對(duì)象
s3cmd ls s3://first_bucket
刪除指定文件
s3cmd rm s3://first_bucket/hello.txt
刪除指定桶
s3cmd rb s3://first_bucket