- 走入IBM小型機世界
- Orian編著
- 660字
- 2018-12-28 23:12:19
2.7 Simulation,Virtualization,虛擬化技術、分區
IBM從POWER4 CPU開始支持虛擬化技術,它起源于IBM大型機(Mainframe)的分區技術。虛擬化并不神秘,這種設想源于IT領域資源緊張和資源閑置兩種情況并存的現實需求,并且IT環境快速變化,要求設備能夠動態適應這種變化。
2.7.1 虛擬化的第一個關鍵詞:資源共享和隔離
從不同的隔離(共享)程度可以分為:
● 共享基礎設施,很多大型設備都是采用這種方式,其中代表系統是傳統的電信程控交換機,任何一路電路板故障,只會影響單一線路,而系統中其他設備不會受到影響。這些設備之間共享統一供電系統(通常是雙路冗余的供電系統),被裝配在同一個物理盒子(機柜)中,除非部件造成火災,否則可以保證絕對安全,但同時這種共享方式也僅僅實現了分享電源資源,也不能很自由地調整其他CPU、內存、IO系統配置。很少有提供虛擬化功能的大型的計算機設備只共享基礎設施,不過從可靠性和安全性角度考慮,這種虛擬化功能似乎又是必需的,這種方式實現了所謂的物理隔離。
● 共享通信系統,例如通過網絡互聯的一組服務器設備,但是提供這種虛擬化功能的設備在外觀上并不是一組服務器,而是一臺服務器,另外不僅僅共享真正的IP網絡,還會共享其他一切IO總線,或者專用的通信總線。通過這種共享方式,可以靜態或者動態地調整CPU、內存、IO配置,其缺點是調整只能按照預先設計好的物理分配方式內進行。大部分的高端UNIX服務器都可以實現此類虛擬化。
● 共享操作系統,例如同一個操作系統內執行的一組程序,程序分為內核級和用戶級兩個層次,內核級為管理程序,進行調度分配;用戶級程序并不知道自己在一臺真正的物理機器中執行還是在某個虛擬機中執行。
2.7.2 虛擬化的第二個關鍵詞:分配方式和顆粒度
分配方式從靜態分配到動態分配,從固定配置模式到可以自由使用非常細微的顆粒度(小于1)進行分配。根據切分方式可以分為按照預定的處理板進行切分(每塊板上有固定數量的CPU、內存和IO槽位,一個處理板是最小分配單元),每個分區可以包含一個或者多個處理理板;按照CPU內核、IO槽位切分,最小分配單位為一個CPU、一個IO槽位;按照CPU時間片切分,IO采用類似VLAN的方式共享(虛擬IO控制卡)。
由于CPU、IO卡的處理速度越來越快,而UNIX服務器很多時候卻處于閑置狀態,為提高利用率考慮,自然想到了動態CPU、內存分配,甚至讓多個系統共享幾顆物理CPU或者一塊IO卡的高速帶寬(10Gb Ethernet,4Gb Fiber Channel,Infinity Band),多個虛擬的IO接口卡透過一塊物理IO卡與外界通信。當然,物理設備越來越高的可靠性、操作系統對多路徑數據訪問提供自動的負載均衡和冗余,也為共享提供了可能。
硬件分區技術以物理板為基礎,如圖2-10所示,Sun服務器的Domain技術,HP服務器的nPar技術都是這種類型;軟分區(或軟件分區,其實這種軟件并非操作系統軟件,而是一種類似操作系統的軟件,例如VMWare)則更為靈活,能夠以任意的粒度、動態調整資源;IBM另外一種分區技術是LPar,邏輯分區,它以硬件分區為基礎,但并不受硬件板卡所限,能夠以最小資源單位進行分配,例如單CPU、128M內存等;IBM還有一種分區技術叫做微分區,它通過在硬件層的微碼進行控制,能夠以1/10的粒度進行切分,以1/100的粒度動態調整CPU資源,并且通過Hypervisor(專用的控制電路和系統)進行分區間通信,將某個分區(VIOS,Virtual IO Server)的物理設備映射成為自己的一個虛擬設備使用。

圖2-10 虛擬化技術說明
2.7.3 虛擬化的第三個關鍵詞:上下層之間的相關性
(1)頂層的虛擬化技術(不是更高級的技術,而是在應用層完成虛擬化功能)采用代碼仿真的方式執行虛擬系統,類似Java虛擬機就是仿真出一種虛擬的計算機系統,執行Java代碼,最終目標是無論底層是什么硬件設備或者操作系統,都能同樣執行Java程序,得到同樣的結果。如果兩種CPU不能執行相同的二進制代碼,則只能采用這種方式實現虛擬。
(2)下一層采用API仿真,并部分解碼執行(或仿真)代碼,由于API可以比虛擬執行,擁有更高的執行效率,而通過部分解碼又能仿真完全不同的CPU,因此成為經常被業界采用的虛擬化技術,特別是進行CPU設計、單板機開發時,通常采用此技術。在1999年,曾經有AIX版本的Soft Windows軟件可以仿真Windows 3.1系統,在AIX / RS600上執行DOS / Windows程序。請參考圖2-11分區技術說明。

圖2-11 分區技術說明
經常遇到朋友們詢問是否可以用虛擬機(VMWare)安裝AIX操作系統,很遺憾,因為AIX目前只有POWER系列CPU(包括Power PC)的二進制代碼,而VMWare并非二進制代碼虛擬機,即便是用opensource的一些軟件,仿真出Power CPU指令集,也由于一個系統并非只有CPU,還需要很多IO外設的支持,而IBM并沒有計劃提供此類的支持,所以還沒有渠道實現用x86的CPU安裝AIX的技術。不過IBM為了推廣Linux,已經提供了一個Sim System PowerPC 970的軟件,讓我們可以在x86硬件上建立一種支持Power PC指令集的Linux開發環境。有興趣的朋友可以參考以下地址,了解CPU仿真的歷史和未來:
http://simh.trailing-edge.com/
(3)再下一層技術利用CPU的代碼優先級特性,用不同的保護級別運行,但不同程序的主要二進制代碼必須兼容,實際的代碼還是由CPU硬件解碼執行的,而不是程序仿真。VMWare是這種虛擬技術的代表,類似的還有微軟的Virtual PC。
(4)最下層的技術不進行任何仿真、虛擬,僅僅用軟件監視程序執行時占據的系統資源,通過對系統資源進行限制和調整,達到控制程序的目的。
對應于AIX/pSeries則有WLM,PLM,EWLM和VE等虛擬化的應用技術實例。
WLM,Work Load Manager,該軟件對單獨操作系統內的各種資源進行控制,設定最大CPU、內存使用率,通過限制程序的資源占用,達到控制程序執行的目的,可以讓更多地程序運行在一個操作系統內核上而互不干擾;
PLM,Partition Load Manager,它利用分區技術實現操作系統層面的隔離,但是利用動態LPar技術,動態調整不同分區之間的資源,將閑置的資源(內存、CPU)調整到繁忙的分區,達到最大的資源利用效率。
EWLM,Enterprise Workload Manager,它試圖在多臺同系列的物理服務器之間進行服務調配,實現負載調整。由于物理服務器的資源沒有辦法動態跨物理設備調配,所以只好調整其上運行的程序,讓程序在新的平臺運行,以實現某個業務占有更大的物理資源或者被調整到一個較小的服務器。
VE,Virtualization Engin,這是最后一步,IBM希望可以做到跨平臺類型進行負載調整,也就是在IBM的幾大品牌計算機(zSeries,pSeries,iSeries和xSeries)上對特定的應用進行負載分擔調整,這些特定的應用以Web Service為主,以后會陸續增加各種Database和其他商業應用套件,例如SAP等。
虛擬化的實現方式多種多樣,在x86系列CPU中,由于以前的CPU本身并沒有特別的虛擬化功能,所以都是通過軟件實現的,在其上有三種著名的軟件:VMWare,Virtual PC/Virtual Server,以及Xen。其中Xen是Opensource的軟件,Virtual PC和Virtual Server都是微軟的產品,VMWare則由VMWare公司(現為EMC的子公司)開發。其中VMWare和Xen類似,都屬于利用硬件指令直接進行虛擬和控制(Hypervisor),但Xen更提供了對應用支持的API,這樣在運行某些特定的操作系統的時候,可以提供更高的性能。Virtual PC和Virtual Server則使用了Host OS技術,本身實際是一個操作系統,其上再進行虛擬化,所以略顯龐大,并且對非微軟的操作系統支持不好(Virtual Server根本就不支持其他操作系統),不過如果使用微軟系統,則可以實現更好的性能,因為底層的Host OS本身提供了很多API,可以直接被調用,不用仿真(虛擬)。Intel和AMD都在他們的新芯片上增加了對虛擬化功能的支持(Intel使用VT技術的芯片和AMD的Pacifica芯片),這樣CPU就可以更進一步提高虛擬化系統的執行效率和安全性。
遺憾的是,這些產品都只能虛擬x86的CPU(指令集),不能支持POWER系列的指令,所以在VMWare虛擬機上安裝AIX只能是一種夢想了(也許在不久的將來可以實現,但現在肯定不行)。IBM曾經發布了一種開源的軟件,叫做Power PC 970 Full System Simulator。我們知道,POWER CPU和Power PC系列是基本二進制兼容的,而這種軟件又可以在x86的CPU上運行,似乎給了我們一線希望,但經過作者測試,發現這種軟件所打包的只有在Power PC 970上的Linux開發環境,而沒有AIX Boot Loader(引導啟動/初始化程序),也就是說,即使你有一個能運行POWER指令的虛擬機,但是沒有適合這種虛擬硬件的軟件可用!普通的AIX是不支持這種虛擬出來的硬件的。
表2-4列出了當前大部分虛擬化技術及其比較,請參考。
表2-4 虛擬化技術及其比較

續表

續表

續表

續表

續表

續表

續表

續表
