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

繁華似錦Fighting發表於2022-03-09

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

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

參考:

相關文章