免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
剖析 Linux hypervisor

hypervisor 之于操作系統(tǒng)類似于操作系統(tǒng)之于進程。它們?yōu)閳?zhí)行提供獨立的虛擬硬件平臺,而虛擬硬件平臺反過來又提供對底層機器的虛擬的完整訪問。但并不是所有 hypervisor 都是一樣的,這是件好事,因為 Linux 就是以靈活性和選擇性著稱。本文首先簡要介紹虛擬化和 hypervisor,然后探索兩個基于 Linux 的 hypervisor。

虛擬化和 hypervisor

我們首先花一點時間理解為什么虛擬化很重要,以及 hypervisor 的扮演的角色。(要更多地了解這兩個主題,請參見 參考資料)。

在本文中,虛擬化 就是通過某種方式隱藏底層物理硬件的過程,從而讓多個操作系統(tǒng)可以透明地使用和共享它。這種架構的另一個更常見的名稱是平臺虛擬化。在典型的分層架構中,提供平臺虛擬化的層稱為 hypervisor (有時稱為虛擬機管理程序 或 VMM)。來賓操作系統(tǒng)稱為虛擬機(VM),因為對這些 VM 而言,硬件是專門針對它們虛擬化的。圖 1 簡單的展示了這個分層架構。

圖 1. 顯示常用硬件虛擬化的簡單分層架構

平臺虛擬化的好處很多。美國環(huán)境保護署(EPA)報告的一組有趣的統(tǒng)計數(shù)據(jù)就證明了其好處。EPA 研究服務器和數(shù)據(jù)中心的能源效率時發(fā)現(xiàn),實際上服務器只有 5% 的時間是在工作的。在其他時間,服務器都處于 “休眠” 狀態(tài)。在單個服務器上的虛擬化平臺能夠改善服務器的利用率,但是減少服務器的數(shù)量才是它的最大功用。減少服務器數(shù)量意味著減少不動資產(chǎn)、能耗、冷卻和管理成本。使用更少的硬件還能提高可靠性??傊?,平臺虛擬化不僅帶來技術優(yōu)勢,還能創(chuàng)造成本和能源優(yōu)勢。

在圖 1 中可以看到,hypervisor 是提供底層機器虛擬化的軟件層(在某些情況下需要處理器支持)。并不是所有虛擬化解決方案都是一樣的,您可以在 參考資料 中了解更多的虛擬化方式。繼續(xù)討論進程,操作系統(tǒng)將對機器的底層資源的訪問虛擬化為進程。hypervisor 也做一樣的事情,但其對象不是進程,而是整個來賓操作系統(tǒng)。

hypervisor 分類

hypervisor 可以劃分為兩大類。首先是類型 1,這種 hypervisor 是直接運行在物理硬件之上的。其次是類型 2,這種 hypervisor 運行在另一個操作系統(tǒng)(運行在物理硬件之上)中。類型 1 hypervisor 的一個例子是基于內(nèi)核的虛擬機(KVM —— 它本身是一個基于操作系統(tǒng)的 hypervisor)。類型 2 hypervisor 包括 QEMU 和 WINE。

回頁首

hypervisor 的構成

hypervisor(不管是什么類型)僅是一個從其來賓操作系統(tǒng)抽象機器硬件的分層應用程序。通過這種方式,每個來賓操作系統(tǒng)看到的僅是一個 VM 而不是真實的硬件機器。我們大致看一下 hypervisor 的內(nèi)部組成,以及它在 VM(來賓操作系統(tǒng))上的表示。

在較高級別上,hypervisor 需要少量設施啟動來賓操作系統(tǒng):一個需要驅(qū)動的內(nèi)核映像、一個配置(比如 IP 地址和所需的內(nèi)存量)、一個磁盤盒一個網(wǎng)絡設備。磁盤和網(wǎng)絡設備通常映射到機器的物理磁盤和網(wǎng)絡設備(如圖 2 所示)。最后,需要使用一組來賓操作系統(tǒng)工具啟動和管理來賓操作系統(tǒng)。

圖 2. 在假設 hypervisor 中的最小資源映射

然后,一個簡化的 hypervisor 架構實現(xiàn)最后的關鍵功能,從而使來賓操作系統(tǒng)可以和宿主操作系統(tǒng)同時運行。實現(xiàn)這個功能需要一些特定的要素,如圖 3 所示。首先,類似于將用戶空間應用程序和內(nèi)核函數(shù)連接起來的系統(tǒng)調(diào)用,一個通??捎玫奶摂M化調(diào)用(hapercall,hypervisor 對操作系統(tǒng)進行的系統(tǒng)調(diào)用)層允許來賓系統(tǒng)向宿主操作系統(tǒng)發(fā)出請求。可以在內(nèi)核中虛擬化 I/O,或通過來賓操作系統(tǒng)的代碼支持它。故障必須由 hypervisor 親自處理,從而解決實際的故障,或?qū)⑻摂M設備故障發(fā)送給來賓操作系統(tǒng)。hypervisor 還必須處理在來賓操作系統(tǒng)內(nèi)部發(fā)生的異常。(畢竟,來賓操作系統(tǒng)發(fā)生的錯誤僅會停止該系統(tǒng),而不會影響 hypervisor 或其他來賓操作系統(tǒng))。hypervisor 的核心要素之一是頁映射器,它將硬件指向特定操作系統(tǒng)(來賓或 hypervisor)的頁。最后,需要使用一個高級別的調(diào)度器在hypervisor和來賓操作系統(tǒng)之間傳輸控制。

圖 3. 簡化的基于 Linux 的hypervisor

回頁首

Linux hypervisor

本文探索兩個基于 Linux 的 hypervisor 解決方案。首先是 KVM,它是首個被集成到 Linux 內(nèi)核的 hypervisor 解決方案,并且實現(xiàn)了完整的虛擬化。其次是 Lguest,這是一個實驗 hypervisor,它通過少量的更改提高準虛擬化。

KVM

KVM 針對運行在 x86 硬件硬件上的、駐留在內(nèi)核中的虛擬化基礎結(jié)構。KVM 是第一個成為原生 Linux 內(nèi)核(2.6.20)的一部分的 hypervisor,它是由 Avi Kivity 開發(fā)和維護的,現(xiàn)在歸 Red Hat 所有。

這個 hypervisor 提供 x86 虛擬化,同時擁有到 PowerPC? 和 IA64 的通道。另外,KVM 最近還添加了對對稱多處理(SMP)主機(和來賓)的支持,并且支持企業(yè)級特性,比如活動遷移(允許來賓操作系統(tǒng)在物理服務器之間遷移)。

KVM 是作為內(nèi)核模塊實現(xiàn)的,因此 Linux 只要加載該模塊就會成為一個hypervisor。KVM 為支持 hypervisor 指令的硬件平臺提供完整的虛擬化(比如 Intel? Virtualization Technology [Intel VT] 或 AMD Virtualization [AMD-V] 產(chǎn)品)。KVM 還支持準虛擬化來賓操作系統(tǒng),包括 Linux 和 Windows?。

這種技術由兩個組件實現(xiàn)。第一個是可加載的 KVM 模塊,當在 Linux 內(nèi)核安裝該模塊之后,它就可以管理虛擬化硬件,并通過 /proc 文件系統(tǒng)公開其功能(見圖 4)。第二個組件用于 PC 平臺模擬,它是由修改版 QEMU 提供的。QEMU 作為用戶空間進程執(zhí)行,并且在來賓操作系統(tǒng)請求方面與內(nèi)核協(xié)調(diào)。

圖 4. KVM hypervisor 的高級別視圖

當新的操作系統(tǒng)在 KVM 上啟動時(通過一個稱為 kvm 的實用程序),它就成為宿主操作系統(tǒng)的一個進程,因此就可以像其他進程一樣調(diào)度它。但與傳統(tǒng)的 Linux 進程不一樣,來賓操作系統(tǒng)被 hypervisor 標識為處于 “來賓” 模式(獨立于內(nèi)核和用戶模式)。

每個來賓操作系統(tǒng)都是通過 /dev/kvm 設備映射的,它們擁有自己的虛擬地址空間,該空間映射到主機內(nèi)核的物理地址空間。如前所述,KVM 使用底層硬件的虛擬化支持來提供完整的(原生)虛擬化。I/O 請求通過主機內(nèi)核映射到在主機上(hypervisor)執(zhí)行的 QEMU 進程。

KVM 在 Linux 環(huán)境中以主機的方式運行,不過只要底層硬件虛擬化支持,它就能夠支持大量的來賓操作系統(tǒng)。您可以在 參考資料 部分找一個到受支持的來賓操作系統(tǒng)的列表。

Lguest(以前的 lhype)

Lguest hypervisor 由澳大利亞 IBM 的 Rusty Russell 開發(fā),它采用完全不同的方式實現(xiàn)虛擬化。Lguest 并沒有為運行任意操作系統(tǒng)提供完整的虛擬化支持,而是為支持 x86 的 Linux 來賓操作系統(tǒng)(也稱為Linux-on-Linux 虛擬化)提供輕量級準虛擬化。這意味著來賓操作系統(tǒng)知道自己正在被虛擬化,并且這同時還會改進性能。但是,Lguest 不需要 QEMU 提供平臺虛擬化(像在 KVM 中一樣)來改進性能。使用 Lguest 這種方法還減少了總代碼需求,僅需在來賓操作系統(tǒng)和宿主操作系統(tǒng)中使用一個瘦層?,F(xiàn)在,我們探索這些變化,并查看 Lguest 環(huán)境的高級別架構。

如圖 5 所示,來賓操作系統(tǒng)包含一個 Lguest 代碼瘦層(根據(jù)定義,就是準虛擬化)。這段代碼提供許多服務。在最高的級別,有一些代碼可以決定正在啟動的內(nèi)核是否被虛擬化。此外,還有一個通過虛擬化調(diào)用將特權操作發(fā)送給宿主操作系統(tǒng)的抽象層(通過 paravirt_ops 實現(xiàn))。例如,來賓操作系統(tǒng)不能禁用中斷,以使這些請求在宿主操作系統(tǒng)中執(zhí)行。您還可找到一個為來賓操作系統(tǒng)實現(xiàn)設備抽象的總線,以及一組實現(xiàn)控制臺、虛擬塊驅(qū)動器和虛擬網(wǎng)絡驅(qū)動器(允許與其他來賓通信)的簡單驅(qū)動器。

圖 5. 實現(xiàn) x86 準虛擬化的 Lguest 的架構

內(nèi)核部分被實現(xiàn)為可加載的模塊,即lg.ko。這個模塊包含來賓操作系統(tǒng)通向宿主內(nèi)核的接口。第一個組件是切換器,它實現(xiàn)一種方法,讓來賓操作系統(tǒng)在執(zhí)行時根據(jù)上下文進行切換。這個模塊還實現(xiàn) /proc 文件系統(tǒng)代碼(針對 /dev/lguest),該代碼實現(xiàn)到內(nèi)核和驅(qū)動器(包括虛擬化調(diào)用)的用戶空間接口。還有一些代碼通過使用影子頁表(shadow page-table)和管理 x86 區(qū)段來提供內(nèi)存映射。

最后,內(nèi)核中的 Documentation 子目錄包含啟動實用程序(lguest),用于啟動新的來賓操作系統(tǒng)實例。這個文件負責兩項任務,即使用和記錄。

Lguest 從 2.6.23(2007 年 10 月)開始就成為主流內(nèi)核,并且由 Rusty Russell 開發(fā)和維護。它大約包含 5000 行源代碼,包括用戶空間實用程序。盡管 Lguest 很簡單(據(jù)說是這樣的),但它能提供真正的準虛擬化。不過簡單性往往與局限性相隨。例如,Lguest 僅虛擬化其他支持 Lguest 的來賓操作系統(tǒng),并且目前僅能用于 x86 架構。盡管存在這些限制,Lguest 仍然提供一種有趣的虛擬化方式,并且對任何希望研究 Rusty 的代碼的人員公開。

回頁首

Linux hypervisor 的益處

使用 Linux 作為內(nèi)核開發(fā) hypervisor 有實實在在的好處。最明顯的是,以 Linux 為基礎開發(fā) hypervisor 受益于穩(wěn)步前進的 Linux,以及為改進 Linux 投入的大量工作。從典型的優(yōu)化、bug 修復、調(diào)度和內(nèi)存管理創(chuàng)新到支持不同處理器架構,Linux 都是一個不斷進步的平臺(引自 Salisbury 市的 John 的 “站在巨人的肩膀上” 一文)。

不久前已經(jīng)證明,通過向 KVM 添加一個內(nèi)核模塊,就可以將 Linux 內(nèi)核轉(zhuǎn)變?yōu)?hypervisor。Lguest 進一步改進了這種方法,并且通過受限制的準虛擬化進一步簡化了該解決方案。

使用 Linux 作為平臺的另一個奇特好處是,除了可以將該平臺用作 hypervisor 之外,您還可以將其用作操作系統(tǒng)。因此,除了可以在 Linux hypervisor 上運行多個來賓操作系統(tǒng)之外,您還可以在該級別上運行其他傳統(tǒng)的應用程序。所以,不必擔心帶有新的應用編程接口(API)的新平臺,因為您擁有用于開發(fā)應用程序的標準 Linux 平臺(如果需要監(jiān)控應用程序或 hypervisor)。標準協(xié)議(TCP/IP)和其他有用的應用程序(Web 服務器)和來賓操作系統(tǒng)都是可用的?;仡櫼幌掠懻?KVM 時的 圖 4:除了來賓操作系統(tǒng)之外,還使用了修改了 KVM 的 QEMU。這是一個標準進程,并展示了 Linux 作為 hypervisor 的強大之處。KVM 在平臺虛擬化中利用 QEMU,并使用 Linux 作為hypervisor,因此實現(xiàn)了這個構思,即讓來賓操作系統(tǒng)能夠和其他 Linux 應用程序協(xié)調(diào)執(zhí)行。

回頁首

結(jié)束語

在 hypervisor 開發(fā)的過程中,hypervisor 就是新開辟的戰(zhàn)場。3 年以前,操作系統(tǒng)是戰(zhàn)場的主線,并且控制了一小部分據(jù)點。然而,今天戰(zhàn)場已轉(zhuǎn)移到 hypervisor,并且 Linux 擔任一個明確的角色。

但是,也有聲音反對使用 Linux 作為 hypervisor,并且最劇烈的批評來自于夸夸其談的空論。在數(shù)年以前這種情況曾出現(xiàn)在嵌入式領域。今天,作為嵌入式操作系統(tǒng)的 Linux 已是不曾止步的強者。但是我們也有對付批評的辦法,通過一些架構上的改進可以讓 Linux 成為最強大、最普遍和更靈活的操作系統(tǒng)。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
車載基礎軟件——內(nèi)核和中間件核心技術:虛擬化(二)
EB corbos Hypervisor
微軟推出Windows Sandbox:可安全運行任何應用的一次性VM
虛擬化技術概覽
Hyper-V 基礎配置之一
解讀三種虛擬化之路連載三:虛擬化技術趨勢
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服