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