Ceph與Gluster之開源存儲的對比


一、Ceph與Gluster之開源存儲的對比

  一、Ceph與Gluster的原理對比

  Ceph和Gluster是Red Hat旗下的成熟的開源存儲產品,Ceph與Gluster在原理上有着本質上的不同。

  1、Ceph

  Ceph基於一個名為RADOS的對象存儲系統,使用一系列API將數據以塊(block)、文件(file)和對象(object)的形式展現。Ceph存儲系統的拓撲結構圍繞着副本與信息分布,這使得該系統能夠有效保障數據的完整性。

  2、Gluster

  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算法(負責集群中的數據放置和檢索的算法)完成存儲位置計算和數據組裝。Ceph架構詳細介紹請參考“Ceph存儲架構深度分析”文章。

  三、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對比

  1、GlusterFS和Ceph的簡單對比

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

  

  2、GlusterFS和Ceph的共同點

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

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

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

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

   3、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文件系統。

  4、GlusterFS與Ceph的速度對比

  GlusterFS存儲算法更快,並且由於GlusterFS以磚組織存儲的方式實現了更多的分層,這在某些場景下(尤其是使用非優化Ceph)可能導致更快的速度。另一方面,Ceph提供了足夠的定制功能來使其與GlusterFS一樣快。

   5、GlusterFS與Ceph的應用

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM