梁坤榮 中國(guó)郵政集團(tuán)公司廣東省信息技術(shù)局
分布式存儲(chǔ)系統(tǒng)CEPH研究與試用
梁坤榮 中國(guó)郵政集團(tuán)公司廣東省信息技術(shù)局
分布式存儲(chǔ)系統(tǒng)通過(guò)軟件定義存儲(chǔ),具有高可用、高擴(kuò)展性、價(jià)格低廉等優(yōu)點(diǎn),正日益取代傳統(tǒng)存儲(chǔ)成為云計(jì)算的新寵。本文通過(guò)研究開(kāi)源分布式存儲(chǔ)系統(tǒng)CEPH的工作原理,試用并提出調(diào)優(yōu)方案,嘗試為數(shù)據(jù)中心使用分布式存儲(chǔ)系統(tǒng)來(lái)降低企業(yè)IT成本、提高數(shù)據(jù)安全性提供方案。
分布式存儲(chǔ) 開(kāi)源 CEPH
分布式存儲(chǔ)系統(tǒng)通過(guò)軟件定義存儲(chǔ),將數(shù)據(jù)分散存儲(chǔ)在多臺(tái)獨(dú)立的設(shè)備上,采用可擴(kuò)展的系統(tǒng)結(jié)構(gòu),利用多臺(tái)存儲(chǔ)服務(wù)器分擔(dān)存儲(chǔ)負(fù)荷,它不但提高了系統(tǒng)的可靠性、可用性和存取效率,還易于擴(kuò)展。
常見(jiàn)的分布式文件系統(tǒng)有GFS、HDFS、Ceph等。GFS是Google公司為了滿足本公司需求而開(kāi)發(fā)的專有分布式文件系統(tǒng);HDFS是Hadoop分布式文件系統(tǒng)的簡(jiǎn)稱,是為處理離線大數(shù)據(jù)設(shè)計(jì)的;Ceph是一個(gè)通用的實(shí)時(shí)存儲(chǔ)系統(tǒng),既可滿足高IOPS的隨機(jī)讀寫(xiě),又可滿足高帶寬的連續(xù)讀寫(xiě)操作,既可為云計(jì)算提供對(duì)象存儲(chǔ),又可為傳統(tǒng)設(shè)備提供塊存儲(chǔ)服務(wù)。
2.1 基本架構(gòu)
Ceph主要由核心服務(wù)RADOS以及塊存取接口(RBD)、對(duì)象存取接口(RADOSGW)和文件系統(tǒng)接口(CEPH FS)組成。
RADOS作為底層服務(wù)實(shí)現(xiàn)集群數(shù)據(jù)的復(fù)制、恢復(fù)、回填、再均衡、集群狀態(tài)監(jiān)控等核心功能。Librados為客戶端與底層RADOS通訊提供接口。RADOS GateWay、RBD的作用是在librados庫(kù)的基礎(chǔ)上提供抽象層次更高、更便于應(yīng)用或客戶端使用的上層接口。由于實(shí)驗(yàn)環(huán)境所限,本文以塊存儲(chǔ)(RBD)接口為例子對(duì)該系統(tǒng)原理加以詳細(xì)闡述以及進(jìn)行試驗(yàn)。
2.2 數(shù)據(jù)存儲(chǔ)過(guò)程
無(wú)論使用哪種存儲(chǔ)方式(對(duì)象、塊、掛載),存儲(chǔ)的數(shù)據(jù)都會(huì)被切分成對(duì)象(Objects)。每個(gè)對(duì)象映射到一個(gè)PG(歸置組),PG通過(guò)CRUSH算法存儲(chǔ)到不同的OSD節(jié)點(diǎn)上,而且每個(gè)PG會(huì)對(duì)應(yīng)一個(gè)主OSD和若干從OSD,這樣就避免了OSD損壞時(shí)PG找不到OSD的問(wèn)題。
Ceph的讀寫(xiě)操作采用主從模型,客戶端要讀寫(xiě)數(shù)據(jù)時(shí),只能向?qū)ο笏鶎?duì)應(yīng)的主OSD節(jié)點(diǎn)發(fā)起請(qǐng)求。主節(jié)點(diǎn)在接受到寫(xiě)請(qǐng)求時(shí),會(huì)同步的向從OSD中寫(xiě)入數(shù)據(jù)。當(dāng)所有的OSD節(jié)點(diǎn)都寫(xiě)入完成后,主節(jié)點(diǎn)才會(huì)向客戶端報(bào)告寫(xiě)入完成的信息,因此保證了主從節(jié)點(diǎn)數(shù)據(jù)的高度一致性。而讀取的時(shí)候,客戶端也只會(huì)向主osd節(jié)點(diǎn)發(fā)起讀請(qǐng)求,并不會(huì)有類似于數(shù)據(jù)庫(kù)中的讀寫(xiě)分離的情況出現(xiàn)。
為了以最低的成本來(lái)部署實(shí)驗(yàn)環(huán)境,我們利舊了淘汰的5臺(tái)pc server,購(gòu)買了一批2T的SATA硬盤。pc server的配置各異,CPU和內(nèi)存容量尚未能滿足CEPH的一些硬件要求,因此性能會(huì)稍差,但并不影響可用性的要求,后續(xù)可進(jìn)行擴(kuò)容優(yōu)化。
3.1 安裝
在互聯(lián)網(wǎng)環(huán)境中安裝CEPH非常簡(jiǎn)單,只要配置好yum源,使用ceph-deploy工具即可快速部署所有機(jī)器。如果是內(nèi)網(wǎng)環(huán)境,則需要配置本地yum源,然后進(jìn)行安裝,本文不再詳細(xì)敘述。
3.2 自定義CRUSH
CRUSH算法通過(guò)計(jì)算數(shù)據(jù)存儲(chǔ)位置來(lái)確定如何存儲(chǔ)和檢索,使Ceph避免了單點(diǎn)故障、性能瓶頸、和伸縮的物理限制。
CRUSH圖包含OSD列表、把設(shè)備匯聚為物理位置的“桶”列表、和指示CRUSH如何復(fù)制存儲(chǔ)池里的數(shù)據(jù)的規(guī)則列表。我們把每個(gè)硬盤對(duì)應(yīng)的OSD匯聚到所在的物理服務(wù)器上(HOST),再把5臺(tái)HOST匯聚到ROOT。HOST和ROOT都是虛擬出來(lái)的桶列表,使CRUSH算法能有效的將每份數(shù)據(jù)分布到不同的主機(jī)中,保證當(dāng)主機(jī)發(fā)生故障時(shí)只會(huì)損壞一份數(shù)據(jù),而不會(huì)出現(xiàn)所有數(shù)據(jù)都在同一臺(tái)主機(jī)中的現(xiàn)象。
3.3 系統(tǒng)概覽
通過(guò)指令ceph-s可查看系統(tǒng)當(dāng)前健康狀態(tài),還可以看到monitor情況、OSD概況、歸置組PG概況以及系統(tǒng)總空間、已用空間等情況。由此指令看到我們的實(shí)驗(yàn)環(huán)境當(dāng)前有3個(gè)monitor,25個(gè)OSD,總空間為46T,已用308G。但這個(gè)空間應(yīng)該除以3,因?yàn)槲覀冊(cè)O(shè)置了3份數(shù)據(jù),因此實(shí)際總空間只有46/3=15.3T,已用空間為308G/3=102.7G。
4.1 性能測(cè)試
為使測(cè)試結(jié)果更接近實(shí)際使用環(huán)境,我們使用了一臺(tái)虛擬機(jī),同時(shí)掛載HP DS4700存儲(chǔ)和CEPH存儲(chǔ),這兩款存儲(chǔ)都使用2T容量的SATA硬盤。隨后使用scp工具來(lái)讀寫(xiě)同一個(gè)ORACLE數(shù)據(jù)文件,結(jié)果發(fā)現(xiàn)兩款存儲(chǔ)在該測(cè)試中的性能非常接近,DS4700性能稍微好一點(diǎn),但基本上是一個(gè)級(jí)別的。
4.2 性能調(diào)優(yōu)
4.2.1 滿足基本硬件配置
實(shí)驗(yàn)環(huán)境中的設(shè)備未能滿足CEPH的最低硬件要求,可通過(guò)提升硬件配置以提升性能。
4.2.2 使用SSD作為journal
Journal的作用是當(dāng)有突發(fā)的大量寫(xiě)入操作時(shí),先把一些零散的,隨機(jī)的IO請(qǐng)求保存到緩存中進(jìn)行合并,然后再統(tǒng)一向內(nèi)核發(fā)起IO請(qǐng)求。這樣做效率會(huì)比較高,但是journal的IO是非常密集的,所以可以使用SSD來(lái)單獨(dú)存儲(chǔ)journal文件以提高CEPH讀寫(xiě)性能。
4.2.3 網(wǎng)絡(luò)優(yōu)化
CEPH使用以太網(wǎng)進(jìn)行數(shù)據(jù)傳輸、故障點(diǎn)自我修復(fù)等,因此對(duì)網(wǎng)絡(luò)帶寬要求特別大。實(shí)驗(yàn)環(huán)境中僅使用一張千兆以太網(wǎng)網(wǎng)卡進(jìn)行所有的數(shù)據(jù)傳輸,如用于生產(chǎn)環(huán)境,建議把CEPH的內(nèi)部通訊和外部通訊分開(kāi),并且使用萬(wàn)兆網(wǎng)絡(luò),即可提高CEPH與外部傳輸數(shù)據(jù)的性能,減少故障修復(fù)的時(shí)間。
CEPH分布式存儲(chǔ)早已是企業(yè)級(jí)的產(chǎn)品,被大量的為亞馬遜、Openstack等云平臺(tái)提供對(duì)象存儲(chǔ)。
實(shí)驗(yàn)環(huán)境中使用的是基于Vmware的虛擬化平臺(tái),無(wú)法使用對(duì)象存儲(chǔ),但是可以使用CEPH塊存儲(chǔ)來(lái)代替?zhèn)鹘y(tǒng)存儲(chǔ),為虛擬機(jī)提供塊設(shè)備。在前期試用階段,可作為備份存儲(chǔ)使用,為OS備份、應(yīng)用備份、數(shù)據(jù)備份等提供存儲(chǔ)空間,解決備份存儲(chǔ)的空間和成本問(wèn)題。
[1]Ceph中國(guó)社區(qū)(著)《Ceph分布式存儲(chǔ)實(shí)戰(zhàn)》機(jī)械工業(yè)出版社2016年12月