『現學現忘』Docker相關概念 — 6、虛擬化技術分類

虛擬化是一個廣義的術語,是指計算元件在虛擬的基礎上而不是真實的基礎上運行,是一個為了簡化管理,優化資源的解決方案。如同空曠、通透的寫字樓,整個樓層沒有固定的牆壁,用戶可以用同樣的成本構建出更加自主適用的辦公空間,進而節省成本,發揮空間最大利用率。這種把有限的固定的資源根據不同需求進行重新規劃以達到最大利用率的思路,在IT領域就叫做虛擬化技術。

(虛擬化的第二種闡釋)

那麼下面說說虛擬化的分類。

1、按照虛擬化的程度分類

(1)完全虛擬化技術

完全虛擬化技術又叫硬件輔助虛擬化技術,最初所使用的虛擬化技術就是全虛擬化(Full Virtualization)技術,該模型使用虛擬機協調客戶操作系統和原始硬件。這裡”協調”是一個關鍵詞,因為VMM在客戶操作系統和裸硬件之間用於工作協調。一些受保護的指令必須由Hypervisor(漢譯過來是「超級監督者」,也叫做VMMVirtual Machine Monitor,中文叫虛擬機監視器。它不是一款具體的軟件,而是一類軟件的統稱。)來捕獲和處理。因為操作系統是通過Hypervisor來分享底層硬件。

hypervisor可以劃分為兩大類。

  • 類型一: hypervisor是直接運行在物理硬件之上的。
  • 類型二: hypervisor運行在另一個操作系統(運行在物理硬件之上)中。

說明:

類型1:hypervisor的一個例子是基於內核的虛擬機(KVM —— 它本身是一個基於操作系統的 hypervisor)。
類型2:hypervisor 包括 QEMUWINE

提示:
x86平台指令集分為4個特權模式:Ring0Ring1Ring2Ring3、OS工作在Ring0級別,應用軟件工作在Ring3級別,驅動程序工作在Ring1Ring2

如下圖所示:

image

如何將虛擬機越級的指令使用進行隔離,1998年VMware首次找到了解決辦法,通過虛擬化引擎,捕獲虛擬機的指令,並進行處理,即全虛擬化方案。

在全虛擬化的情況下,VMM工作在Ring 0 ,Guest OS工作在Ring 1 ,應用程序工作在Ring 3,可是這時候Guest OS是不知道自己工作在虛擬機里的,認為自己還是工作在Ring 0 ,所以它還是按照Ring 0級別產特權生指令,Guest OS產生的每一條指令都會被VMM截取,並翻譯成宿主機平台的指令,然後交給實際的物理平台執行,由於每一條指令都需要這麼翻譯一下,所以這種虛擬化性能比較差。

如下圖所示:

image

解釋說明:完全虛擬化結構圖。

image

  • hardware是硬件。
  • Guest Os宿主操作系統,這就是所謂的虛擬機了。
  • Hypervisor就相當於是Guest OS和hardware中間的一個翻譯者的角色。
  • Apps是在虛擬機上安裝的應用程序。

我們看到的虛擬機是運行在宿主機之上的,這種虛擬化就直接工作在硬件之上。也就意味着Hypervisor是可以和硬件直接交互的。

當Apps調用Guest Os的內核,內核通過參數或者指令,發送給HypervisorHypervisor在把接受到的信息,翻譯給硬件。硬件做出響應給HypervisorHypervisor傳遞給Guest Os,Guest Os對應的資源給對應的Apps。

這就是完全虛擬化的一個運行流程。

(2)半虛擬化技術

半虛擬化技術,也叫做准虛擬化技術。它就是在全虛擬化的基礎上,把客戶操作系統進行了修改,增加了一個專門的API,這些API可以將客戶操作系統發出的指令進行最優化,即不需要Hypervisor費一定的資源進行翻譯操作,因此Hypervisor的工作負擔變得非常的小,因此整體的性能也有很大的提高。

如下圖所示:

image

提示
半虛擬化是對Guest OS做相應修改,以便和VMM協同運作。在硬件輔助虛擬化興起之前,半虛擬化性能勝過全虛擬化。在半虛擬化情況下,Guest OS知道自己並不是直接運行在硬件資源上,而是運行在虛擬化環境里,工作在非Ring 0,那麼它原先在物理機上執行的一些特權指令,就會修改成其他方式(超級調用),這種方式是可以和VMM約定好的,半虛擬化不需要VMM層進行二進制翻譯,所以性能較好,但是實現比較麻煩(要修改OS內核代碼),典型的半虛擬化技術有xen。

如下圖所示:

image

總結:

相當於在Hypervisor和Guest OS中間加了一層管理或者優化的過程。這樣Hypervisor的工作效率的提高了。

這種半虛擬化是需要對Guest Os宿主操作系統進行優化的,增加一個優化層。生產環境中應用比較少,因為耗時和提升不成正比。

(3)完全虛擬化與半虛擬化優缺點

1)完全虛擬化

  • 優點是客戶機的操作系統內核不需要做特殊配置,部署便利,靈活,兼容性好。
  • 缺點是客戶機操作系統的內核不能夠直接管理底層硬件,內核通過Hypervisor管理底層硬件需要有轉換開銷,性能比裸機操作要差。

2)半虛擬化

  • 優點是半虛擬化的虛擬機操作系統內核能夠直接管理底層硬件,性能比全虛擬化技術更強。
  • 缺點是客戶機操作系統內核需要事先進行修改,對於一些閉源的操作系統,例如Windows我們就無法使用半虛擬化技術,部署的便利性和靈活性都不夠,兼容性不夠好。

2、從虛擬化架構分類

在虛擬化環境下,物理服務器的CPU、內存、硬盤和網卡等硬件資源被虛擬化並受Hypervisor的調度,多個操作系統在Hypervisor的協調下可以共享這些虛擬化後的硬件資源,同時每個操作系統又可以保存彼此的獨立性。

根據Hypervisor所處層次的不同和Guest OS對硬件資源的不同使用方式,Hypervisor虛擬化被分為兩種類型:裸金屬架構(「裸機」虛擬化)和寄居架構(基於操作系統的虛擬化,宿主型虛擬化)。

(1)寄居架構

Hypervisor虛擬化層安裝在傳統的操作系統中,虛擬化軟件以應用程序進程形式運行在Windows和Linux等主機操作系統中。典型的宿主型Hypervisor有VMware Workstation和VirtualBox。在Hypervisor虛擬化環境下,部署在物理服務器上的系統稱為Host OS,而部署在Hypervisor上的虛擬機操作系統稱為Guest OS。

Hypervisor的安裝:在物理服務器上安裝Linux操作系統然後在操作系統上安裝Hypervisor,然後部署虛擬機(Guest OS)後通過Hypervisor來共享資源。

寄居架構如下圖:

宿主操作系統自身上運行這一些應用程序,然後還有虛擬機程序,這就是我們之前認識的傳統虛擬機。

image

  • 優點:簡單,便於實現。
  • 缺點:
    1)安裝和運行應用程序依賴於主機操作系統對設備的支持。
    2)宿主操作系統,和其上邊運行的軟件,都是無用的資源。
    3)穩定性,一旦宿主操作系統出現問題,虛擬化軟件在穩定也不行。

(2)裸金屬架構

Hypervisor虛擬化層,在虛擬化環境中無須完整的Host OS,直接將Hypervisor部署在裸機上,並將裸機服務器的硬件資源虛擬化,也可以將Hypervisor理解為僅對硬件資源進行虛擬和調度的薄操作系統,其並不提供常規Host OS的功能。常見的裸金屬架構有IBMPowerVMVMwareESX SevrerCitrixXenServerMicrosoftHyper-V以及開源的KVM等虛擬化軟件。

裸金屬架構虛擬化圖如下:

image

  • 優點:虛擬機不依賴於操作系統,可以支持多種操作系統,多種應用,更加靈活。
  • 缺點:虛擬層內核開發難度較大。

參考: