當前位置:
首頁 > 科技 > Ceph和Gluster,開源存儲間的較量

Ceph和Gluster,開源存儲間的較量

Ceph和Gluster是Red Hat旗下的成熟的開源存儲產品,Ceph與Gluster在原理上有著本質上的不同。Ceph基於一個名為RADOS的對象存儲系統,使用一系列API將數據以塊(block)、文件(file)和對象(object)的形式展現。Ceph存儲系統的拓撲結構圍繞著副本與信息分布,這使得該系統能夠有效保障數據的完整性。

Gluster描述為Scale-out NAS和對象存儲系統。它使用一個Hash演算法來計算數據在存儲池中的存放位置,這點跟Ceph很類似。在Gluster中,所有的存儲伺服器使用Hash演算法完成對特定數據實體的定位。於是數據可以很容易的複製,並且沒有中心元數據分散式存儲無單點故障且不易造成訪問瓶頸,這種單點在早期Hadoop上出現,對性能和可靠性造成較大影響。

Ceph文件系統架構

RADOS(Reliable, Autonomic、Distributed Object Store)是Ceph系統的基礎,這一層本身就是一個完整的對象存儲系統,包括Cehp的基礎服務(MDS,OSD,Monitor),所有存儲在Ceph系統中的用戶數據事實上最終都是由這一層來存儲的。而Ceph的高可靠、高可擴展、高性能、高自動化等等特性本質上也是由這一層所提供的。

RADOS在物理形態上由大量的存儲設備節點組成,每個節點擁有自己的硬體資源(CPU、內存、硬碟、網路),並運行著操作系統和文件系統。基礎庫librados是對RADOS進行抽象和封裝,並向上層提供不同API,以便直接基於RADOS進行原生對象或上層對象、塊和文件應用開發。特別要注意的是,RADOS是一個對象存儲系統,因此,基於librados實現的API也只是針對對象存儲功能的。

RADOS所提供的原生librados API包括C和C 兩種。Librados在部署上和基於其上開發的應用位於同一台機器。應用調用本機上的librados API,再由後者通過Socket與RADOS集群中的節點通信並完成各種操作。

這一層包括了RADOS GW(RADOS Gateway)、 RBD(Reliable Block Device)和Ceph FS(Ceph File System)三個高層存儲應用介面,其作用是在librados庫的基礎上提供抽象層次更高、更便於應用或客戶端使用的上層介面。

RADOS GW是一個提供與Amazon S3和Swift兼容的RESTful API的Gateway,以供相應的對象存儲應用開發使用。RADOS GW提供的API抽象層次更高,但功能則不如librados強大。因此,開發者應針對自己的需求選擇使用。

RBD則提供了一個標準的塊設備介面,常用於在虛擬化的場景下為虛擬機創建Volume。如前所述,Red Hat已經將RBD驅動集成在KVM/QEMU中,以提高虛擬機訪問性能。

CephFS是一個POSIX兼容的分散式文件系統。目前還處在開發狀態,因而Ceph官網並不推薦將其用於生產環境中。

Ceph Client是基於Fuse層(User SpacE)和VFS文件系統開發,兼容Posix介面標準。在Ceph存儲系統中,Ceph Metadata Daemon 提供了元數據伺服器,而Ceph Object Storage Daemon 提供了數據和元數據的實際存儲。

Ceph對DFS、Block和Object數據寫入和讀取,都需Client利用Crush演算法(負責集群中的數據放置和檢索的演算法)完成存儲位置計算和數據組裝。

Gluster FS系統架構

Gluster FS由Brick Server、Client和NAS網關組成(用來訪問存儲服務,但是Client只支持Linux,其他系統需要NAS網關提供存儲服務),三者可以部署到同一個物理伺服器上。NAS網關通過啟動GLFS Client提供存儲服務。

每個文件通過一定策略分不到不同的Brick Server上,每個Brick Server通過運行不同進程處理數據請求,文件以原始格式以EXT、XFS和ZFS文件系統的保存在本地。

卷(Block)通過位於Client或NAS網關上的卷管理器來提供服務,由卷管理器管理集群中的多個Brick Server。存儲節點(Brick Server)對外提供的服務目錄稱作Brick,一個Brick對應一個本地文件系統,Gluster FS以Brick為單位管理存儲。

GlusterFS採用模塊化、堆棧式的架構,可通過靈活的配置支持高度定製化的應用環境,比如大文件存儲、海量小文件存儲、雲存儲、多傳輸協議應用等。每個功能以模塊形式實現,然後以積木方式進行簡單的組合,即可實現複雜的功能。比如,Replicate模塊可實現RAID1,Stripe模塊可實現RAID0,通過兩者的組合可實現RAID10和RAID01,同時獲得高性能和高可靠性。

各個功能模塊就是一個Xlator(translator),不同的xlator在初始化後形成樹,每個xlator為這棵樹中的節點動態載入,同一個xlaror可以同時在Client/Brick Server上載入。GlusterFS系統詳細架構請參看「Gluster FS分散式文件系統」文章。

GlusterFS和Ceph對比

GlusterFS和Ceph是兩個靈活的存儲系統,有著相似的數據分布能力,在雲環境中表現非常出色。在嘗試了解GlusterFS與Ceph架構之後,我們來看看兩者之間的簡單對比。

縱向擴展和橫向擴展:在雲環境中,必須可以很容易地向伺服器添加更多存儲空間以及擴展可用存儲池。Ceph和GlusterFS都可以通過將新存儲設備集成到現有存儲產品中,滿足擴充性能和容量的要求。

高可用性:GlusterFS和Ceph的複製是同時將數據寫入不同的存儲節點。這樣做的結果是,訪問時間增加,數據可用性也提高。在Ceph中,默認情況下將數據複製到三個不同的節點,以此確保備份始終可用性。

商品化硬體:GlusterFS和Ceph是在Linux操作系統之上開發的。因此,對硬體唯一的要求是這些產品具有能夠運行Linux的硬體。任何商品化硬體都可以運行Linux操作系統,結果是使用這些技術的公司可以大大減少在硬體上的投資——如果他們這樣做的話。然而,實際上,許多公司正在投資專門用於運行GlusterFS或Ceph的硬體,因為更快的硬體可以更快地訪問存儲。

去中心化:在雲環境中,永遠不應該有中心點故障。對於存儲,這意味著不應該用一個中央位置存儲元數據。GlusterFS和Ceph實現了元數據訪問去中心化的解決方案,從而降低了存儲訪問的可用性和冗餘性。

現在再來談談GlusterFS與Ceph的差異。顧名思義,GlusterFS是來自Linux世界的文件系統,並且遵守所有Portable Operating System Interface標準。儘管你可以將GlusterFS輕鬆集成到面向Linux的環境中,但在Windows環境中集成GlusterFS很難。

Ceph是一種全新的存儲方法,對應於Swift對象存儲。在對象存儲中,應用程序不會寫入文件系統,而是使用存儲中的直接API訪問寫入存儲。因此,應用程序能夠繞過操作系統的功能和限制。如果已經開發了一個應用程序來寫入Ceph存儲,那麼使用哪個操作系統無關緊要。結果表明Ceph存儲在Windows環境中像在Linux環境中一樣容易集成。

基於API的存儲訪問並不是應用程序可以訪問Ceph的唯一方式。為了最佳的集成,還有一個Ceph塊設備,它可以在Linux環境中用作常規塊設備,使你可以像訪問常規Linux硬碟一樣來使用Ceph。Ceph還有CephFS,它是針對Linux環境編寫的Ceph文件系統。

最近SUSE添加了一個iSCSI介面,使得運行iSCSI客戶端的客戶端能像任何其他iSCSI目標一樣訪問Ceph存儲。所有這些功能使得Ceph成為異構環境的更好選擇,而不僅僅是使用Linux操作系統。所以Ceph是一個更靈活的產品,更容易集成到非Linux環境中。對於許多公司來說,這足以讓它們在Ceph而不是GlusterFS上構建存儲產品。對於僅運行Linux的環境,此功能不夠有說服力,所以來談談另一個非常重要的事情——速度

為了比較GlusterFS與Ceph哪個更快已經進行了幾項測試,但迄今為止沒有確切的結論。GlusterFS存儲演算法更快,並且由於GlusterFS以磚組織存儲的方式實現了更多的分層,這在某些場景下(尤其是使用非優化Ceph)可能導致更快的速度。另一方面,Ceph提供了足夠的定製功能來使其與GlusterFS一樣快。

然而,實踐表明Ceph訪問存儲的不同方法使其成為更流行的技術。更多的公司正在考慮Ceph技術而不是GlusterFS,而且GlusterFS仍然與Red Hat密切相關。例如,SUSE還沒有GlusterFS的商業實施,而Ceph已經被開源社區廣泛採用,市場上有各種不同的產品。在某種意義上來說,Ceph確實已經勝過GlusterFS。

溫馨提示:

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 架構師技術聯盟 的精彩文章:

X86新技術授權遇阻,國產X86晶元廠商前景黯淡!
全方位掌握OpenStack技術知識

TAG:架構師技術聯盟 |