国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運(yùn)營 > linux系統(tǒng)下,我也用虛擬機(jī)——linux虛擬機(jī)隨筆

linux系統(tǒng)下,我也用虛擬機(jī)——linux虛擬機(jī)隨筆

時間:2023-07-12 19:15:01 | 來源:網(wǎng)站運(yùn)營

時間:2023-07-12 19:15:01 來源:網(wǎng)站運(yùn)營

linux系統(tǒng)下,我也用虛擬機(jī)——linux虛擬機(jī)隨筆:

前言##

是時候聊一下虛擬機(jī)了,因?yàn)槲覀兒竺婕磳⒘牡?Linux 玩法,包括硬盤分區(qū)以及在同一塊硬盤上安裝多個 Linux 發(fā)行版、在 X86 的實(shí)模式下運(yùn)行 16 位的程序、探索 Grub 和 Linux 純字符模式等等,要截圖和錄像的話,必須借助于虛擬機(jī)。

說起虛擬機(jī),大家都不陌生。需要使用虛擬機(jī)的場景也非常的多,對于有志于寫操作系統(tǒng)的同志,往往需要一個虛擬機(jī)來運(yùn)行和調(diào)試他寫的系統(tǒng);對于喜歡研究網(wǎng)絡(luò)體系結(jié)構(gòu)的朋友,往往需要在自己的電腦上虛擬出 N 個系統(tǒng)組成各種各樣的網(wǎng)絡(luò)。(這個需要電腦的配置夠強(qiáng)大才行,幸好本人的電腦夠。)還有些朋友用著 Windows 卻想玩 Linux,用著 Linux 卻想玩 Windows,這樣用虛擬機(jī)玩起來也比較方便;最后對于在 Linux 環(huán)境下解決起來比較困難的一些需求,如迅雷、QQ、網(wǎng)銀、支付寶等,使用虛擬機(jī)安裝一個 Windows 系統(tǒng),也可以非常輕松地搞定。我自己也經(jīng)常在 Windows 中用 VMWare,感覺它功能強(qiáng)大、使用方便,運(yùn)行效率也非常高。我的博客中有不少內(nèi)容都是在虛擬機(jī)中折騰出來的。在 Linux 系統(tǒng)下,我也用虛擬機(jī),這一篇隨筆就向大家展示一下 Linux 中的幾種常見的虛擬機(jī)軟件。

虛擬機(jī)的分類很復(fù)雜。什么全虛擬、半虛擬什么的搞得人頭暈。而且桌面用戶和企業(yè)級用戶對虛擬機(jī)的期望值是不一樣的。比如說,我可能期望這樣一個虛擬機(jī):

1.它能模擬出一臺完整的個人電腦,我可以給它安裝任何我想安裝的操作系統(tǒng);

2.它要有比較好用的圖形界面,模擬出的電腦也要能無障礙運(yùn)行 Windows 或 Gnome 這樣的圖形系統(tǒng),能打游戲最好;

3.客戶操作系統(tǒng)所用的硬盤就是宿主操作系統(tǒng)中的一個鏡像文件,隨時可復(fù)制粘貼,隨時可打包帶走;

4.最好能模擬出一些本身不存在的硬件,像多個網(wǎng)卡什么的。

很顯然,VMWare Workstation 就是這樣一個可以完美滿足我要求的桌面用戶最滿意的虛擬機(jī)。我經(jīng)常使用它來折騰各個 Linux 發(fā)行版,而且運(yùn)行流暢。當(dāng)然,在 Linux 這個開源的世界我們是不該去使用破解版這樣的東西的。不過不用擔(dān)心,在 Linux 江湖中,還有 VirtualBox、QEMU 這樣的虛擬機(jī)軟件可用。

而企業(yè)級用戶呢,他們期望的虛擬機(jī)可能是這樣的:

1.它不一定能模擬出一臺完整的電腦,重點(diǎn)是 CPU、內(nèi)存、磁盤和網(wǎng)卡,重點(diǎn)是能當(dāng)服務(wù)器使用;

2.它的性能一定要好,虛擬的 CPU 性能一定要接近物理 CPU,一定要充分利用物理 CPU 的所有特性,為了性能,甚至只能安裝經(jīng)過修改過內(nèi)核的操作系統(tǒng);(所謂的半虛擬化技術(shù)。)

3.它隔離性一定要好,它的目的是把一臺機(jī)器分成 N 臺機(jī)器用,而管理這 N 臺虛擬機(jī)的宿主機(jī)要越不占用資源越好,客戶機(jī)是主,宿主機(jī)是次;(正如 Xen 這樣。)

4.由于企業(yè)級用戶對性能的追求,所以客戶機(jī)所用的硬盤可能真是一個獨(dú)立的物理硬盤、磁盤陣列、網(wǎng)絡(luò)文件系統(tǒng)什么的,而不僅僅只是宿主機(jī)上的一個鏡像文件;

5.它不一定需要有圖形界面,因?yàn)槭褂妹钚懈菀坠芾?,像自動化啊、遠(yuǎn)程化啊、批量化啊什么的;

6.更多的企業(yè)級高可用性需求,像什么熱備份啊、動態(tài)遷移啊等等。

從上面這些期望值可以看出,虛擬機(jī)領(lǐng)域水很深,市場前景也很廣闊。各個虛擬機(jī)廠家把自家產(chǎn)品吹得天花亂墜那也是很常見的,因?yàn)槊恳粋€用戶期望的點(diǎn)都可以大做文章嘛。所謂臨淵羨魚,不如退而結(jié)網(wǎng),各種虛擬機(jī)看得再過癮,也不如自己嘗試一下。

能模擬不同硬件架構(gòu)的虛擬機(jī) —— QEMU##

還是老規(guī)矩,先給出參考資料,它的學(xué)習(xí)資料還在這里: QEMU 的官方文檔 。

或者,在自己的系統(tǒng)中輸入如下命令查看手冊頁:

man qemu-system-i386man qemu-img等等...QEMU 本身是一個非常強(qiáng)大的虛擬機(jī),甚至在 Xen、KVM 這些虛擬機(jī)產(chǎn)品中都少不了 QEMU 的身影。在 QEMU 的官方文檔中也提到,QEMU 可以利用 Xen、KVM 等技術(shù)來加速。為什么需要加速呢,那是因?yàn)槿绻麊渭兪褂?QEMU 的時候,它里面的 CPU 等硬件都是模擬出來的,也就是全虛擬化,所以運(yùn)行速度是肯定趕不上物理硬件的。它甚至可以模擬不同架構(gòu)的硬件,比如說在使用 Intel X86 的 CPU 的電腦中模擬出一個 ARM 體系的電腦或 MIPS 體系的電腦,這樣模擬出的 CPU,運(yùn)行速度更加不可能趕上物理 CPU。使用加速以后呢,可以把客戶操作系統(tǒng)的 CPU 指令直接轉(zhuǎn)發(fā)到物理 CPU,自然運(yùn)行效率大增。

點(diǎn)擊鏈接加入群聊【linux內(nèi)核交流群】:https://jq.qq.com/?_wv=1027&k=sw0dcAEy

QEMU 同時也是一個非常簡單的虛擬機(jī),給它一個硬盤鏡像就可以啟動一個虛擬機(jī),如果想定制這個虛擬機(jī)的配置,用什么樣的 CPU 啊、什么樣的顯卡啊、什么樣的網(wǎng)絡(luò)配置啊,只需要指定相應(yīng)的命令行參數(shù)就可以了。它支持許多格式的磁盤鏡像,包括 VirtualBox 創(chuàng)建的磁盤鏡像文件。它同時也提供一個創(chuàng)建和管理磁盤鏡像的工具 qemu-img。QEMU 及其工具所使用的命令行參數(shù),直接查看其文檔即可。

下面開始體驗(yàn)。先看看 Ubuntu 軟件源中和 QEMU 有關(guān)的包有哪些:




我的電腦是 Intel 的 CPU,而我想虛擬的也是個人電腦,所以我安裝的自然是 qemu-system-x86,另外一個有用的是 qemu-utils。查看 QEMU 軟件包中的工具及文檔:

使用 qemu-img 創(chuàng)建磁盤映像文件,使用 qemu-system-i386 啟動虛擬機(jī),并安裝操作系統(tǒng):

WinXP 估計(jì)是目前全網(wǎng)絡(luò)上最好下載的操作系統(tǒng)了。運(yùn)行以上命令后,彈出熟悉的系統(tǒng)安裝界面。安裝過程我就不啰嗦了。下圖是安裝完 WinXP 操作系統(tǒng)之后的效果??梢越o qemu-system-i386 指定更多的參數(shù),在再一次啟動 WinXP 的時候,我除了給它分配了 2G 內(nèi)存,我還使用 -smp 2 參數(shù)為它分配了兩個 CPU,還使用 -vga vmware 為它指定和 VMWare 虛擬顯卡一樣的顯卡。雖然指定兩個 CPU,但是性能仍較差。隨便拖動一下窗口 CPU 使用率就飆升到 100%。

而且從上圖中可以看到,虛擬機(jī)中的 CPU 雖然顯示為 3.5GHz,但是很顯然是 QEMU 模擬出來的,和物理 CPU 有顯著差別。事實(shí)上我的電腦配置相當(dāng)強(qiáng)悍,Core i7-4770K 的四核八線程 CPU,請看 lshw 的輸出結(jié)果:

Intel Core i7-4770K 的 CPU,虛擬出的 XP 也分配了 2G 的內(nèi)存和兩個 CPU,但是流暢度仍較差。說明單純使用 QEMU 還是不能滿足我們桌面用戶的需要。配合Xen 或者 KVM 呢?性能是否會有質(zhì)的飛躍呢?

被加入 Linux 內(nèi)核的虛擬機(jī) —— KVM##

上一節(jié)展示的 QEMU 是一個強(qiáng)大的虛擬機(jī)軟件,它可以完全以軟件的形式模擬出一臺完整的電腦所需的所有硬件,甚至是模擬出不同架構(gòu)的硬件,在這些虛擬的硬件之上,可以安裝完整的操作系統(tǒng)。QEMU 的運(yùn)行模式如下圖:

很顯然,這種完全以軟件模擬硬件的形式雖然功能強(qiáng)大,但是性能難以滿足用戶的需要。模擬出的硬件的性能和物理硬件的性能相比,必然會大打折扣。為了提高虛擬機(jī)軟件的性能,開發(fā)者們各顯神通。其中,最常用的辦法就是在主操作系統(tǒng)中通過內(nèi)核模塊開一個洞,通過這個洞將虛擬機(jī)中的操作直接映射到物理硬件上,從而提高虛擬機(jī)中運(yùn)行的操作系統(tǒng)的性能。如下圖:

其中 KVM 就是這種加速模式的典型代表。在社區(qū)中,大家常把 KVM 和 Xen 相提并論,但是它們其實(shí)完全不一樣。從上圖可以看出,使用內(nèi)核模塊加速這種模式,主操作系統(tǒng)仍然占主導(dǎo)地位,內(nèi)核模塊只是在主操作系統(tǒng)中開一個洞,用來連接虛擬機(jī)和物理硬件,給虛擬機(jī)加速,但是虛擬機(jī)中的客戶操作系統(tǒng)仍然受到很大的限制。這種模式比較適合桌面用戶使用,主操作系統(tǒng)仍然是他們的主戰(zhàn)場,不管是辦公還是打游戲,都通過主操作系統(tǒng)完成,客戶操作系統(tǒng)只是按需使用。至于 Xen,則完全使用不同的理念,比較適合企業(yè)級用戶使用,桌面用戶就不要輕易去碰了,具體內(nèi)容我后面再講。

其實(shí) VirtualBox 也是采取的這種內(nèi)核模塊加速的模式。我之所以這么說,是因?yàn)樵诎惭b VirtualBox 時,它會要求安裝 DKMS。如下圖:

熟悉 Linux 的人知道,DKMS 就是為了方便用戶管理內(nèi)核模塊而存在的,不熟悉 DKMS 的人 Google 一下也可以了解個大概。關(guān)于 VirtualBox 的具體使用方面的內(nèi)容,我下一節(jié)再講。這一篇主要講 KVM。

KVM 和 QEMU 是相輔相成的,QEMU 可以使用 KVM 內(nèi)核模塊加速,而 KVM 需要使用 QEMU 運(yùn)行虛擬機(jī)。從上圖可以看到,如果要使用 Ubuntu 的包管理軟件安裝 KVM,其實(shí)安裝的就是 qemu-kvm。而 qemu-kvm 并不是一個什么很復(fù)雜的軟件包,它只包含很少量幾個文件,如下圖:

用 man 命令查看一下它的文檔,發(fā)現(xiàn) qemu-kvm 包不僅包含的文件很少,而且它的可執(zhí)行文件 kvm 也只是對 qemu-system-x86_64 命令的一個簡單包裝,如下圖:

那么問題來了,kvm 內(nèi)核模塊究竟是由哪個包提供的呢?其實(shí),自從 Linux 2.6 開始,kvm 就已經(jīng)被加入內(nèi)核了。如果非要找出 kvm 內(nèi)核模塊 kvm.ko 是由哪個包提供的,可以用如下命令考察一下:

寫到這里,已經(jīng)可以看出 KVM 的使用是很簡單的了。下面,我使用 KVM 運(yùn)行一下上一篇中安裝的 WinXP 操作系統(tǒng),體驗(yàn)一下 QEMU 經(jīng)過 KVM 加速后的運(yùn)行效率。使用如下命令運(yùn)行使用 KVM 加速的 QEMU:

可以看出,使用 KVM 加速后,虛擬機(jī)中的 WinXP 運(yùn)行速度提升了不少,開機(jī)只用了 34 秒。我將分辨率調(diào)整為 1366*768,圖形界面運(yùn)行也很流暢,不管是打開 IE 瀏覽器還是 Office 辦公軟件都沒有問題,再也沒有出現(xiàn) CPU 使用率飆升到 100% 的情況。如果用 ps -ef | grep qemu 命令查看一下,發(fā)現(xiàn) kvm 命令運(yùn)行的還是 qemu-system-x86_64 程序,只不過加上了 -enable-kvm 參數(shù),如下圖:

另外,對于桌面用戶來說,有一個好用的圖形化界面也是很重要的。雖然 QEMU 和 KVM 自身不帶圖形界面的虛擬機(jī)管理器,但是我們可以使用第 3 方軟件,比如 virt-manager。只需要使用 sudo apt-get install virt-manager 即可安裝該軟件。該軟件依賴于 libvirt,在安裝過程中也會自動安裝。運(yùn)行 virt-manager 的效果如下圖,注意必須使用 sudo 運(yùn)行,因?yàn)樵撥浖枰売脩魴?quán)限:

該軟件可自動識別系統(tǒng)中的虛擬機(jī)環(huán)境是 QEMU+KVM 還是 Xen。新建一個虛擬機(jī),由于之前安裝過一個 WinXP 系統(tǒng),所以選擇導(dǎo)入現(xiàn)有硬盤鏡像。點(diǎn)下一步后,出現(xiàn)如下界面:

這一步?jīng)]什么好說的,再點(diǎn)下一步,如下圖:

這里可以設(shè)置網(wǎng)絡(luò)選項(xiàng)。如果勾選“在安裝前自定義配置”的話,還可以對硬件進(jìn)行進(jìn)一步的自定義,如下圖:

在上圖中,我們可以看到虛擬機(jī)支持的所有虛擬顯卡的類型,在這里,我當(dāng)然選擇的是 VMVGA,因?yàn)槲乙郧敖?jīng)常用 VMWare,知道這些操作系統(tǒng)在 VMWare 的虛擬顯卡設(shè)置下運(yùn)行得都沒有問題。當(dāng)然,其它的選項(xiàng)都可以試一下,不過在虛擬的操作系統(tǒng)中需要安裝相應(yīng)的驅(qū)動程序。

最后,虛擬機(jī)運(yùn)行的效果圖如下:

可以看到,該程序提供的界面有非常豐富的功能菜單,功能是非常強(qiáng)大的,甚至可以向虛擬機(jī)中的操作系統(tǒng)發(fā)送組合按鍵。

可以這么說,如果沒有 VirtualBox 的話,QEMU+KVM 的組合應(yīng)該是桌面用戶的首選。

VirtualBox —— 性能強(qiáng)大的經(jīng)典架構(gòu)##

VirtualBox 號稱是目前開源界最強(qiáng)大的虛擬機(jī)產(chǎn)品,在 Linux 平臺上,基本上都被大家選擇為首選的虛擬機(jī)軟件。VirtualBox 的強(qiáng)大不是蓋的,畢竟其后臺是超有錢的 Oracle 公司。VirtualBox 的任性也不是蓋的,它硬是沒有使用我前文所述的那些 qemu、kvm、libvirt 等被各個虛擬機(jī)使用的開源組件,它的前端、后端以及內(nèi)核加速模塊都是自己開發(fā)的,唯有遠(yuǎn)程桌面所需要的 VNC 大約使用了 libvncserver。

我在標(biāo)題中說到 VirutalBox 是使用的經(jīng)典架構(gòu)。所謂經(jīng)典,主要體現(xiàn)在以下幾個方面:

1.虛擬機(jī)及虛擬機(jī)中的系統(tǒng)(Guest System)仍運(yùn)行于主操作系統(tǒng)(Host System)之上,只是通過主操作系統(tǒng)的內(nèi)核模塊進(jìn)行加速;

2.Unix 系統(tǒng)中 Front-End 模式的經(jīng)典架構(gòu),在 VirtualBox 中,VirtualBox 的圖形界面只不過是命令行界面的虛擬機(jī)軟件 VBoxManage 的圖形包裝而已,同時,它還提供 VBoxSDL、VBoxHeadless 等命令行工具。VBoxHeadless 就可以運(yùn)行一個不顯示虛擬機(jī)桌面的虛擬機(jī),如果要顯示桌面,可以運(yùn)行一個遠(yuǎn)程桌面連接它。前后端分離有一個好處,就是對于桌面用戶,可以使用前端的圖形界面簡化操作,而對于企業(yè)級用戶,可以使用命令行工具構(gòu)建自動化腳本,甚至在系統(tǒng)啟動時自動運(yùn)行虛擬機(jī)。

我并不是一開始就喜歡上 VirtualBox 的,一點(diǎn)小小的插曲差點(diǎn)就讓我錯過了這么好的虛擬機(jī)軟件。本來我剛開始看到在各個 Linux 論壇都將 VirtualBox 放到首位,而不是在新聞中鋪天蓋地的 KVM、Xen,我就覺得 VirutalBox 可能有點(diǎn)不夠?qū)I(yè),再加上第一次使用 VirtualBox 時,發(fā)現(xiàn)它不能完美轉(zhuǎn)發(fā) Ctrl+Alt+Fx(x=1~12),發(fā)現(xiàn)它的有些配置不能完全在圖形界面中設(shè)置,需要手動更改配置文件,然后我就放棄了。直到我掌握的正確的折騰 Linux 的方法論,看完了它長達(dá) 369 頁的用戶手冊,我才真正了解了它的強(qiáng)大,并深深愛上了它。VirtualBox 把右邊的 Ctrl 定義為 Host 鍵,要向客戶機(jī)發(fā)送 Ctrl+Alt+Fx,只需要按 Host+Fx 就行了。

首先,在 Ubuntu 中安裝 VirutalBox 是非常容易的,只需要一個 sudo apt-get install virtualbox 即可。

安裝完 VirtualBox 后,可以考察一下它所遵守的我之前提到的“經(jīng)典架構(gòu)”,命令和運(yùn)行結(jié)果如下圖:

lsmod 命令可以看到 VirtualBox 安裝后,在主操作系統(tǒng)中安裝了好幾個內(nèi)核模塊,用來對虛擬機(jī)進(jìn)行加速。至于使用內(nèi)核模塊對虛擬機(jī)加速的圖片我這里就不再貼了,請大家參考我的上一篇。通過 dpkg -L 命令可以考察 VirtualBox 提供了哪些命令行工具。最后,通過 dpkg -S 命令可以看到,VirtualBox這個可執(zhí)行程序其實(shí)是屬于 virtualbox-qt 軟件包的,它只是一個圖形界面的封裝。

啟動 VirtualBox,新建虛擬機(jī)和安裝操作系統(tǒng)的過程我就不多說了,圖形界面很強(qiáng)大,一步一步執(zhí)行準(zhǔn)沒錯。安裝完 WinXP 后,運(yùn)行效果如下圖:

從該圖中可以看出,WinXP 系統(tǒng)認(rèn)出的 CPU 是準(zhǔn)確的 Intel Core i7-4770K,雖然我只給它分配了兩個核心。但是顯卡不能準(zhǔn)確識別。之所以是這樣,是因?yàn)?WinXP 系統(tǒng)中沒有相應(yīng)的驅(qū)動,所以,需要安裝 VirtualBox 的客戶系統(tǒng)增強(qiáng)工具。在菜單欄選擇安裝增強(qiáng)功能,如下圖:

然后 VirtualBox 就會給 WinXP 安裝一個虛擬光盤,雙擊該光盤,就可以在 WinXP 系統(tǒng)中安裝客戶系統(tǒng)增強(qiáng)工具,如下圖:

客戶系統(tǒng)增強(qiáng)工具是安裝在 Guest System 中的,可以認(rèn)為客戶系統(tǒng)增強(qiáng)工具主要是包含了客戶操作系統(tǒng)中所需要驅(qū)動,因?yàn)闆]有這些驅(qū)動,客戶操作系統(tǒng)可能無法認(rèn)識那些虛擬出來的硬件,比如虛擬顯卡什么的。當(dāng)然,客戶系統(tǒng)增強(qiáng)工具的功能遠(yuǎn)遠(yuǎn)不止這些,比如顯卡 3D 加速啊、主操作系統(tǒng)和客戶操作系統(tǒng)共享文件夾啊什么的,還有一個最牛 B 的,那就是讓客戶操作系統(tǒng)進(jìn)入無縫模式。比如安裝完用戶增強(qiáng)工具后,可以識別出顯卡類型,并且有不同的分辨率選項(xiàng),如下圖:

按 Host+L 鍵,可以鍵入無縫模式,如下圖,可以看到在 Ubuntu 系統(tǒng)中,Ubuntu 風(fēng)格的窗口和 WinXP 風(fēng)格的窗口共存:

再玩大一點(diǎn),使用 IE 瀏覽器訪問博客園,如下圖:




由此可見,在 Linux 系統(tǒng)中使用 Windows 的軟件進(jìn)行辦公不再是夢,什么網(wǎng)銀、什么 QQ,一樣毫無障礙。再按 Host+L 鍵,虛擬機(jī)會回到窗口模式。

VirtualBox 功能非常強(qiáng)大,單憑我這一篇博文是不可能學(xué)會的。好在是我這一個系列一直都是秉承“授人以魚不如授人以漁”的原則,一直都是指導(dǎo)折騰 Linux 系統(tǒng)的方法論,并貼圖讓沒有親自動手機(jī)會的人也對 Linux 系統(tǒng)有一個直觀的感受,也一直指出從哪里可以找到相應(yīng)的學(xué)習(xí)資料。用 dpkg -L 命令,就可以找出我前面提到的 VirtualBox 自帶的長達(dá)369頁的文檔,使用 Ubuntu 自帶的 evince 閱讀器閱讀之,如下圖:







當(dāng)然,也可以從官網(wǎng)下載 VirtualBox 官方文檔 pdf 版,放到手機(jī)上有空的時候慢慢閱讀。至于我前面說的 VirtualBox 這不能那不能什么的,完全都是我自己不切實(shí)際的瞎說,等你看完它的文檔,你就會發(fā)現(xiàn)它沒有什么是不能的。就 VirtualBox 在我機(jī)器上的運(yùn)行效果看,流暢度要超過前面的 QEMU+KVM組合,圖形性能也要更加強(qiáng)大。它的文檔中還有更多更高級的玩法,仔細(xì)閱讀吧,精通命令行和配置文件不是夢,而且 VirtualBox 并不僅僅適用于桌面用戶,對于企業(yè)級的應(yīng)用,它也是可以的。

Xen —— 令人腦洞大開的奇異架構(gòu)##

在虛擬機(jī)領(lǐng)域,Xen 具有非常高的知名度,其名字經(jīng)常在各類文章中出現(xiàn)。同時 Xen 也具有非常高的難度,別說玩轉(zhuǎn),就算僅僅只是理解它,都不是那么容易。之所以如此,那是因?yàn)?Xen 采用了和我前面介紹的那幾個虛擬機(jī)完全不同的架構(gòu)。在這里,我稱之為令人腦洞大開的奇異架構(gòu)。

在經(jīng)典的虛擬機(jī)架構(gòu)中,虛擬機(jī)軟件運(yùn)行于 Host System 之中,而 Guest System 運(yùn)行于虛擬機(jī)軟件之中。為了提高 Guest System 的運(yùn)行速度,虛擬機(jī)軟件一般會在 Host System 中使用內(nèi)核模塊開一個洞,將 Guest System 的運(yùn)行指令直接映射到物理硬件上。但是在 Xen 中,則根本沒有 Host System 的概念,傳說它所有的虛擬機(jī)都直接運(yùn)行于硬件之上,虛擬機(jī)運(yùn)行的效率非常的高,虛擬機(jī)之間的隔離性非常的好。

當(dāng)然,傳說只是傳說。我剛開始也是很納悶,怎么可能讓所有的虛擬機(jī)都直接運(yùn)行于硬件之上。后來我終于知道,這只是一個噱頭。虛擬機(jī)和硬件之間,還是有一個管理層的,那就是 Xen Hypervisor,只不過這個管理層可以做得相當(dāng)薄。當(dāng)然 Xen Hypervisor 的功能畢竟是有限的,怎么樣它也比不上一個操作系統(tǒng),因此,在 Xen Hypervisor 上運(yùn)行的虛擬機(jī)中,有一個虛擬機(jī)是具有特權(quán)的,它稱之為 Domain 0,而其它的虛擬機(jī)都稱之為 Domain U。

Xen的架構(gòu)如下圖:

從圖中可以看出,Xen 虛擬機(jī)架構(gòu)中沒有 Host System,在硬件層之上是薄薄的一層 Xen Hypervisor,在這之上就是各個虛擬機(jī)了,沒有 Host System,只有 Domain 0,而 Guest System 都是 Domain U,不管是 Domain 0 還是 Domain U,都是虛擬機(jī),都是被虛擬機(jī)軟件管理的對象。

既然 Domain 0 也是一個虛擬機(jī),也是被管理的對象,所以可以給它分配很少的資源,然后將其余的資源公平地分配到其它的 Domain。但是很奇怪的是,所有的虛擬機(jī)管理軟件其實(shí)都是運(yùn)行在這個 Domain 0 中的。同時,如果要連接到其它 Guest System 的控制臺,而又不是使用遠(yuǎn)程桌面(VNC)的話,這些控制臺也是顯示在 Domian 0 中的。所以說,這是一個奇異的架構(gòu),是一個讓人很不容易理解的架構(gòu)。

這種架構(gòu)桌面用戶不喜歡,因?yàn)?Host System 變成了 Domain 0,本來應(yīng)該掌控所有資源的主操作系統(tǒng)變成了一個受管理的虛擬機(jī),本來用來打游戲、編程、聊天的主戰(zhàn)場受到限制了,可能不能完全發(fā)揮硬件的性能了,還有可能運(yùn)行不穩(wěn)定了,自然會心里不爽。(Domain 0確實(shí)不能安裝專用顯卡驅(qū)動,確實(shí)會運(yùn)行不穩(wěn)定,這個后面會講。)但是企業(yè)級用戶喜歡,因?yàn)樗械?Domain 都是虛擬機(jī),所以可以更加公平地分配資源,而且由于 Domain U 不再是運(yùn)行于 Domian 0 里面的軟件,而是和 Domain 0 平級的系統(tǒng),這樣即使 Domain 0 崩潰了,也不會影響到正在運(yùn)行的 Domain U。(真的不會有絲毫影響嗎?我表示懷疑。)

下面開始在 Ubuntu 系統(tǒng)中體驗(yàn) Xen。使用如下命令可以在 Ubuntu 的軟件源中搜索和 Xen 相關(guān)的軟件包以及安裝 Xen Hypervisor:

sudo aptitude search xensudo aptitude install xen-hypervisor-4.4-amd64傳說在舊版本的 Xen Hypervisor 上只能運(yùn)行經(jīng)過修改過的 Linux 內(nèi)核。但是在目前的版本中不存在該問題。我機(jī)器上的 Ubuntu 14.10 系統(tǒng)不經(jīng)任何修改,就可以當(dāng)成 Domain 0 中的系統(tǒng)運(yùn)行。至于是否讓該系統(tǒng)運(yùn)行于 Xen Hypervisor 上,在啟動時可以選擇,如下圖:

通過查看 Grub 的配置文件,可以看到通過 Xen 虛擬機(jī)啟動 Ubuntu 系統(tǒng)時,Grub 先啟動的是 /boot/xen-4.4-amd64.gz,然后才把 Linux 內(nèi)核以及 initrd 文件作為模塊載入內(nèi)存。也就是說,Grub 啟動 Xen Hypervisor,然后 Xen Hypervisor 運(yùn)行 Domian 0。

前面提到 Host System 一下子變成了 Domain 0 中的操作系統(tǒng)是讓桌面用戶比較不爽的事,這里詳細(xì)論述。雖然說目前的 Xen 同時支持全虛擬化和半虛擬化,支持操作系統(tǒng)不經(jīng)任何修改就運(yùn)行于 Xen 虛擬機(jī)上(全虛擬),但是系統(tǒng)是否穩(wěn)定還是和內(nèi)核有很大關(guān)系的。比如說我在 Ubuntu 14.04 剛推出的那段時間,在 Ubuntu 14.04 中使用 Xen 是沒有什么問題的,但是經(jīng)過幾次系統(tǒng)升級后,Xen 就出問題了,沒辦法成功進(jìn)入 Domain 0 中的 Ubuntu 14.04?,F(xiàn)在我用的是 Ubuntu 14.10,已經(jīng)升過好幾次級了,目前使用Xen還是很穩(wěn)定的。其次就是顯卡驅(qū)動的問題,我的 Ubuntu 當(dāng)主系統(tǒng)用時,使用的是 NVIDIA 的顯卡驅(qū)動,但是當(dāng) Ubuntu 運(yùn)行于 Domain 0 中時,就不能使用 NVIDIA 的顯卡驅(qū)動了,否則無法進(jìn)入圖形界面。

下面來測試一下 Xen 虛擬機(jī)的運(yùn)行效果。通過前文的探討,可以看出一個虛擬機(jī)的運(yùn)行需要兩個要素:一是一套虛擬的硬件系統(tǒng),二是一個包含了操作系統(tǒng)的磁盤鏡像。QEMU 虛擬機(jī)關(guān)于硬件的配置全由命令行指定,VirtualBox 虛擬機(jī)的硬件配置存在于配置文件中,而 Xen 呢,它也存在于配置文件中,這個配置文件要我們自己寫。至于磁盤鏡像,還是復(fù)用我之前創(chuàng)建的那個 WinXP.img 吧,記住,它是 qcow2 格式的。

先進(jìn)入我主目錄的 virtual-os 目錄,ls 看一下,里面有我之前創(chuàng)建的 WinXP.img。然后,我們創(chuàng)建一個 WinXP_Xen.hvm 配置文件,其內(nèi)容如下:

builder = "hvm"name = "WinXP_Xen.hvm"memory = 2048vcpus = 2disk = [ '/home/youxia/virtual-os/WinXP.img, qcow2, hda, rw' ]sdl = 1這段配置文件很簡單,也很容易懂。 hvm 代表這是一個全虛擬化的虛擬機(jī),和全虛擬化相對的是半虛擬化,半虛擬化只能運(yùn)行經(jīng)過修改的內(nèi)核,但是可以獲得更高的性能。為該虛擬機(jī)分配 2 個 CPU 和 2G 內(nèi)存,并指定硬盤鏡像文件。最后一個 sdl=1 表示使用 SDL 圖形庫顯示虛擬操作系統(tǒng)的界面,如果不想用 SDL,也可以寫成 vnc=1,這樣需要使用 vncviewer 才能連接到虛擬機(jī)操作系統(tǒng)的桌面。

至于 Xen 的配置文件怎么寫,管理命令怎么用,這個必須得有學(xué)習(xí)資料。通過 man xl 和 man xl.cfg 查看手冊頁是可以的,但是最全面的資料還是在 Xen 的官網(wǎng) 上。

使用 sudo xl list 命令可以看到系統(tǒng)中只有一個Domain 0在運(yùn)行,然后使用 sudo xl create -c WinXP_Xen.hvm 即可運(yùn)行一個 Domian U 虛擬機(jī),該虛擬機(jī)使用 WinXP_Xen.hvm 配置文件。 xl 命令的 -c 選項(xiàng)表示把 Domain U 的控制臺顯示在 Domain 0 中,如果不用 -c 選項(xiàng)而使用 -V 選項(xiàng),則創(chuàng)建虛擬機(jī)后使用 vncviewer 進(jìn)行連接。新建的虛擬機(jī)運(yùn)行起來后,再次使用 sudo xl list 命令,可以看到除了Domain 0,還多了一個名稱為“WinXP_Xen.hvm”的虛擬機(jī)。

運(yùn)行效果如下圖:

關(guān)于 Xen 更多更高級的功能,比如動態(tài)遷移什么的,我這里就不試了。至于說到 Xen 虛擬機(jī)的隔離性,如果一個 Domain U 崩潰了,肯定是不會影響到 Domain 0和其它 Domain U 的,但是如果 Domain 0 崩潰了,Domain U 真的不會受到任何影響嗎?Domain 0 崩潰了怎么重啟它呢?這都是我沒想明白的問題。在折騰 Xen 的過程中,我曾多次重啟過機(jī)器,重啟后一看,WinXP_Xen.hvm 還在繼續(xù)運(yùn)行,似乎是沒有受到 Domain 0 的影響,但是我就想,我機(jī)器都重啟了,電源都斷了,Domain U 它真的能絲毫不受影響嗎?

我覺得,Xen 虛擬機(jī)不應(yīng)該是桌面用戶的首選,因?yàn)樗軜?gòu)比較奇異不容易理解,可能因內(nèi)核升級而出現(xiàn)不穩(wěn)定,不能充分發(fā)揮桌面硬件的性能,如不能使用 Nvidia 的顯卡;桌面用戶還是應(yīng)該首選 VirtualBox。企業(yè)及客戶可以考慮 Xen,因?yàn)樗梢蕴峁┹^好的性能和隔離性,企業(yè)級用戶不需要桌面用戶那么多的功能,所以可以把 Domain 0 做到很薄,可以完全不要圖形界面,也不用經(jīng)常升級內(nèi)核,甚至可以選擇一個經(jīng)過修改優(yōu)化的內(nèi)核,這樣就可以在一套硬件上運(yùn)行盡可能多的虛擬機(jī)。

關(guān)于 Linux 下虛擬機(jī)相關(guān)的內(nèi)容,就寫到這里吧。歡迎大家批評指正。

點(diǎn)此鏈接:https://ke.qq.com/course/2705727?flowToken=1041141

享受一元試聽vip課程



關(guān)鍵詞:虛擬,系統(tǒng),隨筆

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉