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