Gluster和Ceph對比


在學習和使用Gluster/Ceph的時候,一直有些疑惑,為什么會有有這樣兩個著名的開源分布式存儲、兩者的差異是什么、哪個更適合我的應用場景、哪個未來發展方向更好?並且,Gluster和Ceph都屬於Red Hat所有,這家在開源界舉足輕重的公司是如何考慮存儲戰略,又會如何發展這兩個開源項目?

注解

本文綜合網上資料撰寫,我准備今后部署ceph和glusterfs進行相關測試和驗證,通過實踐來驗證和對比不同的開源解決方案。

一句話概括

Ceph適合非結構化數據存儲,其對象存儲特性適合雲計算環境實時訪問的虛擬機鏡像和虛擬機磁盤。

Gluster適合結構化數據,采用傳統的樹形文件系統,適合海量大文件存儲以及流式數據順序讀寫,適合近線存儲、數據歸檔環境。

區別

Ceph和Gluster是完全不同的解決方案,適用於不同的業務場景,雖然兩者的功能有所重疊:

  • Ceph是首先存儲為對象的存儲方案。從Ceph的發展歷史來看,它是在常規文件系統(通常是XFS)之上構建的對象存儲層,對於底層硬件的低級IOPs/throughput的運行則非常緩慢(按:這個觀點待驗證)。現在Ceph開發了新型的”bluestore”存儲引擎,試圖讓Ceph直接處理數據寫入磁盤而無需底層文件系統。所有Ceph操作都是圍繞對象,完全基於RADOS,即內部的對象層。

  • Ceph-FS則是對象之上的數據塊。除非你的應用能夠直接訪問原生的RADOS(可能大多數應用做不到),否則你就必須使用一個轉換層來實現,例如swift/S3 to RADOS。

  • Geph 當前也提供了POSIX兼容文件系統,但是開發和維護歷史還不及Gluster,有待觀察對比。

  • Gluster和Ceph架構基礎相反,Gluster是首先存儲文件,最終也存儲為文件,以及中間層大多數也是文件。

注解

這里對Ceph首先存儲為對象是指Ceph軟件在存儲數據到XFS文件系統之前,是將數據作為對象處理,再轉換成文件系統文件。而Gluster從一開始就是存儲文件,最終存儲到XFS文件文件系統依然是文件。

  • Gluster結構相對簡單,易於部署,所以也方便在其上部署容器,虛擬機等。

  • Gluster建議運行在XFS之上,底層輔助LVM實現快照

注解

RedHat不建議在Gluster底層使用ZFS,因為其存在Bug。事實上,我自己的多年前的ZFS+Gluster實踐遇到過數據錯亂問題)。此外,不建議在Gluster底層使用EXT和btrfs。

  • Gluster現在也具備了一個數據塊層,以及一個對象層(swift),這些層都是位於原生的glusterfs文件系統之上。要使他們正常運行,必須使用不同級別的技巧。

  • Gluster可以擴展到極大的存儲容量,但是在文件數量龐大的情況下存在性能問題,這是因為Metadata性能限制。

  • Gluster不適合交易類場景,例如數據庫,或者其他依賴實時嚴格鎖的應用,類似的還有VMware(VMware和Gluster都已經支持NFSv4.1,但是運行glusterfs+gNFS over NFSv3則運行異常)(注意:這個場景需要驗證,有可能NFSv4.1運行數據庫類應用是可行的…)

  • Gluster適合大型流文件,性能卓越。例如,在數PB的linux ISO或游戲數據流,則非常適合Gluster。

  • Gluster和其他開源軟件類似,缺乏統一的管理系統:Gluster依賴OS,LVM,VDO,文件系統以及其他存儲層,如RAID卡,然而缺乏整體的管理平台接解決方案,你需要自己深入掌握並構建系統。少量節點尚可以忍受,海量服務器節點則是一個巨大的挑戰。當前正在發展的 GlusterD 2.0 提供了restful api,也是 Cockpit服務器統一管理平台 的 cockpit-gluster 插件的運行基礎,可以實現統一管控。

注解

Red Hat企業版Gluster存儲采用了 Tendrl 軟件定義存儲(SDS) 來管理 Ceph Atlas 和 Gluster Atlas ,這是一個值得研究和借鑒的解決方案。

注解

Ceph有些類似阿里雲的盤古+oss的存儲系統,面向對象存儲,后期擴展出POSIX兼容文件系統以及塊存儲層。對於能夠直接使用對象存儲的OpenStack運計算系統,是一個比較全面的存儲解決方案。但性能和穩定性需要投入大量的精力來達到預期目標。

適用場景

RedHat的副總裁兼總經理Ranga Rangachari描述Gluster和Ceph之間的區別如下:

Ceph是OpenStack架構的組成部分,大多數OpenStack實現都采用Cep作為存儲子系統。Gluster則是經典的文件服務,常作為第二層存儲和深度歸檔。

簡而言之,Ceph和Gluster都是強大的存儲,但是Gluster更易於伸縮,可以存儲TB到PB的數據。Ceph則提供了快速的存儲擴展,但是存儲格式使其適合用戶頻繁訪問的短時間存儲。

注解

你可以理解成Ceph適合作為用戶實時訪問數據存儲,也就是運計算的虛擬機實例磁盤存儲。而Gluster則適合文件歸檔,近線數據存儲。

Ceph是從對象存儲發展到塊存儲和文件存儲;Gluster則從文件存儲發展到對象存儲。

Ceph使用對象存儲,意味着存儲數據以二進制對象分布到大量的服務器上。Ceph提供了OpenStac私有雲存儲支持,並且用戶可以在一套存儲中混合非結構和結構數據。

Gluster使用塊存儲,即存儲一系列數據到chunks,並分布到邏輯連接在一個統一命名空間的大量服務器上。Gluster提供了傳統存儲和文件傳輸協議支持,並且提供了高度伸縮和故障容災支持。

決策采用Ceph或Gluster取決於數據存儲類型,數據如何訪問,以及數據存儲在哪里。

非結構化數據的對象存儲: Ceph

  • Ceph本質上是基於對象的存儲,類似Facebook存儲圖片、Dropbox存儲客戶端文件,對象存儲支持非結構化數據,所以可以實現海量數據存儲。整個存儲系統是通過集群監控器,元數據服務器和日志存儲來維護的,所以Ceph的結構較為復雜。

  • 對象存儲和基於塊的數據存儲意味着Ceph需要使用自己特殊的維護工具來管理存儲,即系統管理員需要熟悉Ceph工具。

  • Ceph也可以創建塊存儲,提供了訪問塊設備鏡像能力,並將塊設備條代化分布到整個集群。

  • Ceph通過RESTful接口支持Amazon S3和OpenStack Swift API,這樣就實現了高性能存儲訪問並兼容傳統代碼。

../_images/ceph_object_storage.png

層次樹形的塊存儲: GlusterFS

GlusterFS(也稱為Gluster),是更為傳統的文件存儲。Gluster易於部署,並且可以作為任何系統中的一個目錄來使用。

../_images/gluster_file_storage.jpg

Gluster的主要優點是易於使用,並且容易擴展和收縮,性能也比較好。請注意,Gluster比較適合大文件存儲(大於4MB)以及順序讀寫。集群可以跨物理服務器、虛擬機或雲服務器,實現可伸縮存儲虛擬化。

Gluster使用塊存儲,即數據的chunks存儲在相連的集群設備的唯一命名空間。文件和塊存儲使用層次樹形的一個文件系統。Gluster提供了基於集群的FUSE和NFS,對大多數系統管理員則是非常熟悉的底層架構。所以,Gluster相對Ceph而言更為簡單,易於維護,並且廣泛使用。但是,在特定的環境中(例如雲計算虛擬機存儲),Ceph的性能優於Gluster。

參考


免責聲明!

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



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