自O(shè)penStack第一次發(fā)布以來(lái),已經(jīng)差不多八年了。OpenStack已經(jīng)向大家證明它有望在開源私有云上開啟新時(shí)代。
我們見證了OpenStack的起起落落,現(xiàn)在它進(jìn)入了一個(gè)更成熟的階段。
三年前我們?cè)P(guān)注過(guò)存儲(chǔ)組件,那么這三年來(lái),OpenStack使用存儲(chǔ)的方式有哪些變化和演變?而且伴隨著OpenStack變得更加主流,它如何適應(yīng)更廣泛的存儲(chǔ)生態(tài)系統(tǒng)?
OpenStack 101
最初的OpenStack平臺(tái)源自Rackspace和NASA之間的合作,帶來(lái)了一個(gè)私有云的開源生態(tài)系統(tǒng)。OpenStack是在Apache軟件許可下開發(fā)和發(fā)行的,它允許免費(fèi)發(fā)行,也允許廠商修改原始代碼。
該平臺(tái)由許多項(xiàng)目組成,每個(gè)項(xiàng)目都管理著私有云基礎(chǔ)設(shè)施的一個(gè)典型部分。首先要開發(fā)的是虛擬實(shí)例、網(wǎng)絡(luò)和對(duì)象存儲(chǔ)。每個(gè)項(xiàng)目都分配了一個(gè)名稱——Nova是虛擬機(jī)的編排引擎,而Neutron實(shí)現(xiàn)了網(wǎng)絡(luò)。
三個(gè)主要的存儲(chǔ)項(xiàng)目是:Cinder——塊存儲(chǔ)支持、Swift——對(duì)象存儲(chǔ)支持、Manila——文件存儲(chǔ)支持。
可以將這三個(gè)項(xiàng)目視為核心存儲(chǔ)基礎(chǔ)設(shè)施。還有其他一些項(xiàng)目以應(yīng)用程序數(shù)據(jù)為重點(diǎn),包括Trove(數(shù)據(jù)庫(kù)即服務(wù))和Sahara(大數(shù)據(jù)處理)。一些存儲(chǔ)項(xiàng)目與其他OpenStack服務(wù)集成,例如實(shí)現(xiàn)身份管理的Keystone。
OpenStack差不多每六個(gè)月生成一個(gè)新版本,當(dāng)前的第18版Rocky于2018年8月底發(fā)布。單個(gè)項(xiàng)目可能在新版本之間發(fā)布多個(gè)版本,例如Swift就是如此。
在討論存儲(chǔ)項(xiàng)目的一些更新時(shí),我們將重點(diǎn)介紹一些更值得注意的更新和增強(qiáng)功能。由于更新的數(shù)量之多,本文并沒(méi)有列出所有內(nèi)容,建議你閱讀每個(gè)版本的OpenStack發(fā)布時(shí)的在線發(fā)布說(shuō)明。
塊存儲(chǔ)支持
Cinder項(xiàng)目為持久塊存儲(chǔ)提供支持,可以將其掛載到運(yùn)行應(yīng)用程序的虛擬實(shí)例(虛擬機(jī))。這通過(guò)OpenStack服務(wù)器基礎(chǔ)設(shè)施上的LVM(邏輯卷管理器)或插件分解為本地支持,以支持傳統(tǒng)供應(yīng)商的外部存儲(chǔ)平臺(tái)。
與所有OpenStack組件一樣,存儲(chǔ)的配置由API驅(qū)動(dòng),基于供應(yīng)商的插件提供了一個(gè)轉(zhuǎn)換層,可將Cinder卷映射到供應(yīng)商平臺(tái)上的存儲(chǔ)卷。
Cinder最初被引入到Folsom版本(2012年9月)中,隨著時(shí)間的推移,供應(yīng)商不斷增加驅(qū)動(dòng)程序支持。
但是,支持程度差異很大。例如,許多供應(yīng)商不支持將快照作為新虛擬機(jī)掛載的功能。
即使在同一家公司內(nèi),功能支持也不一致。例如,Dell EMC PowerMax支持的功能遠(yuǎn)遠(yuǎn)超過(guò)Dell EMC的PS系列。這可能反映了公司內(nèi)各個(gè)開發(fā)人員組的優(yōu)先級(jí)以及對(duì)特定存儲(chǔ)平臺(tái)的長(zhǎng)期支持。當(dāng)然,并非每個(gè)存儲(chǔ)供應(yīng)商都能夠提供其產(chǎn)品中不存在的功能,例如,服務(wù)質(zhì)量?jī)H有一小部分存儲(chǔ)供應(yīng)商能實(shí)現(xiàn)。
可以說(shuō),在最近的OpenStack版本中,Cinder引入的功能更是漸進(jìn)式的。許多功能縮小了通常在其他生態(tài)系統(tǒng)中可用的差距,或?yàn)樾庐a(chǎn)品平臺(tái)引入新的驅(qū)動(dòng)程序。
對(duì)象存儲(chǔ)支持
Swift提供對(duì)象支持。Swift是一種橫向擴(kuò)展對(duì)象存儲(chǔ)平臺(tái),可為對(duì)象類型數(shù)據(jù)提供高耐用性和可用性。
與文件系統(tǒng)相比,對(duì)象存儲(chǔ)通常提供更高的可伸縮性和分布式數(shù)據(jù)訪問(wèn),同時(shí)犧牲了POSIX合規(guī)性的優(yōu)勢(shì)。對(duì)于大量通常為靜態(tài)或只讀的內(nèi)容,對(duì)象存儲(chǔ)可以是比橫向擴(kuò)展文件系統(tǒng)更具成本效益的解決方案。
Cinder主要用作存儲(chǔ)供應(yīng)商平臺(tái)的接口,而Swift本身就是一個(gè)對(duì)象存儲(chǔ)。像SwiftStack這樣的公司建立在OpenStack Swift之上,以創(chuàng)建更成熟的解決方案。
但是,擁有提供本地支持的平臺(tái)的存儲(chǔ)供應(yīng)商可以輕松代替本地Swift實(shí)現(xiàn)。這是因?yàn)閷?duì)象存儲(chǔ)平臺(tái)本身由遵循Swift或S3標(biāo)準(zhǔn)的API驅(qū)動(dòng)。
Swift比Cinder或Manila更新更為頻繁,每次主要的OpenStack版本都會(huì)發(fā)布多次更新(通常每?jī)蓚€(gè)月一次)。最新的功能2.18在Rocky引入,包括容器分片(改進(jìn)的元數(shù)據(jù)分發(fā)功能)和S3 API兼容性。還有內(nèi)部?jī)?yōu)化來(lái)滿足單個(gè)存儲(chǔ)驅(qū)動(dòng)器容量和服務(wù)器存儲(chǔ)密度的增長(zhǎng)。
文件存儲(chǔ)支持
通過(guò)Manila項(xiàng)目提供對(duì)文件訪問(wèn)的支持。
最初,文件服務(wù)旨在作為Cinder的一部分提供,但在2013年,Manila被分割為一個(gè)單獨(dú)的項(xiàng)目。與塊支持相比,文件的用例很容易看到,存在于公有云以及VMware等其他平臺(tái)中。通常,塊設(shè)備在虛擬機(jī)或?qū)嵗g不可共享。文件服務(wù)提供該功能以及添加其他增強(qiáng)功能,如安全性和更好的可伸縮性。
Manila與Cinder的設(shè)計(jì)保持一致,因?yàn)楣?yīng)商編寫的插件可以提供配置自動(dòng)化和將文件系統(tǒng)映射到虛擬實(shí)例。但是,盡管Cinder提供了每個(gè)驅(qū)動(dòng)程序支持的功能矩陣,但Manila驅(qū)動(dòng)程序更加定制化,并且支持每個(gè)文件系統(tǒng)供應(yīng)商的特定選項(xiàng)。
最初,Manila支持標(biāo)準(zhǔn)文件系統(tǒng),包括NFS和CIFS。隨著時(shí)間的推移,擴(kuò)展到更多專有解決方案,如Gluster、Ceph、Hadoop File System和MapR。
Ocata版本在快照功能上做了很多工作。包括使用可安裝(臨時(shí))快照來(lái)恢復(fù)數(shù)據(jù)的功能、將文件共享還原為以前的快照,以及將快照從一個(gè)平臺(tái)遷移到另一個(gè)平臺(tái)的功能。遷移API已擴(kuò)展為兩階段流程,可在遷移過(guò)程中訪問(wèn)數(shù)據(jù)。
挑戰(zhàn)
由于OpenStack作為一組獨(dú)立項(xiàng)目運(yùn)行,因此功能實(shí)現(xiàn)并不總是一致的。正如我們所提到的,Cinder的驅(qū)動(dòng)程序生態(tài)系統(tǒng)遠(yuǎn)遠(yuǎn)大于Manila的驅(qū)動(dòng)程序生態(tài)系統(tǒng),文檔也更完善。
所有OpenStack存儲(chǔ)項(xiàng)目的發(fā)展而突出的一個(gè)主要問(wèn)題是需要升級(jí)軟件以引入新的供應(yīng)商驅(qū)動(dòng)程序或驅(qū)動(dòng)程序功能。這在維護(hù)對(duì)外部存儲(chǔ)平臺(tái)的支持的過(guò)程中引入了顯著的開銷。
在容器生態(tài)系統(tǒng)中采用的解決方案是開發(fā)容器存儲(chǔ)接口(CSI),它從驅(qū)動(dòng)程序本身抽象出驅(qū)動(dòng)程序規(guī)范。然后可以安裝、替換或升級(jí)單個(gè)供應(yīng)商驅(qū)動(dòng)程序,而無(wú)需更新核心容器軟件。OpenStack存儲(chǔ)項(xiàng)目非常需要這種設(shè)計(jì)。
結(jié)論
由于現(xiàn)在已完成整合存儲(chǔ)的大部分主要工作,未來(lái)的開發(fā)是向添加功能和支持新平臺(tái)的過(guò)渡。
這意味著OpenStack項(xiàng)目更側(cè)重于運(yùn)營(yíng)數(shù)據(jù)服務(wù)而不是基礎(chǔ)設(shè)施。像Freezer(備份和災(zāi)難恢復(fù))這樣的新項(xiàng)目將是未來(lái)發(fā)展的地方。