ceph是模塊化和可擴(kuò)展的,并且有容錯設(shè)計。先進(jìn)的分布式存儲系統(tǒng)。
ceph憑借其高可擴(kuò)展性、高可靠性、高性能的特點,逐漸成為openstack\cloudstack、opennebula等主流開源云平臺后端存儲的首選。可靠性、自平衡、自恢復(fù)、一致性
軟件定義存儲。
可以大幅降低企業(yè)存儲基礎(chǔ)設(shè)施的成本。
分布式、可大規(guī)模擴(kuò)展,經(jīng)濟(jì)
虛擬平臺KVM、VMWARE也支持ceph
ceph存儲介紹
ceph部署實戰(zhàn)
ceph架構(gòu)和組件
ceph內(nèi)部構(gòu)建
ceph部署
ceph存儲配置
ceph操作及管理
監(jiān)控ceph集群
ceph與openstack集成
ceph性能調(diào)優(yōu)和基準(zhǔn)測試
1、ceph是什么
ceph是一個開源項目,它提供軟件定義的、統(tǒng)一的存儲解決方案。ceph可大規(guī)模擴(kuò)展、高性能并且無單點故障的分布式存儲系統(tǒng)。容量可擴(kuò)展至EB級別。1EB=1024PB


ceph以章魚作為自己的吉祥物,表達(dá)了ceph跟章魚一樣的并行行為。
inktank公司為ceph提供專業(yè)服務(wù)和技術(shù)支持。
版本歷史



塊存儲

cephFS


對象存儲


ceph與其他工具的對比
ceph-deploy工具部署
ceph架構(gòu):ceph存儲集群由幾個不同的軟件守護(hù)進(jìn)程組成,每個守護(hù)進(jìn)程負(fù)責(zé)ceph的一個獨(dú)特功能并將值添加到相應(yīng)的組件中。

RADOS:可靠、自動、分布式對象存儲(Reliable Autonomic Distributed Object Store),是ceph存儲集群的基礎(chǔ)。ceph中的一切都以對象的形式存儲,而RADOS就負(fù)責(zé)存儲這些對象,而不考慮它們的數(shù)據(jù)類型。RADOS確保數(shù)據(jù)一致性和可靠性。對于數(shù)據(jù)一致性,它執(zhí)行數(shù)據(jù)復(fù)制、故障檢測和恢復(fù),還包括數(shù)據(jù)在集群節(jié)點間的遷移和再平衡。

MON監(jiān)控健康狀態(tài):OSD,MON,PG,CRUSH。

librados提供接口

RBD塊設(shè)備:支持快照和寫時復(fù)制

RGW對象網(wǎng)關(guān):支持S3和SWIFT

cephFS,MDS

自我管理,自我修復(fù),自我計算

查看存儲池:rados lspools
查看存儲池的對象(metadata池的名字):rados -p metadata ls
查看集群空間:rados df
OSD:::

文件系統(tǒng)


日志大小常見的是10GB,一個SSD做日志最多分給4到5個OSD
每個磁盤推薦1-2GB內(nèi)存
查看單節(jié)點上的OSD:service ceph status osd
檢查OSD的ID:ceph osd ls
檢查OSD map和狀態(tài):ceph osd stat
ceph osd tree 樹形圖
ceph monitor:集群map包括monitor\osd\pg\crush\mds map
檢查mon map:ceph mon dump
檢查osd map:ceph osd dump
檢查pg map:ceph pg dump
crush map: ceph osd crush dump
ceph mds dump




檢查mon狀態(tài):service ceph status mon
ceph mon stat
ceph mon_status
ceph mon dump
librados:
一個本地的C語言庫,可以直接和RADOS通信。
RBD驅(qū)動被集成到LINUX內(nèi)核中


ceph與open'stack緊密集成:寫時復(fù)制快照、克隆和可恢復(fù)的只讀快照

cgw:是一個代理,可以將HTTP請求轉(zhuǎn)換成RADOS,也可以把RADOS請求轉(zhuǎn)換成HTTP,從而提供RESTful對象存儲。radosgw


MDS

部署MDS:ceph-deploy mds create ceph-node2
CEPH FS


ceph構(gòu)架及其核心組件、底層實現(xiàn)
對象:
一個對象用一個全局唯一的標(biāo)識符標(biāo)識,元數(shù)據(jù)和數(shù)據(jù)

ceph的池是一個用來存儲對象的邏輯分區(qū),它提供了一個有組織的存儲形式。
默認(rèn)存儲池: rbd,如果配置了MDS,則還會創(chuàng)建data/metadata
列出所有池:rados lspools
列出池中的對象名稱:rados -p metadata ls
CRUSH算法:Controlled Replication Under Scalable Hashing

客戶端使用自己的資源來執(zhí)行CRUSH查找。
一次讀寫操作




恢復(fù)和再平衡:


修改crush map:
提取:ceph osd getcrushmap -o crushmap.txt
反編譯:crushtool -d crushmap.txt -o crushmap-decompile
打開/修改: vi crushmap-decompile
重新編譯: crushtool -c crushmap-decompile -o crushmap-compiled
應(yīng)用:ceph osd setcrushmap -i crushmap-compiled
ceph osd tree :查看層級結(jié)構(gòu)
bucket:表示放設(shè)備的容器,可以包含多個設(shè)備或子類型的bucket
device:設(shè)備,最基本的存儲設(shè)備,也就是OSD,通常一個OSD對應(yīng)一個磁盤存儲設(shè)備
bucket類型:osd,host,chassis,rack,row,pdu,pod,room,datacenter,regin,root 11各等級
osd,主機(jī),底盤,機(jī)架,一排機(jī)架,?,?,機(jī)房,數(shù)據(jù)中心,區(qū)域,根
修改bucket結(jié)構(gòu),例子:

PG:一組對象的邏輯集合


建議每個OSD上放置50-100各PG
PG總數(shù)計算公式
PG 總數(shù)= (OSD 總數(shù)x 100) /最大副本數(shù)
結(jié)果必須舍入到最接近2 的N 次幕的值。比如:如果C巳ph 集群有160 個OSD 且副本數(shù)是3 ,這樣根據(jù)公式計算得到的PG 總數(shù)是5333.3 ,因此舍入這個值到最接近的2 的N 次幕的結(jié)果就是8192 個PG 。
我們還應(yīng)該計算Ceph 集群中每一個池中的PG 總數(shù)。計算公式如下:
PG 總數(shù)= ((OSD 總數(shù)x 100) /最大副本數(shù)) /池數(shù)
同樣使用前面的例子: OSD 總數(shù)是160 ,副本數(shù)是3 ,池總數(shù)是3 。根據(jù)上面這個公式,
計算得到每個池的PG 總數(shù)應(yīng)該是1777 . 7 ,最后舍入到2 的N 次幕得到結(jié)果為每個池2 048個PG 。
PGP 是為實現(xiàn)定位而設(shè)置的PG ,它的值應(yīng)該與PG 的總數(shù)(即pg_num) 保持一致。
查看數(shù)量:ceph osd pool get data pg_num
ceph osd pool get data pgp_num
檢查池的副本數(shù):ceph osd dump|grep -i size
規(guī)劃PG數(shù)量


PG的peering、up集合和acting集合


一個池,一個CRUSH規(guī)則集

創(chuàng)建池:
ceph osd pool create web-services 128 128
查看池列表:ceph osd lspools / rados lspools / ceph osd dump|grep -i pool
修改副本數(shù):ceph osd pool set web-services size 3
重命名池:ceph osd pool rename web-services frontend-services
池的快照操作

刪除池也會刪除快照
ceph osd poo1 de1ete frontend-services frontend-services --yes-i-rea11y-rea11y-mean-it
PG數(shù)據(jù)管理





ceph monitor:單核2GB內(nèi)存,硬盤可以大點存儲日志,1G/S的網(wǎng)卡
OSD:1塊物理硬盤1各OSD,1GHZCPU和2GB內(nèi)存,硬盤?,獨(dú)立日志盤,一個SSD做2-4各OSD日志盤
MDS需要4核或更高,更高RAM
糾刪碼:整個機(jī)制需要的耗OSD 節(jié)點更多的計算能力。此外,在恢復(fù)時, 解碼數(shù)據(jù)塊也需要大量的計算。
糾刪碼的概念:n=k+m


配置糾刪碼






ceph緩存層


部署緩存層















基準(zhǔn)測試




