兩個產品Ceph和Gluster是Red Hat旗下的成熟的開源存儲產品,Ceph與GlusterFS 在原理上有着本質上的不同。但是兩個都是非常靈活的存儲系統,在雲環境中表現也是非常出色。
Ceph是什么?
Ceph基於一個名為RADOS的對象存儲系統,使用一系列API將數據以塊(block)、文件(file)和對象(object)的形式展現。Ceph存儲系統的拓撲結構圍繞着副本與信息分布,這使得該系統能夠有效保障數據的完整性。
GlusterFS是什么?
GlusterFS描述為Scale-out NAS和對象存儲系統,它使用一個Hash算法來計算數據在存儲池中的存放位置。在應用中所有的存儲服務器使用Hash算法完成對特定數據實體的定位,對於數據可以很容易的被復制,並且沒有中心元數據分布式存儲無單點故障且不易造成訪問瓶頸,這種單點在早期Hadoop上出現,對性能和可靠性造成較大影響。
GlusterFS 與 Ceph表格對比
類別 |
Ceph |
GlusterFS |
備注 |
Metadata Server |
多 個MDS, 不 存 在 單 點 故 障 和 瓶 頸 | MDS可 以 擴 展 , 不 存 在 瓶 頸 無MDS, 不 存 在 單 點 故 障 。 考 運 行 在 各 個 節 點 上 的 動 態 算 法 老 代 替MDS, 不 需 要 元 數 據 , 無 硬 盤I/O瓶 頸 |
|
FUSE | 支持 | 支持 | |
POSIX訪 問 接 口 | POSIX(Portable Operating System Interface of UNIX) |
POSIX(Portable Operating System Interface of UNIX) |
|
文 件 分 布 / 數 據 分 布 | 文件被分片,每個數據塊是一個對象, 對象保存在不同的村塾服務器上 。 | Cluster Translators(GlusterFS集群存儲的核心)包括AFR、DHT和Stripe三種類型。 AFR相當於RAID1,每個文件都被復制到多個存儲節點上。Stripe相當於RAID0,文件被分片,數據被條帶化到各個存儲節點上。Translators可以組合,即AFR和stripe可以組成RAID10,實現高性能和高可用。 |
|
冗 余 保 護 /副 本 | 副 本 | 鏡像 | |
數據可靠性 | 多副本 | 多副本 | |
故 障 修 復 | 當節點失效時,自動遷移數據、重新復制副本 | 當節點、硬盤、磁盤網絡發生故障時 ,系統會自動處 理這些故障,管理員不需介入 |
|
擴 展 性 | 可以增加元數據服務器和存儲節點,容量可擴展,文件操作性能可擴展,元數據操作性能可擴展 | 容量可擴展 | |
開 發 語 言 | C | C++ | |
適 合 場 景 | 小文件 | 適合大文件, 對於小文件,無元數據服務設計解決了元數據的問題。但GlusterFS並沒有在I/O方面作優化,在存儲服務器底層文件系統上仍然是大量小文件,本地文件系統元數據訪問是瓶頸,數據分布和並行性也無法充分發揮作用。因此,GlusterFS的小文件性能還存在很大優化空間 |
|
優 缺 點 | 不穩定,目前還在實驗階段,不適合於生產環境。官方不建議用在生產環境 | 無元數據服務器,堆棧式架構(基本功能模塊可以進行堆棧式組合,實現強大功能)。具有線性橫向擴展能力。 由於沒有元數據服務器,因此增加了客戶端的負載,占用相當的CPU和內存。 但遍歷文件目錄時,則實現較為復雜和低效,需要搜索所有的存儲節點。因此不建議使用較深的路徑。 |
GlusterFS 與 Ceph 共同點
- 縱向擴展和橫向擴展:在雲環境中,必須可以很容易地向服務器添加更多存儲空間以及擴展可用存儲池。Ceph 和 GlusterFS 都可以通過輕松將新存儲設備集成到現有存儲產品中來滿足這一要求。
- 高可用性:GlusterFS 和 Ceph 的復制是同時將數據寫入不同的存儲節點。這樣做的結果是,訪問時間增加,數據可用性也提高。在 Ceph 中,默認情況下將數據復制到三個不同的節點,這確保備份始終可用。
- 商品化硬件:GlusterFS 和 Ceph 是在 Linux 操作系統之上開發的。因此,對硬件唯一的要求是這些產品具有能夠運行 Linux 的硬件。任何商品化硬件都可以運行 Linux 操作系統,結果是使用這些技術的公司可以大大減少在硬件上的投資——如果他們這樣做的話。然而,實際上,許多公司正在投資專門用於運行 GlusterFS 或 Ceph 的硬件,因為更快的硬件可以更快地訪問存儲。
- 無中心化:在雲環境中,永遠不應該出現中心點故障問題。對於存儲,這意味着不應該用一個中央位置存儲元數據。GlusterFS 和 Ceph 實現了元數據訪問去中心化的解決方案,從而降低了存儲訪問的可用性和冗余性。
GlusterFS 與 Ceph 的差異
- GlusterFS 是來自 Linux 世界的文件系統,並且遵守所有 POSIX 標准。盡管你可以將 GlusterFS 輕松集成到面向 Linux 的環境中,但在 Windows 環境中集成 GlusterFS 很難。
- Ceph是一種全新的存儲方法,對應於Swift(OpenStack Object Storage(Swift)是OpenStack開源雲計算項目的子項目之一)對象存儲。在對象存儲中應用程序不會寫入文件系統,而是使用存儲中的直接API訪問寫入存儲。因此,應用程序能夠繞過操作系統的功能和限制。如果已經開發了一個應用程序來寫入Ceph存儲,那么使用哪個操作系統無關緊要。結果表明Ceph存儲在Windows環境中像在Linux環境中一樣容易集成。
- 基於API的存儲訪問並不是應用程序可以訪問Ceph的唯一方式。為了最佳的集成,還有一個Ceph塊設備,它可以在Linux環境中用作常規塊設備,使你可以像訪問常規Linux硬盤一樣來使用Ceph。Ceph還有CephFS,它是針對Linux環境編寫的Ceph文件系統。
GlusterFS 與 Ceph 的讀寫速度比較
模型 |
GlusterFS(iops/lat) | CephFS-Fuse(iops/lat) |
---|---|---|
4K 10G順序讀 | 5579/1.431 | 6155/1.297 |
4K 10G順序寫 | 1297/6.161 | 471/ 16.210 |
4K 10G隨機讀 | 2601/3.071 | 1321/6.050 |
4K 10G隨機寫 | 2118/3.772 | 457/17.45 |
4M 10G順序讀 | 27/289 | 36/ 219.19 |
4M 10G順序寫 | 8/910 | 5/1412.13 |
4M 10G隨機讀 | 27/288 | 27/292.63 |
4M 10G隨機寫 | 8/924 | 4/1552.01 |
結束語
Ceph是一個更靈活的產品,更容易集成到非 Linux 環境中。對於許多公司來說,這足以讓它們在 Ceph 而不是 GlusterFS 上構建存儲產品。對於僅運行 Linux 的環境,此功能不夠有說服力,所以來談談另一個非常重要的事情:速度。
所以更多的公司正在考慮Ceph技術而不是GlusterFS,而且GlusterFS仍然與Red Hat密切相關。例如,SUSE還沒有GlusterFS的商業實施,而Ceph已經被開源社區廣泛采用,市場上有各種不同的產品。在某種意義上來說,Ceph確實已經勝過GlusterFS。也有網友反映說Ceph安裝運行時候需要人工干預比GlusterFS要多,具體的還需要使用人考慮適用的場景。