一次分布式存儲Ceph的初體驗!--UP楠哥

#說在前面
曾經(jīng)用群暉幫助朋友用做數(shù)據(jù)中心虛擬化服務(wù)器的共享存儲來部署使用,我自己也有一臺群暉,能夠達(dá)到企業(yè)級應(yīng)用標(biāo)準(zhǔn);群暉一度是眾多買不起專業(yè)存儲設(shè)備的小企業(yè)青睞的存儲產(chǎn)品,無論是iSCSI還是NAS功能,無論是數(shù)據(jù)加密、磁盤擴(kuò)展還是HA高可用功能,都值得稱贊。

近幾年,隨著云計算誕生、企業(yè)上云、DevOPS、數(shù)字化轉(zhuǎn)型等關(guān)鍵名詞的出現(xiàn),使得整個IT業(yè)界發(fā)生快速的變化,導(dǎo)致數(shù)據(jù)存儲類型也變得更加的豐富多樣,數(shù)據(jù)量也變得更加的龐大;什么塊存儲、文件存儲、對象存儲包括對接公有云上各類的存儲服務(wù)等,也就是說,分布式存儲技術(shù)的需求越來越多,此時我們需要的是能夠和存儲設(shè)備硬件實現(xiàn)松耦合的軟件定義存儲相關(guān)的解決方案,能夠?qū)⒁陨咸岬降母黝悢?shù)據(jù)存儲類型整合,實現(xiàn)統(tǒng)一的存儲管理和監(jiān)控平臺。

紅帽的Ceph就是側(cè)重于基于塊、對象和文件的數(shù)據(jù)提供統(tǒng)一存儲和管理這樣的解決方案。接下來我們就要嘮一下Ceph的定義、它在分布式存儲軟件定義方向中占有絕對的Leader地位以及通過一次模擬演示下Ceph的效果。
#什么是Ceph
Ceph是開源的分布式存儲系統(tǒng),用于塊數(shù)據(jù)、對象等。通過原生API中AWS S3或者OpenStack swfit API方式進(jìn)行訪問。基于塊存儲訪問通過塊協(xié)議以及iscsi提供。
Ceph的官方文檔地址:
https://docs.ceph.com/en/pacific/
?
# Ceph的架構(gòu)

Ceph應(yīng)用到不同的場景中,如對象存儲是通過RADOSGW來進(jìn)行數(shù)據(jù)存儲的,能夠提供亞馬遜AWS中的S3風(fēng)格以及紅帽O(jiān)penStack云平臺架構(gòu)中的Swift風(fēng)格所對應(yīng)的接口;塊存儲的話,是通過RBD將塊設(shè)備映射給主機(jī)或者虛擬機(jī)中,作為持久化的塊設(shè)備(磁盤)進(jìn)行關(guān)聯(lián)使用;另外,文件存儲方式提供了客戶端Linux內(nèi)核級別和FUSE級別的訪問方式。組后,LIBRADOS庫是可以直接支持原生訪問存儲,通過Go、C、C++、Python等語言調(diào)用訪問存儲。
# Ceph的組成

?pCeph OSDs: Ceph OSD 守護(hù)進(jìn)程( Ceph OSD )的功能是存儲數(shù)據(jù),處理數(shù)據(jù)的復(fù)制、恢復(fù)、回填、再均衡,并通過檢查其他OSD 守護(hù)進(jìn)程的心跳來向 Ceph Monitors 提供一些監(jiān)控信息。當(dāng) Ceph存儲集群設(shè)定為有2個副本時,至少需要2個 OSD 守護(hù)進(jìn)程,集群才能達(dá)到 active+clean狀態(tài)( Ceph默認(rèn)有3個副本,可以調(diào)整副本數(shù))。
?pMonitors: Ceph Monitor維護(hù)著展示集群狀態(tài)的各種圖表,包括監(jiān)視器圖、 OSD 圖、歸置組( PG )圖、和 CRUSH 圖。 Ceph保存著發(fā)生在Monitors 、 OSD 和 PG上的每一次狀態(tài)變更的歷史信息(稱為 epoch )。
?pManager:管理器:Ceph管理器守護(hù)程序(Cephmgr)負(fù)責(zé)跟蹤運行時指標(biāo)和Ceph群集的當(dāng)前狀態(tài),包括存儲利用率、當(dāng)前性能指標(biāo)和系統(tǒng)負(fù)載。Ceph管理器守護(hù)進(jìn)程還托管基于python的模塊,以管理和公開Ceph集群信息,包括基于web的Ceph儀表板和Restful APT。高可用性通常需要至少兩個管理器。
?pMDSs: Ceph元數(shù)據(jù)服務(wù)器( MDS )為 Ceph文件系統(tǒng)存儲元數(shù)據(jù)(也就是說,Ceph塊設(shè)備和 Ceph對象存儲不使用MDS )。元數(shù)據(jù)服務(wù)器使得 POSIX 文件系統(tǒng)的用戶們,可以在不對 Ceph存儲集群造成負(fù)擔(dān)的前提下,執(zhí)行諸如 ls、find 等基本命令。
# Ceph的數(shù)據(jù)寫入流程

以上是Ceph的存儲和讀寫的流程圖,從圖中可以看出,Ceph保存的都一些對象,每一個對象都會有自己的id叫做oid,之后裝載到類似存放對象的文件夾PGs,通過hash+掩碼運算oid的方式產(chǎn)生PGid,表明對象所在的PG中。
再通過CRUSH算法分別放到對應(yīng)的Ceph集群節(jié)點中對應(yīng)的OSD,算法不同,落到OSD的位置也是不同,即產(chǎn)生副本。可以按照機(jī)架Rack 主機(jī)host等作為算法的依據(jù)分布不同的OSD。
#一次Ceph塊存儲效果的演示
通過VMware workstation虛擬出三臺Linux操作系統(tǒng)(給它們起了名字分別為node01、node02和node03)作為Ceph的群集節(jié)點。

采用Ceph集群部署方法中的最簡單也是最傳統(tǒng)的方式ceph-deploy部署Ceph集群節(jié)點。通過ceph-deploy方式創(chuàng)建集群,配置public、cluster網(wǎng)絡(luò),部署ceph-mon監(jiān)控以及部署相關(guān)Manager管理機(jī)制;將集群中的節(jié)點主機(jī)的本地磁盤部署OSD。

創(chuàng)建upwen-pool創(chuàng)建upwen1.img文件,并關(guān)聯(lián)映射RBD塊存儲。最終會在Linux系統(tǒng)中產(chǎn)生一個/dev/rbd0塊設(shè)備文件,得到這塊盤之后就像常規(guī)分區(qū)格式化后創(chuàng)建文件系統(tǒng)掛載使用。

#說在最后
正是因為Ceph具備了開源和完善存儲的功能,國內(nèi)不少做分布式存儲的大廠都在借鑒Ceph的技術(shù),加以功能擴(kuò)展化。
舉幾個國內(nèi)廠商的產(chǎn)品案例。其中,國內(nèi)安全廠商深信服的企業(yè)級分布式存儲產(chǎn)品EDS,可以看出其支持的存儲協(xié)議完全都是借鑒Ceph所支持的功能。

另外就是xsky星辰天合,發(fā)布各類型的存儲,也是在Ceph的基礎(chǔ)之上進(jìn)行自定義擴(kuò)展。

國家在"十四五"規(guī)劃中提出將開源列入數(shù)字經(jīng)濟(jì)發(fā)展的計劃中,相信在國家政策支持開源的的大好環(huán)境下,開源系列的Ceph一定會成為分布式存儲解決方案的半壁江山。