開源的Ceph及Red Hat旗下的Gluster都是成熟的技術,但興許不久之后就將經歷某種重生了。隨著存儲產業開始向擴展性存儲及云的方向發展,將不斷會有基于這些低價的軟件技術的產品推向市場,而對這些自集成解決方案的補充在近一年來不斷涌現。
Ceph與Gluster在原理上有著本質上的不同。Ceph基于一個名為RADOS的對象存儲系統,使用一系列API將數據以塊(block)、文件(file)和對象(object)的形式展現。Ceph存儲系統的拓撲結構圍繞著副本與信息分布,這使得該系統能夠有效保障數據的完整性。
而Red Hat將Gluster描述為可擴展的網絡存儲設備(Scale-out NAS)和對象存儲系統。它使用一個哈希算法來計算數據在存儲池中的存放位置,這點跟Ceph很類似。并且這是保證擴展性的關鍵。在Gluster中,所有的存儲服務器使用哈希算法完成對特定數據實體的定位。于是數據可以很容易的復制,并且沒有中心元數據單點這樣一個容易造成訪問瓶頸的部分,這種單點在早期Hadoop上出現,對性能和可靠性造成較大影響。
Ceph與Gluster有著相似的數據分布能力。Ceph像大多數對象存儲軟件那樣,通過更大的節點集進行數據條帶化處理。這樣的好處是能夠防止數據訪問的瓶頸效應。
因為默認的Ceph塊比較小(僅為64KB),所以數據流被切分為許多隨機的IO操作。而磁盤在隨機IO的時候一般能夠達到最大值(對HDD而言最多達到150次每秒),并且這個數值不會隨傳輸的數據大小改變多少。所以對于Ceph而言,設置更大的IO塊意味著能夠一次聚合傳輸更多的數據。
Gluster默認的塊大小是128KB。這是Red Hat聲稱在一項基準測試中Gluster的性能是Ceph的三倍的主要原因。當然,測試者用了一些小技巧,所以測試結果是參數設置及實驗調優的結果。 Ceph能夠將塊大小從64KB設置為256KB甚至1MB,這么做也能使Ceph的性能得到不小的提升。
基準測試的門道相當復雜。塊大小的設置能夠左右Ceph與Gluster的性能對比。想要得到公平的比較結果,就必須依賴第三方不帶任何偏見的進行測試。顯然,Red Hat的報告有著顯著的誤導性。
回頭再來看兩者的擴展性能。兩個系統都避免了單節點的存在,因此可以近乎線性的進行擴展。重復數據刪除不會對性能造成太大的差異。兩者的服務器端的壓縮技術減輕了磁盤利用及網絡負載雙方面的壓力,并且降低了每個文件的磁盤IO次數。
Ceph file journals技術能夠向SSD設備中寫從而使得性能大幅度提升。并且支持緩存(Caching)或分層(Tiering),配置方式可簡可繁。
Ceph在恢復損壞的磁盤時有優勢。因為,Ceph相比Gluster將數據放置在一個更大的節點集中,有更多的設備(磁盤驅動器)能夠同時輸入副本數據。這將大大縮短數據重建的時間,且不會顯著增加某個磁盤設備的負載。在大規模的集群中,這是一個顯著的優勢。
兩個系統的安裝和運維都相當簡單,但如果規劃要做長期的部署則必須花費一些時間認真準備。存儲管理員會發現Inktank為Ceph提供了一些更為精細的操作,因為Ceph對文件系統、塊訪問以及遠程復制等操作都是采用內建函數的方式,而不像Gluster那樣采用插件的方式。這給了Ceph很大的優勢,也是為什么Ceph能夠在安裝上領先Gluster的原因。這能夠很輕松的解決塊遷移的問題并且提供單個存儲池的管理。
誠然,兩者在合理的代價下為用戶提供了較強的可選性。兩者的源代碼都是開源且免費的,Inktank和Red Hat公司則提供支持服務及管理工具包。相比傳統的存儲,隨著通用型硬件及存儲設備(磁盤)價格的不斷下降,Ceph和Gluster都體現出越來越大的價值。
因為很好的功能、不錯的性能以及在價格方面的優勢,Ceph以及Gluster在昂貴的專用存儲之外提供了一種可行的解決方案,可以預見它們將會得到市場的青睞,并且有可能撼動由EMC或NetApp所把持的存儲市場。