IBM在2007年11月15日推出了藍雲計算平臺,為客戶帶來即買即用的雲計算平臺。 它包括一系列的雲計算產品,使得計算不僅僅局限在本地機器或遠端伺服器農場(即伺服器集群),通過架構一個分散式、可全球訪問的資源結構,使得資料中心在類似于互聯網的環境下運行計算。
通過IBM的技術白皮書,我們可以一窺藍雲計算平臺的內部構造。 「藍雲」建立在IBM大規模計算領域的專業技術基礎上,基於由IBM軟體、系統技術和服務支援的開放標準和開源軟體。 簡單地說,「藍雲」基於IBM Almaden研究中心(Almaden Research Center)的雲基礎架構,包括Xen和PowerVM虛擬化、Linux作業系統映射以及Hadoop檔案系統與並行構建。 「藍雲」由IBM Tivoli軟體支援,通過管理伺服器來確保基於需求的最佳性能。 這包括通過能夠跨越多伺服器即時分配資源的軟體,為客戶帶來一種無縫體驗,加速性能並確保在最苛刻環境下的穩定性。 IBM新近發佈的「藍雲(Blue Cloud)」計畫,能夠説明使用者進行雲計算環境的搭建。 它通過將Tivoli、DB2、WebSphere與硬體產品(目前是x86刀片伺服器)集成,能夠為企業架設一個分散式、可全球訪問的資源結構。 根據IBM的計畫,首款支援Power和x86處理器刀片伺服器系統的「藍雲」產品將于2008年正式推出,並且計畫隨後推出基於System z「大型主機」的雲環境,以及基於高密度機架集群的雲環境。
在IBM的雲計算白皮書上,我們可以看到如下的藍雲計算平台佈建情況。
圖4演示了藍雲計算的高層架構。 可以看到,藍雲計算平臺由一個資料中心: IBM Tivoli部署管理軟體(Tivoli Provisioning Manager)、IBM Tivoli監視軟體(IBM Tivoli Monitoring)、IBM WebSphere應用伺服器、IBM DB2資料庫以及一些虛擬化的元件共同組成。 圖中的架構主要描述了雲計算的後臺架構,並沒有涉及到前臺的使用者介面。
藍雲的硬體平臺並沒有什麼特殊的地方,但是藍雲使用的軟體平臺相較于以前的分散式平臺具有不同的地方,主要體現在對與虛擬機器的使用以及對於大規模資料處理軟體Apache Hadoop的部署。 Hadoop是網路開發人員根據Google公司公開的資料開發出來的類似于Google File System的Hadoop File System以及相應的Map/Reduce程式設計規範。 現在也正在進一步開發類似于Google的Chubby系統以及相應的分散式資料庫管理系統BigTable。 由於Hadoop是開源的,因此可以被使用者單位直接修改,以適合應用的特殊需求。 IBM的藍雲產品則直接將Hadoop軟體集成到自己本身的雲計算平臺之上。
「藍雲」中的虛擬化
從藍雲的結構上我們還可以看出,在每一個節點上運行的軟體棧與傳統的軟體棧一個很大的不同在於藍雲內部使用了虛擬化技術。 虛擬化的方式在雲計算中可以在兩個級別上實現。 一個級別是在硬體級別上實現虛擬化。 硬體級別的虛擬化可以使用IBM p系列的伺服器,獲得硬體的邏輯分區LPAR。 邏輯分區的CPU資源能夠通過IBM Enterprise Workload Manager來管理。 通過這樣的方式加上在實際使用過程中的資源配置策略,能夠使得相應的資源合理地分配到各個邏輯分區。 P系列系統的邏輯分區最小細微性是1/10顆中央處理器(CPU)。
虛擬化的另外一個級別可以通過軟體來獲得,在藍雲計算平臺中使用了Xen虛擬化軟體。 Xen也是一個開源的虛擬化軟體,能夠在現有的Linux基礎之上運行另外一個作業系統,並通過虛擬機器的方式靈活地進行軟體部署和操作。
通過虛擬機器的方式進行雲計算資源的管理具有特殊的好處。 由於虛擬機器是一類特殊的軟體,能夠完全類比硬體的執行,因此能夠在上面運行作業系統,進而能夠保留一整套運行環境語義。 這樣,可以將整個執行環境通過打包的方式傳輸到其他物理節點上,這樣就能夠使得執行環境與實體環境隔離,方便整個應用程式模組的部署。 總體上來說,通過將虛擬化的技術應用到雲計算的平臺,可以獲得一些良好的特性。
1. 雲計算的管理平臺能夠動態地將計算平臺定位到所需要的物理平臺上,而無需停止運行在虛擬機器平臺上的應用程式,這比採用虛擬化技術之前的進程遷移方法更加靈活。
2. 能夠更加有效率地使用主機資源,將多個負載不是很重的虛擬機器計算節點合併到同一個物理節點上,從而能夠關閉空閒的物理節點,達到節約電能的目的。
3. 通過虛擬機器在不同物理節點上的動態遷移,能夠獲得與應用無關的負載平衡性能。 由於虛擬機器包含了整個虛擬化的作業系統以及應用程式環境,因此在進行遷移的時候帶著整個運行環境,達到了與應用無關的目的。
4. 在部署上也更加靈活,即可以將虛擬機器直接部署到物理計算平臺當中。
總而言之,通過虛擬化的方式,雲計算平臺能夠達到極其靈活的特性,而如果不使用虛擬化的方式則會有很多的局限。
「藍雲」中的存儲結構
藍雲計算平臺中的存儲體系結構對於雲計算來說也是非常重要的,無論是作業系統,服務程式還是使用者應用程式的資料都保存在存儲體系中。 雲計算並不排斥任何一種有用的存儲體系結構,而是需要跟應用程式的需求結合起來獲得最好的性能提升。 總體上來說,雲計算的存儲體系結構包含類似于Google File System的集群檔案系統以及基於塊設備方式的存放區域網路SAN兩種方式。
在設計雲計算平臺的存儲體系結構的時候,不僅僅是需要考慮存儲的容量。 實際上隨著硬碟容量的不斷擴充以及硬碟價格的不斷下降,使用當前的磁片技術,可以很容易通過使用多個磁片的方式獲得很大的磁片容量。 相較于磁片的容量,在雲計算平臺的存儲中,磁片資料的讀寫速度是一個更重要的問題。 單個磁片的速度很有可能限制應用程式對於資料的訪問,因此在實際使用的過程中,需要將資料分佈到多個磁片之上,並且通過對於多個磁片的同時讀寫以達到提高速度的目的。 在雲計算平臺中,資料如何放置是一個非常重要的問題,在實際使用的過程中,需要將資料分配到多個節點的多個磁片當中。 而能夠達到這一目的的存儲技術趨勢當前有兩種方式,一種是使用類似于Google File System的集群檔案系統,另外一種是基於塊設備的存放區域網路SAN系統。
Google檔案系統在前面已經做過一定的描述。 在IBM的藍雲計算平臺中使用的是它的開源實現Hadoop HDFS (Hadoop Distributed File System)。 這種使用方式將磁片附著于節點的內部,並且為外部提供一個共用的分散式檔案系統空間,並且在檔案系統級別做冗余以提高可靠性。 在合適的分散式資料處理模式下,這種方式能夠提高總體的資料處理效率。 Google檔案系統的這種架構與SAN系統有很大的不同。
SAN系統也是雲計算平臺的另外一種存儲體系結構選擇,在藍雲平臺上也有一定的體現,IBM也提供SAN的平臺能夠接入到藍雲計算平臺中。 圖5就是一個SAN系統的結構示意圖。
從圖5中可以看到,SAN系統是在存儲端構建存儲的網路,將多個存放裝置構成一個存放區域網路。 前端的主機可以通過網路的方式訪問後端的存放裝置。 而且,由於提供了塊設備的訪問方式,與前端作業系統無關。 在SAN連接方式上,可以有多種選擇。 一種選擇是使用光纖網路,能夠操作快速的光纖磁片,適合於對性能與可靠性要求比較高的場所。 另外一種選擇是使用乙太網,採取iSCSI協定,能夠運行在普通的局域網環境下,從而降低了成本。 由於存放區域網路中的磁片設備並沒有與某一台主機綁定在一起,而是採用了非常靈活的結構,因此對於主機來說可以訪問多個磁片設備,從而能夠獲得性能的提升。 在存放區域網路中,使用虛擬化的引擎來進行邏輯裝置到物理設備的映射,管理前端主機到後端資料的讀寫。 因此虛擬化引擎是存放區域網路中非常重要的管理模組。
SAN系統與分散式檔案系統例如Google File System並不是相互對立的系統,而是在構建集群系統的時候可供選擇的兩種方案。 其中,在選擇SAN系統的時候,為了應用程式的讀寫,還需要為應用程式提供上層的語義介面,此時就需要在SAN之上構建檔案系統。 而Google File System正好是一個分散式的檔案系統,因此能夠建立在SAN系統之上。 總體來說,SAN與分散式檔案系統都可以提供類似的功能,例如對於出錯的處理等。 至於如何使用還是需要由建立在雲計算平臺之上的應用程式來決定。
與Google不同的是,IBM並沒有基於雲計算提供外部可訪問的網路應用程式。 這主要是由於IBM並不是一個網路公司,而是一個IT的服務公司。 當然,IBM內部以及IBM未來為客戶提供的軟體服務會基於雲計算的架構。