系統虛擬化- 原理與實現

虛擬化(Virtualization)是資源的邏輯表示,它不受物理限制的約束。具體的,虛擬化技術的實現形式是在系統中加入一個虛擬化層,虛擬化層將下層的資源抽象成另一種形式的資源,提供給上層使用。通過空間上分割、時間上分時以及模擬,虛擬化可以將一份資源抽象成多份。反過來,虛擬化也可以將多份資源抽象成一份。虛擬化技術以各種形式存在已經有四十年之久了,目前出現了網絡虛擬化、微處理器虛擬化、文件虛擬化和存儲虛擬化等技術。

1.1 形形色色的虛擬化

爲了降低系統設計的複雜性,計算機系統被設計成自上而下的抽象層次結構,每一個層次都向上一層次呈現一個抽象,並且每一層只需知道下層抽象的接口,而不需要了解其內部運作機制。這樣,每一層只需要考慮本層的設計以及相鄰層間的交互。例如,操作系統所看到的硬件是一個硬件抽象層,而不需要理解硬件的佈線或者電氣特性等。

圖 1-1 計算機系統的各個抽象層

硬件抽象層(Hardware Abstraction Layer, HAL)是計算機中軟件所能控制的硬件的抽象接口,通常包括CPU的各種寄存器、內存管理模塊、I/O端口以及內存映射的I/O地址等。API抽象層是一個進程所能控制的系統功能的集合,包括創建新進程、內存申請、歸還、進程間同步與共享、文件系統和網絡操作系統等。

本質上,虛擬化是由位於下層的軟件模塊,通過向上層軟件模塊提供一個與它原先所期待的運行環境完全一致的接口的方法,抽象出一個虛擬的軟件或硬件接口,使得上層軟件可以直接運行在虛擬的環境上。

重要概念,在虛擬化中,物理資源通常有一個定語稱爲宿主(Host),而虛擬出來的資源通常有一個定語稱爲客戶(Guest)。

各層虛擬化簡介:

硬件抽象層上的虛擬化,通過虛擬硬件抽象層來實現虛擬機,爲客戶機操作系統呈現和物理硬件相同或相近的硬件抽象層。通常,宿主機和客戶機的ISA(Instruction Set Architecture,指令集架構)是相同的,客戶機的大部分指令可以在宿主機處理器上直接運行,只有部分需要虛擬化的指令纔會由虛擬化軟件進行處理,從而大大降低了虛擬化開銷。比較知名的硬件抽象層的產品有VMware、Xen等。

操作系統層上的虛擬化,通過系統內核提供多個相互隔離的用戶態實例,這些用戶態實例具有自己獨立的文件系統、網絡、系統設置和庫函數等。因爲這是操作系統哦內核主動提供的虛擬化,因此操作系統層上的虛擬化比較高效,其系統開銷非常小。

庫函數層上的虛擬化,通過虛擬化操作系統的應用級函數的服務接口,使得應用程序不需要修改,就可以在不同的操作中無縫運行,從而提供系統間的互操作性。例如,WINE系統是在Linux上模擬了Windows的庫函數接口,使得一個Windows的應用程序能夠在Linux平臺上運行。

編程語言級虛擬化,程序的代碼由虛擬機的運行時支持系統首先翻譯爲硬件的機器語言,然後再執行。通常一個語言類虛擬機是作爲一個進程在物理計算機系統中運行的,因此,它屬於進程級虛擬化。

1.2 系統虛擬化

系統虛擬化是指將一臺物理計算機系統虛擬化爲一臺或多臺虛擬計算機系統,每個虛擬的計算機系統(簡稱虛擬機)都擁有自己的虛擬硬件(如CPU、內存和設備等),來提供一個獨立的虛擬機執行環境。這個虛擬化層被稱爲虛擬機監控器。

圖 1-2 系統虛擬化

虛擬計算機系統和物理計算機系統可以是完全不同的ISA。但是,不同的ISA使得虛擬機的每一條指令都需要在物理機上模擬執行,從而造成較大的性能下降。

1974年,Popek和Goldberg定義了虛擬機可以看作是物理機的一種高效隔離的複製。該定義蘊含了三層含義(同質、、高效和資源受控)。

同質,虛擬機的運行環境和物理機的環境在本質上需要是相同的,但是在表現上能夠有一定的差異。如核數可以不一樣,但處理器必須是同一種基本類型。

高效,要求虛擬機中運行的軟件接近物理機上直接運行的性能。因此,軟件在虛擬機中運行時,大多數的指令是直接運行在硬件上的,只有少量指令需要經過VM處理貨模擬。

資源受控,VM對系統資源擁有完全控制能力和管理權限。

1.3 系統虛擬化的發展歷史

1.4 系統虛擬化的好處

系統虛擬化提供了多個隔離的執行環境,以虛擬機爲粒度的抽象提供了優秀的分裝性,使得一臺計算機上能夠運行多臺虛擬機,虛擬機之間有很強的隔離性,虛擬機與硬件沒有直接的關聯。

1.4.1 封裝性

以虛擬機爲粒度的封裝使得虛擬機運行環境的保存非常便捷。虛擬機的優秀封裝性使得一下應用模型可以很方便地實現。如,快照、克隆、掛起。優秀的封裝性使得虛擬機保存更容易。

1.4.2 多實例

在一臺計算機上運行多個虛擬機使得資源的調度更爲優化,不同的虛擬機有不同的繁忙和空閒時段,忙閒交錯使得單個計算機的系統資源利用率大大提高。

1.4.3 隔離

每個應用程序可以在自己的操作系統環境中獨立地運行而不影響其他的工作負載。

1.4.4 硬件無關性

儘管目前計算機體系結構呈現出很大的異構性,但只要另一臺計算機提供相同的虛擬硬件抽象層,一個虛擬機就能夠無縫地遷移過去。虛擬機遷移是虛擬化技術中的亮點之一。

1.4.5 特權功能

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章