2009/09/13

what is virtualization? 何謂虛擬化?

1.什麼是虛擬化(Virtualization)?
   廣義的虛擬化顧名思義便是將實體的資源分化,以自身邏輯概念加以定義,並以該模式運行。狹義於計算機科學的虛擬化,是一個將單體資源加以子集化、抽象化的過程,以設計者概念運行,並獲得更佳的資源利用率。

2.虛擬化的種類
   A.資源的虛擬化
       計算機的虛擬化主要指將某些系統資源抽象化,如儲存資源、網路頻寬與名稱資源等。最佳的例子之一便是磁碟分割與RAID(Redundant Arrays of Independent Disks),以及虛擬主機亦是網路名稱虛擬化的結果。
   B.軟體虛擬化
       將軟體虛擬化,將函式庫抽離,不需特定的系統環境、不需安裝、不修改系統設定即可執行,也是俗稱的「綠色軟體(Portable)」。常使用的軟體虛擬化工具為MS的SoftGRID、VMware的ThinApp等。
   C.平台虛擬化
       現今多討論的虛擬化便是平台虛擬化。將計算機系統的主要資源(如CPU、硬碟、網路等)抽象化,直接將系統資源交付於特定軟體並透過其整合管理,作業系統則由虛擬出的抽象硬體層存取各項資源。相關的整合軟體有VMware ESX、Microsoft Hyper-V等,又依照軟體虛擬層面分為多項產品。

3.為什麼要虛擬化?
   電腦發展史於1946年由ENIAC(Electronic Numerical Integrator and Computer, ENIAC)開啟後,硬體效率依照摩爾定律預言不斷發展,但是也開始出現系統資源使用效率不足的情況(其主要依據TCO(整體成本)/ROI(投資報酬率)的精算而得)。1967年,IBM CP-40主機實做了首次的平台虛擬化;其運行了14個IBM S/360虛擬機,並擁有256KB記憶體,並分別對應了各自的儲存與輸出入資源,使單一平台使用率最大化,解決了硬體資源浪費的情形。

4.商業化的平台虛擬化各式作法
   依照虛擬機器形成與軟硬體間的相互關係,平台虛擬化仍可分為以下幾類:
   A.完全虛擬化(Full virtualization):大部分商業化的虛擬機器類型皆歸類於此,guest OS可直接在虛擬軟體建置的環境上運作,不需任何修改。
   B.硬體輔助虛擬化(Hardware-assisted virtualization):作業系統運行時需依賴硬體支援完成虛擬化,如Intel VT與AMD-V。
   C.部分虛擬化(Partial virtualization):該虛擬機器運行時,系統提供部分虛擬化,將資源分享與程序分離,達成多工的效果。Windows與Linux等作業系統皆是部分虛擬化的成果。
   D.半虛擬化(Para-virtualization ):Guest OS於產品運行時需修改系統核心才能正常運行,效率極佳但硬體支援度不足,早期Xen皆屬於此分類項。

5.虛擬化運作層軟體
   無論架構,虛擬機器抽象化硬體資源後須有一套管理方式分配虛擬化後的系統資源,此仲裁機制一般稱為Hypervisor或者Virtual Machine Monitor,也是一般市面上常見的虛擬機器軟體。
   虛擬機器軟體安裝時會將硬體層之間插入一層Hypervisor接管硬體,所有Guest OS皆運行於Hypervisor之上,與硬體已無直接關係。

6.虛擬化層次
   X86的CPU於Intel 80286後開始加入保護模式(Protected Mode, PMODE),以增強系統穩定度與多工的實行,直至Windows NT才完全支援,但也因為啟用PMODE,相關敏感指令被禁止。程式權限於Intel CPU架構分為Ring0至Ring3,Ring0運行系統核心、Ring1與Ring2運行作業系統服務,Ring3則是一般應用程式;Ring0優先權最高,但各級別可運行特權指令有所限制。而一般作業系統僅使用Ring0與Ring3兩個層級。
  系統核心運行於Ring0,VMM或Hypervisor若運行於Ring3則無法對Guest OS做出有效管理。一般解決方式有兩種,將Hypervisor與Guest OS特權等級下降(Ring Deprivileging),有兩種做法,分別為0/1/3模型與0/3/3模型。
  實行0/1/3模型時,Kernel若要執行Ring0特權指令時,Hypervisor必須使用模擬的方式攔截指令,將明顯帶來效能上的問題,但可確保原處於Ring3的程式破壞系統核心,安全性較高;除了效能問題外,IA32架構分離Hypervisor與guest OS主要兩種方式:segment limit(限制分段)與paging(分頁);不幸64bit作業模式僅能使用paging分頁分離Host OS與guest OS,而paging不區分Ring1與Ring2,成為不被採用的主要原因。
  0/3/3模型下,Hypervisor角色一樣是Ring0,但將Guest OS拉至Ring3,與應用程式共存,並使用paging將Host OS與Guest OS分離。但是造成問題主要是Guest OS與應用程式運行同時運行於Ring3,失去了保護模式的隔離保護,造成系統穩定性不足的問題,並稱之為「Ring Compression」。
  目前擁有的解決之道則是透過特殊指令集修正0/3/3的不穩定問題:Intel VT(Vanderpool Technology)。這項指令集可將Hypervisor與Guest OS各分四層,可解決隔離安全與效能上的問題,又能解決ring compression的錯誤。未來將針對IO行為再做虛擬化,下一代虛擬化指令集稱為Intel VT-d,實現DMA(I/O)虛擬化。



7.商業用虛擬機器架構
   A.寄居架構
      其主要特性為將虛擬機器運行於Host OS上,形成OS in OS的結構,視為作業系統上一個應用程式。最大好處為硬體相容性高,只需要Host OS已安裝使用,Guest OS便可加以利用。最主要問題為若Host OS出現問題,則所有虛擬機器將同時無法運作,且各虛擬機器之間無獨立的硬體資源空間。VMware Workstation、Microsoft Virtual PC皆屬於此範疇。

   B.原生架構(Bare-Metal)
      成為Hypervisor,接管所有硬體資源,並可將Server集中管理,任一Guest OS運作異常皆不會影響Client。最大問題為硬體相容性,並支援多種Server級儲存設備,如iSCSI SAN、FC SAN等。代表性的原生架構Hypervisor有VMware ESX Server與Microsoft Hyper-V Server(註)。






註:Microsoft Hyper-V安裝於Windows Server 2008後系統架構改變,原有的Host OS轉變為建立於Hyper-V之上的Guest OS,結構如下圖:




To be conutinued...

1 Comments:

accoduies 提到...

下篇開始介紹各種VM的功能實作..等買新電腦後

張貼留言