Swift和Ceph都是開源的對象存儲系統(tǒng)。不過,盡管他們有很多相似之處,當(dāng)選擇其中一個作為OpenStack存儲時有一些差異之處需要考量。
兩種最常見的OpenStack存儲選項分別是作為OpenStack項目一部分的Swift,以及獨立的開源系統(tǒng)Ceph。這兩個選項都提供對象存儲,并且可以免費下載。也因為這個原因,我們可能很難在這兩者之間進行選擇。以下所述是對OpenStack存儲Swift和Ceph進行評估時通常需要考慮的方面。
支持對于Swift和Ceph來說都是一個挑戰(zhàn)——這里有兩種選擇。企業(yè)可以增加員工來處理底層硬件和開源軟件,或者購買一個有支持的發(fā)布版本,附帶軟件支持和配置的專業(yè)知識。
許多廠商都支持Swift,每家都提供自己的OpenStack版本。支持可以是純軟件或者也同時包括硬件,比如購買一家供應(yīng)商預(yù)集成的OpenStack系統(tǒng)。直到幾年前,Ceph都是由初創(chuàng)公司Inktank支持,但現(xiàn)在已經(jīng)由紅帽全面支持。有很多廠商銷售預(yù)集成好的Ceph設(shè)備并負(fù)責(zé)硬件的支持。
采購和支持都是在某種公平競爭的市場環(huán)境中。確保售后的附加驅(qū)動器價格是否合理,因為某些主流供應(yīng)商要求驅(qū)動器價格上的巨大漲幅。一般來說,Ceph的廠商使用商用現(xiàn)成的驅(qū)動器,并允許用戶從分銷商處購買標(biāo)準(zhǔn)的驅(qū)動器,而一些Swift廠商則更專有,要求你購買他們的驅(qū)動器。
Swift和Ceph的功能成熟度對比
Ceph是一個成熟的產(chǎn)品,已經(jīng)獲得了很多的使用。但它并不是完美的,因為Ceph的部分組件,如對象存儲守護進程(OSD)的代碼,仍然在大改中。Ceph還支持文件和塊IO訪問模式,并且CERN已經(jīng)證明了Ceph可以擴展到很大的規(guī)模。
Swift也算成熟。然而,大規(guī)模的OpenStack部署仍然很罕見,因此Swift的可擴展性在某種程度上還沒有被真正測試。Swift在Ceph之后幾年也進入了該領(lǐng)域,并且之后一直在努力的追趕Ceph。其結(jié)果是,一些Swift的開發(fā)人員目前主要關(guān)注在那些有助于Swift進一步區(qū)別于Ceph的功能細(xì)節(jié)上。
而這目前導(dǎo)致了Swift專有API的發(fā)展,該API不但不同于Ceph的API,與亞馬遜簡單存儲系統(tǒng)的API也不相同。然而對于另一套接口的抗拒正在產(chǎn)生,除非有非常有力的理由可以支持這種分歧,否則Ceph的市場份額可能會因此增長。
從路線圖可以看出,Ceph Special Interest Group正在明確的構(gòu)建更好的方案。紅帽與SanDisk最近一起合作來改善Ceph的SSD和閃存性能,預(yù)期硬盤的使用情況在未來幾年內(nèi)會下降。然而一個已知的Ceph短板是后端流量的緊張可能造成性能的瓶頸。擦除編碼,而不是復(fù)制,提高了流量水平,而紅帽和Mellanox的合作伙伴關(guān)系使遠(yuǎn)程直接內(nèi)存訪問和快速局域網(wǎng)連接成為可能,從而可以提高吞吐量和響應(yīng)時間。
據(jù)紅帽表示,進一步改進正在進行中。例如,Ceph負(fù)責(zé)驅(qū)動存儲設(shè)備的OSD代碼,正在重寫并進行了性能調(diào)優(yōu)。Ceph代碼在結(jié)構(gòu)上已經(jīng)為軟件定義基礎(chǔ)架構(gòu)做好了準(zhǔn)備,并且可以輕松地虛擬化和復(fù)制。這使得Ceph適用于超融合架構(gòu)配置。
Swift和Ceph在數(shù)據(jù)一致性上的差異
Swift和Ceph在數(shù)據(jù)一致性管理上存在差異。Swift提供最終一致性,即一些數(shù)據(jù)對象從第一次拷貝之后的副本是以異步的方式寫入。這有可能會造成因為未完成的更新而返回錯誤的數(shù)據(jù),但當(dāng)副本位于不同的地理區(qū)域時運作良好。
Ceph則使用同步的進程,需要額定數(shù)量的副本被寫入才能確認(rèn)寫入完成。這保證了一致性,但增加了延遲,如果遠(yuǎn)程站點必須是定額寫入的一部分。你可以通過選擇合適的副本放置地點或者通過設(shè)置上的控制來解決這些問題。這對于Swift的不完整寫入問題也同樣適用,可以用write_affinity的設(shè)置強制在多本地寫入的基礎(chǔ)上加上定額。
雖然寫定額的問題對于性能來說有巨大的影響,但這可以通過只使用本地存儲來解決。
在這場Swift和Ceph競爭OpenStack存儲的比賽中,Ceph的贏面很大,至少現(xiàn)在來看是這樣。但是要給出一個完善的OpenStack存儲方案,重要的是要解決塊IO的問題。OpenStack Cinder項目就是為了這個目的,為各種各樣的基于SAN和LAN的網(wǎng)絡(luò)存儲提供一個統(tǒng)一的前端。傳統(tǒng)的塊IO軟件,如iSCSI,會在這些地方使用。目前沒有可以同Cinder競爭的軟件棧。