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

Ceph基于一個名為RADOS的對象存儲系統(tǒng),使用一系列API將數(shù)據(jù)以塊(block)、文件(file)和對象(object)的形式展現(xiàn)。Ceph存儲系統(tǒng)的拓?fù)浣Y(jié)構(gòu)圍繞著副本與信息分布,這使得該系統(tǒng)能夠有效保障數(shù)據(jù)的完整性。

Ceph和Gluster是Red Hat旗下的成熟的開源存儲產(chǎn)品,Ceph與Gluster在原理上有著本質(zhì)上的不同。Ceph基于一個名為RADOS的對象存儲系統(tǒng),使用一系列API將數(shù)據(jù)以塊(block)、文件(file)和對象(object)的形式展現(xiàn)。Ceph存儲系統(tǒng)的拓?fù)浣Y(jié)構(gòu)圍繞著副本與信息分布,這使得該系統(tǒng)能夠有效保障數(shù)據(jù)的完整性。

Gluster描述為Scale-out NAS和對象存儲系統(tǒng)。它使用一個Hash算法來計算數(shù)據(jù)在存儲池中的存放位置,這點跟Ceph很類似。在Gluster中,所有的存儲服務(wù)器使用Hash算法完成對特定數(shù)據(jù)實體的定位。于是數(shù)據(jù)可以很容易的復(fù)制,并且沒有中心元數(shù)據(jù)分布式存儲無單點故障且不易造成訪問瓶頸,這種單點在早期Hadoop上出現(xiàn),對性能和可靠性造成較大影響。

Ceph文件系統(tǒng)架構(gòu)

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

RADOS在物理形態(tài)上由大量的存儲設(shè)備節(jié)點組成,每個節(jié)點擁有自己的硬件資源(CPU、內(nèi)存、硬盤、網(wǎng)絡(luò)),并運(yùn)行著操作系統(tǒng)和文件系統(tǒng)?;A(chǔ)庫librados是對RADOS進(jìn)行抽象和封裝,并向上層提供不同API,以便直接基于RADOS進(jìn)行原生對象或上層對象、塊和文件應(yīng)用開發(fā)。特別要注意的是,RADOS是一個對象存儲系統(tǒng),因此,基于librados實現(xiàn)的API也只是針對對象存儲功能的。

RADOS所提供的原生librados API包括C和C++兩種。Librados在部署上和基于其上開發(fā)的應(yīng)用位于同一臺機(jī)器。應(yīng)用調(diào)用本機(jī)上的librados API,再由后者通過Socket與RADOS集群中的節(jié)點通信并完成各種操作。

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

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

RBD則提供了一個標(biāo)準(zhǔn)的塊設(shè)備接口,常用于在虛擬化的場景下為虛擬機(jī)創(chuàng)建Volume。如前所述,Red Hat已經(jīng)將RBD驅(qū)動集成在KVM/QEMU中,以提高虛擬機(jī)訪問性能。

CephFS是一個POSIX兼容的分布式文件系統(tǒng)。目前還處在開發(fā)狀態(tài),因而Ceph官網(wǎng)并不推薦將其用于生產(chǎn)環(huán)境中。

Ceph Client是基于Fuse層(User SpacE)和VFS文件系統(tǒng)開發(fā),兼容Posix接口標(biāo)準(zhǔn)。在Ceph存儲系統(tǒng)中,Ceph Metadata Daemon 提供了元數(shù)據(jù)服務(wù)器,而Ceph Object Storage Daemon 提供了數(shù)據(jù)和元數(shù)據(jù)的實際存儲。

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

Gluster FS系統(tǒng)架構(gòu)

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

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

卷(Block)通過位于Client或NAS網(wǎng)關(guān)上的卷管理器來提供服務(wù),由卷管理器管理集群中的多個Brick Server。存儲節(jié)點(Brick Server)對外提供的服務(wù)目錄稱作Brick,一個Brick對應(yīng)一個本地文件系統(tǒng),Gluster FS以Brick為單位管理存儲。

GlusterFS采用模塊化、堆棧式的架構(gòu),可通過靈活的配置支持高度定制化的應(yīng)用環(huán)境,比如大文件存儲、海量小文件存儲、云存儲、多傳輸協(xié)議應(yīng)用等。每個功能以模塊形式實現(xiàn),然后以積木方式進(jìn)行簡單的組合,即可實現(xiàn)復(fù)雜的功能。比如,Replicate模塊可實現(xiàn)RAID1,Stripe模塊可實現(xiàn)RAID0,通過兩者的組合可實現(xiàn)RAID10和RAID01,同時獲得高性能和高可靠性。

各個功能模塊就是一個Xlator(translator),不同的xlator在初始化后形成樹,每個xlator為這棵樹中的節(jié)點動態(tài)加載,同一個xlaror可以同時在Client/Brick Server上加載。GlusterFS系統(tǒng)詳細(xì)架構(gòu)請參看“Gluster FS分布式文件系統(tǒng)”文章。

GlusterFS和Ceph對比

GlusterFS和Ceph是兩個靈活的存儲系統(tǒng),有著相似的數(shù)據(jù)分布能力,在云環(huán)境中表現(xiàn)非常出色。在嘗試了解GlusterFS與Ceph架構(gòu)之后,我們來看看兩者之間的簡單對比。

另外,從searchstorage網(wǎng)站上也找到一篇分析Ceph和GlusterFS的文章,結(jié)合Google翻譯并整理成文,供大家參考。英文好的讀者建議點擊“原文鏈接”閱讀英文版原文。

縱向擴(kuò)展和橫向擴(kuò)展:在云環(huán)境中,必須可以很容易地向服務(wù)器添加更多存儲空間以及擴(kuò)展可用存儲池。Ceph和GlusterFS都可以通過將新存儲設(shè)備集成到現(xiàn)有存儲產(chǎn)品中,滿足擴(kuò)充性能和容量的要求。

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

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

去中心化:在云環(huán)境中,永遠(yuǎn)不應(yīng)該有中心點故障。對于存儲,這意味著不應(yīng)該用一個中央位置存儲元數(shù)據(jù)。GlusterFS和Ceph實現(xiàn)了元數(shù)據(jù)訪問去中心化的解決方案,從而降低了存儲訪問的可用性和冗余性。

現(xiàn)在再來談?wù)凣lusterFS與Ceph的差異。顧名思義,GlusterFS是來自Linux世界的文件系統(tǒng),并且遵守所有Portable Operating System Interface標(biāo)準(zhǔn)。盡管你可以將GlusterFS輕松集成到面向Linux的環(huán)境中,但在Windows環(huán)境中集成GlusterFS很難。

Ceph是一種全新的存儲方法,對應(yīng)于Swift對象存儲。在對象存儲中,應(yīng)用程序不會寫入文件系統(tǒng),而是使用存儲中的直接API訪問寫入存儲。因此,應(yīng)用程序能夠繞過操作系統(tǒng)的功能和限制。如果已經(jīng)開發(fā)了一個應(yīng)用程序來寫入Ceph存儲,那么使用哪個操作系統(tǒng)無關(guān)緊要。結(jié)果表明Ceph存儲在Windows環(huán)境中像在Linux環(huán)境中一樣容易集成。

基于API的存儲訪問并不是應(yīng)用程序可以訪問Ceph的唯一方式。為了最佳的集成,還有一個Ceph塊設(shè)備,它可以在Linux環(huán)境中用作常規(guī)塊設(shè)備,使你可以像訪問常規(guī)Linux硬盤一樣來使用Ceph。Ceph還有CephFS,它是針對Linux環(huán)境編寫的Ceph文件系統(tǒng)。

最近SUSE添加了一個iSCSI接口,使得運(yùn)行iSCSI客戶端的客戶端能像任何其他iSCSI目標(biāo)一樣訪問Ceph存儲。所有這些功能使得Ceph成為異構(gòu)環(huán)境的更好選擇,而不僅僅是使用Linux操作系統(tǒng)。所以Ceph是一個更靈活的產(chǎn)品,更容易集成到非Linux環(huán)境中。對于許多公司來說,這足以讓它們在Ceph而不是GlusterFS上構(gòu)建存儲產(chǎn)品。對于僅運(yùn)行Linux的環(huán)境,此功能不夠有說服力,所以來談?wù)劻硪粋€非常重要的事情——速度。

為了比較GlusterFS與Ceph哪個更快已經(jīng)進(jìn)行了幾項測試,但迄今為止沒有確切的結(jié)論。GlusterFS存儲算法更快,并且由于GlusterFS以磚組織存儲的方式實現(xiàn)了更多的分層,這在某些場景下(尤其是使用非優(yōu)化Ceph)可能導(dǎo)致更快的速度。另一方面,Ceph提供了足夠的定制功能來使其與GlusterFS一樣快。

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

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論