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