久久久综合香蕉尹人综合网,四川少妇大战4黑人,亚洲乱亚洲乱妇,无码专区永久免费av网站

首頁 行業(yè)動態(tài) Linux 虛擬化方法、架構(gòu)和實現(xiàn)
Linux 虛擬化方法、架構(gòu)和實現(xiàn)
2017-21-01

      虛擬化的含義豐富,應(yīng)用廣泛。服務(wù)器虛擬化是目前一個主要的虛擬化技術(shù),即在一個宿主計算機(jī)上提供多個獨(dú)立操作系統(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)格計算。

處理器虛擬化

     虛擬化早期的另外一種用法(在本例中是對處理器的仿真)是 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)指令(用來解決特定處理器指令集的一些問題)。

虛擬化的類型   

    實現(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 所示。

                                                                                                 

    

    正如您所能預(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 共享。

                                                                                                   

    雖然完全虛擬化的速度比硬件仿真的速度要快,但是其性能要低于裸硬件,因為中間經(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)程中會相互緊密作。                              

                                                                              [img=upload/20090318104731-0.jpg]

    正如前面介紹的一樣,超虛擬化技術(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),并可以將獨(dú)立的服務(wù)器相互簡單地隔離開來(參見圖 4)。

                                                                                                    

 

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

      盡管是一個新品牌,不過它實際上已經(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)上被虛擬化。

                                                                                                       

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

Xen(超虛擬化)   

     Xen 是一個來自于 XenSource 的操作系統(tǒng)級超虛擬化的免費(fèi)開源解決方案。回想一下在超虛擬化中,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)行。

                                                                                                           

    在 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) -- 就可以單獨(dú)運(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。 對完全虛擬化和超虛擬化的硬件支持   回想一下 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 等。   


定制專屬于我的服務(wù)器
可選購標(biāo)準(zhǔn)配置的服務(wù)器產(chǎn)品,也可以根據(jù)自己需求定制專屬服務(wù)器
開始定制
服務(wù)熱線:400-028-1968 028-85099673 13881950196
工作時間:周一至周六 09:00-18:00(北京時間)
Copyright ? 2025 成都網(wǎng)爍信息科技有限公司 版權(quán)所有
本網(wǎng)站直接或間接向消費(fèi)者推銷商品或者服務(wù)的商業(yè)宣傳均屬于“廣告”(包裝及參數(shù)、售后保障等商品信息除外)