自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux 虛擬化方法、架構(gòu)和實現(xiàn)

系統(tǒng) Linux
虛擬化的含義豐富,應(yīng)用廣泛。服務(wù)器虛擬化是目前一個主要的虛擬化技術(shù),即在一個宿主計算機(jī)上提供多個獨立操作系統(tǒng)。本文將探索虛擬化背后的思想,然后討論實現(xiàn)虛擬化的一些技術(shù)。我們還將了解現(xiàn)有的其他一些虛擬化技術(shù),例如 Linux 上操作系統(tǒng)的虛擬化。

虛擬化的含義豐富,應(yīng)用廣泛。服務(wù)器虛擬化是目前一個主要的虛擬化技術(shù),即在一個宿主計算機(jī)上提供多個獨立操作系統(tǒng)。本文將探索虛擬化背后的思想,然后討論實現(xiàn)虛擬化的一些技術(shù)。我們還將了解現(xiàn)有的其他一些虛擬化技術(shù),例如 Linux 上操作系統(tǒng)的虛擬化。

進(jìn)行虛擬化 就是要將某種形式的東西以另外一種形式呈現(xiàn)出來。對計算機(jī)進(jìn)行虛擬化就是要將計算機(jī)以多臺計算機(jī)或一臺完全不同的計算機(jī)的形式呈現(xiàn)出來。

虛擬化也可以將多臺計算機(jī)組合成一臺計算機(jī)的形式呈現(xiàn)出來。這通常稱為服務(wù)器聚合或網(wǎng)格計算。

下面讓我們首先來看一下虛擬化的起源。

虛擬化的歷史

虛擬化并不是什么新主題;實際上,它的存在已經(jīng)超過 40 年了。虛擬化技術(shù)最早的一些用法包括 IBM? 7044、麻省理工學(xué)院(MIT)在 IBM 704 上開發(fā)的 CTSS(Compatible Time Sharing System)以及曼徹斯特大學(xué)的 Atlas 項目(世界上最早的超級計算機(jī)之一),這些都是請求頁面調(diào)度和監(jiān)管進(jìn)程調(diào)用的先驅(qū)。

硬件虛擬化

IBM 早在 20 世紀(jì) 60 年代開發(fā) System/360? Model 67 大型機(jī)時就認(rèn)識到了虛擬化的重要性。Model 67 通過 VMM(Virtual Machine Monitor)對所有的硬件接口都進(jìn)行了虛擬化。在早期計算中,操作系統(tǒng)被稱為 supervisor。能夠在其他操作系統(tǒng)上運(yùn)行的操作系統(tǒng)被稱為 hypervisor(這個術(shù)語是在 20 世紀(jì) 70 年代出現(xiàn)的)。

VMM 可以直接在底層硬件上運(yùn)行,允許運(yùn)行多個虛擬機(jī)(VM)。每個 VM 都可以運(yùn)行一個自己私有操作系統(tǒng)的實例 -- 在早些時候,這稱為 CMS(或 Conversational Monitor System)。之后 VM 繼續(xù)發(fā)展,現(xiàn)在您可以在 System z9? 大型機(jī)上發(fā)現(xiàn) VM。這提供了很好的向后兼容性,甚至是對 System/360 產(chǎn)品線的兼容性。

處理器虛擬化

虛擬化早期的另外一種用法(在本例中是對處理器的仿真)是 P-code(或偽碼)機(jī)。P-code 是一種機(jī)器語言,運(yùn)行于虛擬機(jī)而不是實際硬件。P-code 早在 20 世紀(jì) 70 年代就已在加州大學(xué)圣地亞哥分校(UCSD)Pascal 系統(tǒng)上頗有名氣了,它將 Pascal 程序編譯成 P-code,然后在一個 P-code 虛擬機(jī)上運(yùn)行。這就使 P-code 程序具有了高度的可移植性,而且,只要有可用的 P-code 虛擬機(jī),P-code 程序就可以運(yùn)行。

20 世紀(jì) 60 年代對 BCPL(Basic Combined Programming Language)的設(shè)計中也采用了相同的概念,C 語言即由 BCPL 發(fā)展而來。在這種用法中,編譯器會將 BCPL 代碼編譯成稱為 O-code 的中間機(jī)器代碼。接下來的第二個步驟是將 O-code 編譯成目標(biāo)機(jī)器的原始語言。現(xiàn)代編譯器所使用的這種模型為將編譯器移植到新目標(biāo)體系結(jié)構(gòu)上提供了很大的靈活性(通過一種中間語言將前端和后端分隔開來)。

指令集虛擬化

虛擬化最新的發(fā)展稱為指令集虛擬化,或者二進(jìn)制轉(zhuǎn)換。在這種模型中,虛擬指令集被轉(zhuǎn)換成底層硬件的物理指令集,這個過程通常都是動態(tài)的。當(dāng)代碼執(zhí)行時,就會對代碼的某個段進(jìn)行轉(zhuǎn)換。如果出現(xiàn)分支情況,就會導(dǎo)入新代碼集并進(jìn)行轉(zhuǎn)換。這使它與緩存操作非常類似,后者是將指令塊從內(nèi)存移動到本地快速緩存中執(zhí)行。

這種模型最近在 Transmeta 設(shè)計的 Crusoe 中央處理單元(CPU)中得到了使用。二進(jìn)制轉(zhuǎn)換由 Code Morphing 的專利技術(shù)實現(xiàn)。類似的一個例子是完全虛擬化解決方案通過運(yùn)行時代碼掃描來查找和重定向特權(quán)指令(用來解決特定處理器指令集的一些問題)。

#p#

虛擬化的類型

實現(xiàn)虛擬化的方法不止一種。實際上,有幾種方法都可以通過不同層次的抽象來實現(xiàn)相同的結(jié)果。本節(jié)將介紹 Linux 中常用的 3 種虛擬化方法,以及它們相應(yīng)的優(yōu)缺點。業(yè)界有時會使用不同的術(shù)語來描述相同的虛擬化方法。本文中使用的是最常用的術(shù)語,同時給出了其他術(shù)語以供參考。

硬件仿真

毫無疑問,最復(fù)雜的虛擬化實現(xiàn)技術(shù)就是硬件仿真。在這種方法中,可以在宿主系統(tǒng)上創(chuàng)建一個硬件 VM 來仿真所想要的硬件,如圖 1 所示。

 圖 1. 硬件仿真使用 VM 來模擬所需要的硬件

正如您所能預(yù)見的一樣,使用硬件仿真的主要問題是速度會非常慢。由于每條指令都必須在底層硬件上進(jìn)行仿真,因此速度減慢 100 倍的情況也并不稀奇。若要實現(xiàn)高度保真的仿真,包括周期精度、所仿真的 CPU 管道以及緩存行為,實際速度差距甚至可能會達(dá)到 1000 倍之多。

硬件仿真也有自己的優(yōu)點。例如,使用硬件仿真,您可以在一個 ARM 處理器主機(jī)上運(yùn)行為 PowerPC? 設(shè)計的操作系統(tǒng),而不需要任何修改。您甚至可以運(yùn)行多個虛擬機(jī),每個虛擬器仿真一個不同的處理器。

完全虛擬化

完全虛擬化(full virtualization),也稱為原始虛擬化,是另外一種虛擬化方法。這種模型使用一個虛擬機(jī),它在客戶操作系統(tǒng)和原始硬件之間進(jìn)行協(xié)調(diào)(參見圖 2)。"協(xié)調(diào)"在這里是一個關(guān)鍵,因為 VMM 在客戶操作系統(tǒng)和裸硬件之間提供協(xié)調(diào)。特定受保護(hù)的指令必須被捕獲下來并在 hypervisor 中進(jìn)行處理,因為這些底層硬件并不由操作系統(tǒng)所擁有,而是由操作系統(tǒng)通過 hypervisor 共享。

 圖 2. 完全虛擬化使用 hypervisor 來共享底層硬件

雖然完全虛擬化的速度比硬件仿真的速度要快,但是其性能要低于裸硬件,因為中間經(jīng)過了 hypervisor 的協(xié)調(diào)過程。完全虛擬化的最大優(yōu)點是操作系統(tǒng)無需任何修改就可以直接運(yùn)行。惟一的限制是操作系統(tǒng)必須要支持底層硬件(例如 PowerPC)。

超虛擬化

超虛擬化(paravirtualization)是另外一種流行的虛擬化技術(shù),它與完全虛擬化有一些類似。這種方法使用了一個 hypervisor 來實現(xiàn)對底層硬件的共享訪問,還將與虛擬化有關(guān)的代碼集成到了操作系統(tǒng)本身中(參見圖 3)。這種方法不再需要重新編譯或捕獲特權(quán)指令,因為操作系統(tǒng)本身在虛擬化進(jìn)程中會相互緊密協(xié)作。

 圖 3. 超虛擬化與客戶操作系統(tǒng)共享進(jìn)程

正如前面介紹的一樣,超虛擬化技術(shù)需要為 hypervisor 修改客戶操作系統(tǒng),這是它的一個缺點。但是超虛擬化提供了與未經(jīng)虛擬化的系統(tǒng)相接近的性能。與完全虛擬化類似,超虛擬化技術(shù)可以同時支持多個不同的操作系統(tǒng)。

操作系統(tǒng)級的虛擬化

我們要介紹的最后一種技術(shù)是操作系統(tǒng)級的虛擬化,它使用的技術(shù)與前面所介紹的有所不同。這種技術(shù)在操作系統(tǒng)本身之上實現(xiàn)服務(wù)器的虛擬化。這種方法支持單個操作系統(tǒng),并可以將獨立的服務(wù)器相互簡單地隔離開來(參見圖 4)。

 圖 4. 操作系統(tǒng)級虛擬化實現(xiàn)服務(wù)器的隔離

操作系統(tǒng)級的虛擬化要求對操作系統(tǒng)的內(nèi)核進(jìn)行一些修改,但是其優(yōu)點是可以獲得原始性能。

#p#

為什么虛擬化如此重要?

在了解目前 Linux 可以使用的虛擬化方法之前,讓我們先來了解一下虛擬化的優(yōu)點。

從商業(yè)角度來看,使用虛擬化技術(shù)有很多原因。大部分原因都可以歸結(jié)于服務(wù)器的鞏固(server consolidation)。簡單來說,如果您可以對一個服務(wù)器上多個未經(jīng)充分利用的系統(tǒng)進(jìn)行虛擬化,由于服務(wù)器的數(shù)量少了,顯然可以節(jié)省大量電力、空間、制冷和管理成本。由于很難確定服務(wù)器的利用情況,虛擬化技術(shù)支持稱為動態(tài)遷移的技術(shù)。動態(tài)遷移(Live migration)允許操作系統(tǒng)及其應(yīng)用程序遷移到新的服務(wù)器上,從而實現(xiàn)負(fù)載在可用硬件上的均衡。

虛擬化技術(shù)對于開發(fā)人員來說也非常重要。Linux 內(nèi)核占據(jù)了一個單一的地址空間,這意味著內(nèi)核或任何驅(qū)動程序的故障都會導(dǎo)致整個操作系統(tǒng)的崩潰。虛擬化技術(shù)意味著您可以運(yùn)行多個操作系統(tǒng),如果其中一個系統(tǒng)由于某個 bug 而崩潰了,那么 hypervisor 和其他操作系統(tǒng)都依然可以繼續(xù)運(yùn)行。這可以使內(nèi)核的調(diào)試非常類似于用戶空間應(yīng)用程序的調(diào)試。

與 Linux 有關(guān)的虛擬化項目

  表 1 給出了幾個 Linux 系統(tǒng)上的虛擬化項目,并著重介紹了其中的開源解決方案。

  表 1. 與 Linux 有關(guān)的虛擬化項目

Bochs 是一個 x86 計算機(jī)仿真器,它在很多平臺上(包括 x86、PowerPC、Alpha、SPARC 和 MIPS)都可以移植和運(yùn)行。使 Bochs 更為有趣的是它不僅可以對處理器進(jìn)行仿真,還可以對整個計算機(jī)進(jìn)行仿真,包括計算機(jī)的外圍設(shè)備,比如鍵盤、鼠標(biāo)、視頻圖像硬件、網(wǎng)卡(NIC)等。

Bochs 可以配置作為一個老式的 Intel? 386 或其后繼處理器使用,例如 486、Pentium、Pentium Pro 或 64 位處理器。它甚至還可以對一些可選的圖形指令進(jìn)行仿真,例如 MMX 和 3DNow。

使用 Bochs 仿真器,您可以運(yùn)行任何 Linux 上的 Linux 發(fā)行版、Linux 上的 Microsoft? Windows? 95/98/NT/2000(以及各種應(yīng)用程序),甚至 Linux 上的 BSD(Berkeley Software Distribution)操作系統(tǒng)(FreeBSD、OpenBSD 等)。

QEMU(仿真)

QEMU 是另外一個仿真器,它與 Bochs 非常類似,不過也有一些值得一提的區(qū)別。QEMU 支持兩種操作模式。第一種是 Full System Emulation(完全系統(tǒng)仿真)模式。這種模式與 Bochs 非常類似,它可以對一個具有處理器和外圍設(shè)備的完整個人計算機(jī)(PC)進(jìn)行仿真。這種模式可以仿真很多處理器架構(gòu),例如 x86、x86_64、ARM、SPARC、PowerPC 和 MIPS,其動態(tài)轉(zhuǎn)換的速度也比較理想。使用這種模式,您可以在 Linux、Solaris 和 FreeBSD 上仿真 Windows 操作系統(tǒng)(包括 XP)和 Linux。很多其他操作系統(tǒng)的組合也都可以得到支持(更多信息請參看 參考資料 部分)。

QEMU 還可以支持第二種模式,稱為 User Mode Emulation(用戶模式仿真)。這種模式只能宿主于 Linux,在這種模式下,可以啟動不同體系結(jié)構(gòu)的二進(jìn)制文件。例如,在 x86 平臺上運(yùn)行的 Linux 系統(tǒng)上可以執(zhí)行為 MIPS 體系架構(gòu)編譯的二進(jìn)制文件。這種模式支持的其他體系結(jié)構(gòu)還包括 ARM、SPARC 和 PowerPC,而且還有很多尚在開發(fā)之中。

VMware(完全虛擬化)

VMware 是完全虛擬化的一個商業(yè)解決方案。在客戶操作系統(tǒng)和裸硬件之間有一個 hypervisor 作為抽象層使用。這個抽象層允許任何操作系統(tǒng)在硬件上運(yùn)行,而不需要了解任何其他客戶操作系統(tǒng)。

VMware 也會對可用的 I/O 硬件進(jìn)行虛擬化,并將一些高性能的設(shè)備驅(qū)動程序加入到 hypervisor 中。

整個虛擬化后的環(huán)境都作為一個文件保存,這意味著整個系統(tǒng)(包括客戶操作系統(tǒng)、VM 和虛擬硬件)可以很容易地快速遷移到新宿主機(jī)器上進(jìn)行負(fù)載均衡。

z/VM (完全虛擬化)

盡管 IBM System z? 是一個新品牌,不過它實際上已經(jīng)有很長的一段歷史,可以一直追溯到 20 世紀(jì) 60 年代。System/360 在 1965 年就可以支持使用虛擬機(jī)進(jìn)行虛擬化。有趣的是,System z 保留了對之前的 System/360 產(chǎn)品線的向后兼容性。

z/VM? 是 System z 上的操作系統(tǒng) hypervisor。其核心是 Control Program(CP),它為客戶操作系統(tǒng),包括 Linux,提供了物理資源的虛擬化(參見圖 5)。這樣,多個處理器和其他資源就可以在多個客戶操作系統(tǒng)上被虛擬化。

 圖 5. 使用 z/VM 的操作系統(tǒng)級虛擬化

z/VM 也可以為想要相互通信的客戶操作系統(tǒng)仿真一個客戶局域網(wǎng)(LAN)。仿真完全是在 hypervisor 中進(jìn)行的,因此相當(dāng)安全。

Xen(超虛擬化)

Xen 是一個來自于 XenSource 的操作系統(tǒng)級超虛擬化的免費開源解決方案?;叵胍幌略诔摂M化中,hypervisor 和操作系統(tǒng)會共同協(xié)作,雖然操作系統(tǒng)需要進(jìn)行一些更改,但卻可以帶來接近于原始系統(tǒng)的性能。

就像 Xen 需要進(jìn)行協(xié)作(對客戶操作系統(tǒng)進(jìn)行修改)一樣,只有那些修補(bǔ)過的操作系統(tǒng)才可以通過 Xen 進(jìn)行虛擬化。Linux 本身就是開源的,所以從 Linux 角度來看,這是一個很合理的折衷,因為最終可以獲得比完全虛擬化更好的性能。但是從廣泛支持的角度來看(例如對其他非開源操作系統(tǒng)的支持),這顯然是一個缺點。

Windows 可以在 Xen 上作為一個客戶操作系統(tǒng)運(yùn)行,但是它只能在運(yùn)行 Intel Vanderpool 或 AMD Pacifica 的系統(tǒng)上使用。支持 Xen 的其他操作系統(tǒng)包括 Minix、Plan 9、NetBSD、FreeBSD 和 OpenSolaris。

User-mode Linux(超虛擬化)

User-mode Linux(UML)允許 Linux 操作系統(tǒng)在其他操作系統(tǒng)的用戶空間中運(yùn)行。每個客戶 Linux 操作系統(tǒng)都存在于宿主 Linux 操作系統(tǒng)中的一個進(jìn)程中(參見圖 6)。這就允許 Linux 內(nèi)核(使用自己的相關(guān)用戶空間)在單個 Linux 內(nèi)核中運(yùn)行。

 圖 6. User-mode Linux 中的 Linux

在 2.6 版本的 Linux 內(nèi)核中,UML 駐留于主內(nèi)核樹內(nèi),但它必須提前啟用,然后再重新編譯才能使用。這些變化除了常見的虛擬化功能之外,還可以提供設(shè)備的虛擬化。這樣一來,客戶操作系統(tǒng)就可以共享可用的物理設(shè)備,例如塊設(shè)備(比如軟盤、CD-ROM 和文件系統(tǒng))、控制臺、NIC 設(shè)備、聲音硬件等。

注意由于客戶內(nèi)核是在應(yīng)用程序空間中運(yùn)行的,因此它們必須為這種用法而被特殊編譯(不過它們可以是不同的內(nèi)核版本)。這樣就產(chǎn)生了主機(jī)內(nèi)核(硬件上的內(nèi)核)和客戶內(nèi)核(在主機(jī)內(nèi)核的用戶空間中運(yùn)行)。這些內(nèi)核甚至可以是嵌套的,這樣就允許一個客戶內(nèi)核在另外一個運(yùn)行于主機(jī)內(nèi)核的客戶內(nèi)核上運(yùn)行。

Linux-VServer(操作系統(tǒng)級虛擬化)

Linux-VServer 是一個操作系統(tǒng)級虛擬化解決方案。Linux-VServer 對 Linux 內(nèi)核進(jìn)行虛擬化,這樣多個用戶空間環(huán)境 -- 又稱為 Virtual Private Server(VPS) -- 就可以單獨運(yùn)行,而不需要互相了解。Linux-VServer 通過修改 Linux 內(nèi)核實現(xiàn)用戶空間的隔離。

要將各個用戶空間與其他用戶空間隔離開來,就需要從上下文的概念入手。上下文 是給定 VPS 進(jìn)程使用的一個容器,這樣通過諸如 ps 之類的工具就可以了解 VPS 的進(jìn)程。內(nèi)核為最初的引導(dǎo)定義了一個缺省的上下文。另外管理端還能查看所有的上下文(所有的執(zhí)行進(jìn)程)。正如您可能猜到的那樣,內(nèi)核和內(nèi)部數(shù)據(jù)結(jié)構(gòu)也需要進(jìn)行修改來支持這種虛擬化方法。

Linux-VServer 還使用了一種 chroot 格式來為每個 VPS 隔離 root 目錄。雖然 chroot 允許指定新 root 目錄,但還是需要其他一些功能(稱為 Chroot-Barrier)來限制 VPS 脫離其隔離的 root 目錄回到上級目錄。給定一個隔離的 root 目錄之后,每個 VPS 就可以擁有自己的用戶列表和 root 密碼。

2.4 和 2.6 版本的 Linux 內(nèi)核支持 Linux-VServer,它可以運(yùn)行于很多平臺之上,包括 x86、x86-64、SPARC、MIPS、ARM 和 PowerPC。

OpenVZ(操作系統(tǒng)級虛擬化)

OpenVZ 是另外一個操作系統(tǒng)級的虛擬化解決方案,它與 Linux-VServer 類似,不過也有一些有趣的區(qū)別。OpenVZ 是一個支持虛擬化的內(nèi)核(修改過的),可以支持用戶空間隔離、VPS 和一組用戶管理工具。例如,您可以簡單地從命令行創(chuàng)建一個新的 VPS:

清單 1. 從命令行創(chuàng)建 VPS

$ vzctl create 42 --ostemplate fedora-core-4

Creating VPS private area

VPS private area was created

$ vzctl start 42

Starting VPS ...

VPS is mounted

另外還可以使用 vzlist 命令顯示目前創(chuàng)建的 VPS,該命令與標(biāo)準(zhǔn) Linux ps 命令類似。

為了對進(jìn)程進(jìn)行調(diào)度,OpenVZ 還包括了兩級 CPU 調(diào)度器。首先,調(diào)度器確定哪個 VPS 應(yīng)該獲得 CPU。在這個步驟完成之后,第二級調(diào)度器會根據(jù)給定的標(biāo)準(zhǔn) Linux 優(yōu)先級挑選進(jìn)程來執(zhí)行。

OpenVZ 還包括了所謂的 beancounters。beancounter 包括很多參數(shù),這些參數(shù)為給定的 VPS 定義了資源分配。這為 VPS 提供了一定層次上的控制,定義了有多少內(nèi)存可用,有多少進(jìn)程間通信(IPC)對象可用等。

OpenVZ 的一個特性是檢查點功能和將 VPS 從一個物理服務(wù)器遷移到其他物理服務(wù)器上的能力。檢查點 意味著正在運(yùn)行的 VPS 的狀態(tài)被凍結(jié)并存儲到一個文件中。然后可以將這個文件遷移到一個新服務(wù)器上并加以還原以使 VPS 恢復(fù)運(yùn)行。

OpenVZ 支持很多硬件體系結(jié)構(gòu),包括 x86、x86-64 和 PowerPC。

 

#p#

對完全虛擬化和超虛擬化的硬件支持

回想一下 IA-32(x86)體系結(jié)構(gòu)在進(jìn)行虛擬化時會產(chǎn)生的一些問題。特定的特權(quán)模式指令無法捕獲,基于所使用的模式還可能返回不同的結(jié)果。例如,x86 STR 指令可以檢索安全狀態(tài),但是所返回的值要取決于請求者特定的特權(quán)級別。在嘗試在不同的層次對不同的操作系統(tǒng)進(jìn)行虛擬化時,這會出現(xiàn)問題。例如,x86 支持 4 環(huán)保護(hù),其中級別 0 (最高特權(quán))通常運(yùn)行操作系統(tǒng),級別 1 和 2 支持操作系統(tǒng)服務(wù),級別 3(最低級別)支持應(yīng)用程序。不過硬件供應(yīng)商已經(jīng)認(rèn)識到了這種缺陷(以及其他一些問題),并且已經(jīng)開發(fā)了一些支持并加速虛擬化的新設(shè)計。

Intel 正在開發(fā)新虛擬化技術(shù),能在 x86(VT-x)和 Itanium?(VT-i)體系架構(gòu)上支持 hypervisor。VT-x 支持兩種格式的操作,一種用于 VMM(root),另外一種用于客戶操作系統(tǒng)(非 root)。root 格式完全是特權(quán)級的,而非 root 格式是非特權(quán)級的(即使對環(huán) 0 來說也是如此)。這種體系架構(gòu)支持定義指令來使 VM(客戶操作系統(tǒng))退出到 VMM 和保存處理器狀態(tài)。

AMD 也開發(fā)了硬件輔助虛擬化技術(shù),稱為 Pacifica。除了其他一些特性之外,Pacifica 還為在特殊指令執(zhí)行時保存的客戶操作系統(tǒng)維護(hù)了一個控制塊。VMRUN 指令允許虛擬機(jī)(及其相關(guān)的客戶操作系統(tǒng))一直運(yùn)行,直到 VMM 重新獲得控制權(quán)為止(這也是可配置的)。這種可配置能力允許 CMM 為每個客戶操作系統(tǒng)定制特權(quán)指令。Pacifica 還可以使用宿主和客戶內(nèi)存管理單元(MMU)表來進(jìn)行地址轉(zhuǎn)換。

這些新技術(shù)也可以應(yīng)用到此處討論的很多其他虛擬化技術(shù)中,包括 Xen、VMware、User-mode Linux 等。

Linux KVM(內(nèi)核虛擬機(jī))

Linux 傳出的最新消息是將 KVM 合并到 Linux 內(nèi)核中(2.6.20)。KVM 是一種完全虛擬化解決方案,它有一個方面非常獨特:它將 Linux 內(nèi)核轉(zhuǎn)換為一個使用內(nèi)核模塊的 hypervisor。這個模塊允許使用其他客戶操作系統(tǒng),然后在宿主 Linux 內(nèi)核的用戶空間中運(yùn)行(參見圖 7)。內(nèi)核中的 KVM 通過 /dev/kvm 字符設(shè)備來公開虛擬化后的硬件??蛻舨僮飨到y(tǒng)使用為 PC 硬件仿真修改過的 QEMU 進(jìn)程與 KVM 模塊接口。

 圖 7. 使用內(nèi)核虛擬機(jī)(KVM)的虛擬化

KVM 模塊向內(nèi)核中引入了一個新的執(zhí)行模塊。普通內(nèi)核支持內(nèi)核 模式和用戶 模式,而 KVM 則引入了一種客戶 模式??蛻裟J接脕韴?zhí)行所有非 I/O 客戶代碼,而普通用戶模式支持客戶 I/O。

KVM 的引入是 Linux 的一個有趣革新,因為它代表了作為主流 Linux 內(nèi)核一部分的第一個虛擬化技術(shù)。它已經(jīng)存在于 2.6.20 樹中,不過也可以作為 2.6.19 內(nèi)核的一個內(nèi)核模塊使用。當(dāng)在支持虛擬化的硬件上運(yùn)行時,KVM 支持 Linux(32 位和 64 位)和 Windows(32 位)客戶機(jī)。

結(jié)束語

如果 40 年前出現(xiàn)的技術(shù)還可以算是"新"技術(shù)的話,那么虛擬化就是一個重要的新技術(shù)領(lǐng)域。虛擬化技術(shù)已經(jīng)在很多場合中應(yīng)用過了,但現(xiàn)在主要的關(guān)注點是服務(wù)器和操作系統(tǒng)的虛擬化。與 Linux 非常類似,虛擬化為性能、可移植性和靈活性提供了很多選項。這意味著您可以選擇最適合于您自己應(yīng)用程序的虛擬化方法。

 

【編輯推薦】

  1. 嵌入式系統(tǒng)Linux內(nèi)核開發(fā)實戰(zhàn)指南
  2. 玩轉(zhuǎn)linux之二-驅(qū)動開發(fā)技術(shù)探析
  3. 嵌入式設(shè)備上的 Linux 系統(tǒng)開發(fā)
責(zé)任編輯:張燕妮 來源: IT168
相關(guān)推薦

2020-03-10 18:30:06

GPU虛擬化FPGA

2023-09-20 10:07:26

Linux虛擬化

2011-01-14 14:00:19

GanetiLinux集群虛擬化

2010-07-15 11:34:13

應(yīng)用虛擬化桌面虛擬化基礎(chǔ)架構(gòu)

2019-08-22 16:26:02

LinuxKVM虛擬化

2009-11-23 19:47:57

ibmdwLinux

2023-09-19 10:00:34

Linux虛擬

2010-04-14 09:12:46

虛擬化Linux虛擬化

2010-06-18 09:48:22

2013-09-03 18:07:49

GPU虛擬化華為NVIDIA

2015-08-04 12:51:15

浪潮

2012-12-28 10:18:03

LinuxXenKVM

2009-07-22 18:48:35

2015-05-11 15:50:10

OpenStack虛擬化Mutil-Hyper

2017-04-17 14:15:31

NFV虛擬化運(yùn)營商

2010-06-07 10:44:09

2010-10-13 18:24:36

應(yīng)用基礎(chǔ)架構(gòu)虛擬化服務(wù)器資源池動態(tài)集群

2013-03-21 14:00:01

VCF縱向虛擬化技術(shù)虛擬化

2024-01-02 11:15:46

Linux系統(tǒng)

2019-06-27 15:08:04

網(wǎng)絡(luò)虛擬化VXLAN
點贊
收藏

51CTO技術(shù)棧公眾號