OpenStack的存儲(chǔ)組件—Cinder和Swift—讓你在你的私有云里構(gòu)建塊和對(duì)象的存儲(chǔ)系統(tǒng)。Chris Evans對(duì)這些技術(shù)給出了一些深入的闡述。
在向web規(guī)模計(jì)算的轉(zhuǎn)型中,虛擬化,x86架構(gòu)的遷移和DevOps的快速應(yīng)用這樣的關(guān)鍵技術(shù)已經(jīng)轉(zhuǎn)變了整個(gè)IT的生態(tài)系統(tǒng)。隨著部署到IT的系統(tǒng)數(shù)量的持續(xù)增大,下一個(gè)挑戰(zhàn)將變成以更有效和高效的方式來編排和管理計(jì)算,存儲(chǔ)和網(wǎng)絡(luò)資源,為私有云提供服務(wù)。
OpenStack是一個(gè)開源的云計(jì)算平臺(tái)項(xiàng)目,最初是由NASA和Rackspace Hosting在2010年聯(lián)合發(fā)起的一個(gè)項(xiàng)目。源代碼是由OpenStack基金會(huì)管理并且以Apache的許可證發(fā)布,允許免費(fèi)分發(fā)和修改代碼,只要保留初始的版權(quán)聲明。OpenStack作為一個(gè)對(duì)外擴(kuò)展應(yīng)用的部署平臺(tái)而獲得普及性。很多服務(wù)提供商使用它來提供公有云服務(wù),還有一些大型組織使用OpenStack希望實(shí)現(xiàn)私有云基礎(chǔ)架構(gòu)。很重要的一點(diǎn)需要指出,OpenStack是被設(shè)計(jì)成用于那些大規(guī)模擴(kuò)展的應(yīng)用,對(duì)于部屬傳統(tǒng)的單一應(yīng)用程序諸如Microsoft Exchange或者那些構(gòu)建在類似Oracle的數(shù)據(jù)庫上的應(yīng)用不是特別適合。
OpenStack軟件包括許多不同的模塊,針對(duì)云環(huán)境中各個(gè)方面:
Swift:對(duì)象存儲(chǔ)Cinder:塊存儲(chǔ)Nova:虛擬機(jī)計(jì)算Neutron:網(wǎng)絡(luò)Horizon: 儀表盤Keystone:認(rèn)證服務(wù)Glance:鏡像服務(wù)Ceilometer:遙測(cè)Heat:編排Trove:數(shù)據(jù)庫即服務(wù)隨著每一個(gè)OpenStack的代碼發(fā)布(目前是第九個(gè)版本,叫做IceHouse),新項(xiàng)目被創(chuàng)建或者從已有的項(xiàng)目上“分支”出來或者開一個(gè)全新的分支,包括用于裸機(jī)管理的Ironic以及會(huì)在OpenStack的Juno版本中發(fā)布的Sahara,用于彈性MapReduce。
數(shù)據(jù)服務(wù)由以上的五個(gè)組件來提供。Swift是一個(gè)子項(xiàng)目,為OpenStack基礎(chǔ)架構(gòu)提供對(duì)象存儲(chǔ)的功能。塊存儲(chǔ)由Cinder提供,使用標(biāo)準(zhǔn)的象iSCSI和NFS這樣的IP存儲(chǔ)協(xié)議。Glance為VM鏡像提供一個(gè)知識(shí)庫,使用底層的基本文件系統(tǒng)或者Swift作為存儲(chǔ)。Trove提供數(shù)據(jù)庫即服務(wù) (DBaaS) 的能力,而Sahara提供彈性MapReduce的功能,后者也被稱為Hadoop集群存儲(chǔ)。這篇文章,我們將著重講述Cinder和Swift這兩大主要的存儲(chǔ)平臺(tái)。
Cinder塊存儲(chǔ)
塊存儲(chǔ)是虛擬基礎(chǔ)架構(gòu)中必不可少的組件,是存儲(chǔ)虛擬機(jī)鏡像文件及虛擬機(jī)使用的數(shù)據(jù)的基礎(chǔ)。直到2012年OpenStack Folsom的發(fā)布才引入了Cinder,VM鏡像是短暫的,它們的存儲(chǔ)只維持在那臺(tái)虛擬機(jī)的生命周期。Cinder提供對(duì)塊存儲(chǔ)的管理支持,通過使用iSCSI, 光纖通道或者NFS協(xié)議,以及若干私有協(xié)議提供后端連接,展現(xiàn)給計(jì)算層(Nova)。
Cinder接口提供了一些標(biāo)準(zhǔn)功能,允許創(chuàng)建和附加塊設(shè)備到虛擬機(jī),如“創(chuàng)建卷”,“刪除卷”和“附加卷”。還有更多高級(jí)的功能,支持?jǐn)U展容量的能力,快照和創(chuàng)建虛擬機(jī)鏡像克隆。
許多廠商在他們現(xiàn)有的硬件平臺(tái)上提供對(duì)Cinder塊的支持,通過使用一個(gè)Cinder驅(qū)動(dòng)將Cinder API轉(zhuǎn)換成廠商特定的硬件命令。提供Cinder支持的廠商包括了EMC(VMAX和VNX),惠普(3PAR StoreServ和StoreVirtual),日立數(shù)據(jù)系統(tǒng),IBM(跨所有存儲(chǔ)平臺(tái)),NetApp,Pure Storage和SolidFire。還有一些基于軟件的解決方案,比如EMC(ScaleIO)和Nexenta。
另外,許多軟件存儲(chǔ)實(shí)現(xiàn),包括開源平臺(tái),都可以用于提供對(duì)Cinder的支持,這些軟件中包括紅帽的Ceph和GlusterFS。Ceph已經(jīng)被集成到Linux內(nèi)核中,使其成為最簡單的一種為OpenStack部署環(huán)境提供塊存儲(chǔ)的方法。
NFS的支持是在2013年OpenStack的第七個(gè)版本引入的,又叫Grizzly,盡管之前Folsom有提供“試驗(yàn)性的”技術(shù)支持。在NFS的環(huán)境中,VM磁盤分區(qū)被當(dāng)作單個(gè)的文件,這和在VMware ESXi虛擬程序或者微軟的Hyper-V的VHD所使用的方法相似。將VM磁盤分區(qū)封裝成文件可以實(shí)現(xiàn)類似快照和克隆這樣的功能。
存儲(chǔ)功能已引入Cinder的后續(xù)版本,之后一直被存儲(chǔ)廠商們支持。支持的各種廠商平臺(tái)和功能的完整列表可以在OpenStack的關(guān)于OpenStack塊存儲(chǔ)驅(qū)動(dòng)器的Wiki頁面找到。
Swift對(duì)象存儲(chǔ)
OpenStack中的對(duì)象存儲(chǔ)通過Swift來達(dá)成,Swift實(shí)現(xiàn)了分布在OpenStack的集群節(jié)點(diǎn)的橫向擴(kuò)展的對(duì)象存儲(chǔ)。對(duì)象存儲(chǔ)將數(shù)據(jù)以二進(jìn)制對(duì)象的方式存儲(chǔ),沒有特別的格式要求。Swift使用簡單的類似PUT或GET(基于HTTP網(wǎng)絡(luò)協(xié)議,也被稱為RESTful API)的命令對(duì)對(duì)象進(jìn)行存取操作。
Swift架構(gòu)被分割成一些邏輯服務(wù),包括對(duì)象服務(wù)器,代理服務(wù)器,容器服務(wù)器和帳戶服務(wù)器,整個(gè)一起被稱作一個(gè)ring。數(shù)據(jù)同其他用于追蹤與每個(gè)存儲(chǔ)對(duì)象相關(guān)的元數(shù)據(jù)和管理數(shù)據(jù)訪問的組件一起存儲(chǔ)在對(duì)象服務(wù)器上。
在Swift中使用zone的概念來管理數(shù)據(jù)的彈性。一個(gè)zone是一個(gè)ring的子部件,用于提供數(shù)據(jù)的一個(gè)拷貝,多個(gè)zone則用來存儲(chǔ)冗余的數(shù)據(jù)拷貝,被稱為replica(默認(rèn)最少3個(gè))。Swift能用一個(gè)單獨(dú)的磁盤或者服務(wù)器來代表一個(gè)zone,包括數(shù)據(jù)中心之間的數(shù)據(jù)地理分布。
同許多對(duì)象存儲(chǔ)一樣,Swift使用最終一致性的思想來實(shí)現(xiàn)數(shù)據(jù)的彈性。這意味著數(shù)據(jù)不是象塊存儲(chǔ)那樣以同步的方式在整個(gè)OpenStack集群里復(fù)制,而是在zone之間以一個(gè)后臺(tái)任務(wù)的形式進(jìn)行復(fù)制,這在系統(tǒng)高負(fù)載的情況下也許會(huì)掛起或者失敗。
與塊存儲(chǔ)的同步復(fù)制提供高級(jí)別的可靠性功能相比,最終一致性也許看起來會(huì)更具風(fēng)險(xiǎn)。但是,在可擴(kuò)展性,性能和彈性中總是得做出取舍。最終一致性使得一個(gè)記錄歸檔比在一個(gè)基于塊存儲(chǔ)的系統(tǒng)更容易具備可擴(kuò)展性,就Swift而言,代理服務(wù)器會(huì)確保取得最近一次的數(shù)據(jù)拷貝,即便在該集群里的一些服務(wù)器無法訪問的時(shí)候。
和所有的OpenStack項(xiàng)目一起,隨著每個(gè)版本的發(fā)布,Swift不斷被開發(fā)出新的功能和功能增強(qiáng)。OpenStack Grizzly引入了更細(xì)粒度的replica控制,允許ring能夠調(diào)整replica的數(shù)量。另外,通過基于對(duì)象服務(wù)器的時(shí)間排序的思想,改善了對(duì)象讀取的性能。使得數(shù)據(jù)能夠通過最快響應(yīng)速度的對(duì)象服務(wù)器傳遞,這對(duì)于擴(kuò)展到廣域網(wǎng)很重要。
由于Swift使用HTTP協(xié)議,這樣在OpenStack里使用第三方存儲(chǔ)方案,包括Cleversafe,Scality的產(chǎn)品或者類似于Amazon Web Service簡單存儲(chǔ)服務(wù)(S3)這樣的公有云,進(jìn)行對(duì)象存儲(chǔ)的做法會(huì)非常實(shí)用。
Swift還是Cinder?做出正確的選擇
很顯然Swift和Cinder為完全不同類型的數(shù)據(jù)需求服務(wù)。對(duì)象存儲(chǔ)(通過Swift)被設(shè)計(jì)成專門針對(duì)諸如媒體,鏡像和文件之類的對(duì)象型數(shù)據(jù)的高可擴(kuò)展性存儲(chǔ)。這些系統(tǒng)的重點(diǎn)在于能夠大量擴(kuò)展數(shù)據(jù)而不依賴于那些類似RAID的傳統(tǒng)存儲(chǔ)擁有的特性。但是,最終的一致性模型意味著Swift不適合存儲(chǔ)像虛擬機(jī)這樣的數(shù)據(jù)。
盡管Swift使用元數(shù)據(jù)來追蹤對(duì)象和他們的版本,對(duì)象存儲(chǔ)仍然需要額外的邏輯來追蹤所存的對(duì)象上的用戶元數(shù)據(jù)。這部分將需要用戶自己來構(gòu)建到應(yīng)用程序中去。
Cinder提供塊存儲(chǔ)組件來存儲(chǔ)持久化對(duì)象,比如虛擬機(jī)和定期在數(shù)據(jù)庫中更新的數(shù)據(jù)。塊存儲(chǔ)的功能可以在整個(gè)OpenStack集群中實(shí)現(xiàn),通過一些商用組件,使用內(nèi)置的工具,如服務(wù)器邏輯盤管理器或者NFS,來傳輸存儲(chǔ)資源。另外,開源解決方案如Ceph的和GlusterFS,提供從OpenStack的主代碼中單獨(dú)打包OpenStack存儲(chǔ)模塊的能力,同時(shí)仍保留可以使用開源軟件的靈活性。
隨著Cinder的廣泛支持,現(xiàn)有的傳統(tǒng)存儲(chǔ)方案可以用到OpenStack部署環(huán)境中來提供存儲(chǔ)服務(wù)。當(dāng)一個(gè)IT組織已經(jīng)具備了這種技術(shù)并且硬件平臺(tái)也到位的情況下,這也許是他們更愿意采用的方式?,F(xiàn)有的存儲(chǔ)平臺(tái)技術(shù)已經(jīng)很發(fā)達(dá),并且支持一些存儲(chǔ)優(yōu)化的高級(jí)功能,比如精簡配置,重復(fù)數(shù)據(jù)刪除和壓縮。許多現(xiàn)在還提供服務(wù)質(zhì)量(比如HP的3PAR StoreServ和SolidFire的平臺(tái)),讓它們適合在混合工作負(fù)載下而不是單純的用于OpenStack的部署。其結(jié)果帶來的一個(gè)顯著的益處就是,可以將“繁重”的任務(wù)卸載到一個(gè)外部存儲(chǔ)陣列。
在做出使用一個(gè)特定平臺(tái)的決策中,系統(tǒng)架構(gòu)師們需要權(quán)衡風(fēng)險(xiǎn)與使用OpenStack“免費(fèi)”方案(仍然需要硬件)或者使用專屬硬件提供的功能所花費(fèi)的成本。
OpenStack存儲(chǔ)備份
最后,我們應(yīng)該考慮在OpenStack里備份數(shù)據(jù)的需求。備份OpenStack環(huán)境中的關(guān)鍵配置組件的具體細(xì)節(jié)已經(jīng)有很好的文檔描述,但是備份在一個(gè)OpenStack集群里的數(shù)據(jù)被視為用戶自己的責(zé)任。備份可以通過使用外部存儲(chǔ)供應(yīng)商來輕松實(shí)現(xiàn),比如說,SolidFire提供將整個(gè)集群備份到AmazonS3或者Swift兼容的對(duì)象存儲(chǔ)中的功能。或者,用戶將需要查看現(xiàn)有的支持他們的OpenStack虛擬機(jī)管理程序的備份產(chǎn)品。
Raksha是一個(gè)新的項(xiàng)目提議,將備份即服務(wù)的功能集成到OpenStack的框架中。會(huì)同時(shí)支持完全及增量的虛擬機(jī)備份到一個(gè)Swift“端”,并能讓應(yīng)用保持一致性。Raksha目前是一個(gè)獨(dú)立的項(xiàng)目,不屬于核心OpenStack框架。要將它集成到一般的類似VSphere和Hyper-V這樣的虛擬化平臺(tái)中會(huì)需要花一些功夫,但是至少可以提供一個(gè)更整合的解決方案來對(duì)OpenStack環(huán)境中的數(shù)據(jù)進(jìn)行保護(hù)。
原文鏈接:http://www.searchcloudcomputing.com.cn/showcontent_87337.htm