安卓手機上最好的虛擬機:手機虛擬機哪個好用

是時候聊一下虛擬機了,因為我們後面即將聊的 Linux 玩法,包括硬盤分區以及在同一塊硬盤上安裝多個 Linux 發行版、在 X86 的實模式下運行 16 位的程序、探索 Grub 和 Linux 純字符模式等等,要截圖和錄像的話,必須藉助於虛擬機。

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

虛擬機的分類很複雜。什麼全虛擬、半虛擬什麼的搞得人頭暈。而且桌面用戶和企業級用戶對虛擬機的期望值是不一樣的。比如說,我可能期望這樣一個虛擬機:

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

2.它要有比較好用的圖形界面,模擬出的電腦也要能無障礙運行 Windows 或 Gnome 這樣的圖形系統,能打遊戲最好;

3.客戶操作系統所用的硬盤就是宿主操作系統中的一個鏡像文件,隨時可複製粘貼,隨時可打包帶走;

4.最好能模擬出一些本身不存在的硬件,像多個網卡什麼的。

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

而企業級用戶呢,他們期望的虛擬機可能是這樣的:

1.它不一定能模擬出一台完整的電腦,重點是 CPU、內存、磁盤和網卡,重點是能當服務器使用;

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

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

4.由於企業級用戶對性能的追求,所以客戶機所用的硬盤可能真是一個獨立的物理硬盤、磁盤陣列、網絡文件系統什麼的,而不僅僅只是宿主機上的一個鏡像文件;

5.它不一定需要有圖形界面,因為使用命令行更容易管理,像自動化啊、遠程化啊、批量化啊什麼的;

6.更多的企業級高可用性需求,像什麼熱備份啊、動態遷移啊等等。

從上面這些期望值可以看出,虛擬機領域水很深,市場前景也很廣闊。各個虛擬機廠家把自家產品吹得天花亂墜那也是很常見的,因為每一個用戶期望的點都可以大做文章嘛。所謂臨淵羨魚,不如退而結網,各種虛擬機看得再過癮,也不如自己嘗試一下。

能模擬不同硬件架構的虛擬機 —— QEMU##

還是老規矩,先給出參考資料,它的學習資料還在這裡: QEMU 的官方文檔 。

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

man qemu-system-i386
man qemu-img
等等...

QEMU 本身就是一個非常強大的虛擬機,甚至可以在 Xen、KVM 這些虛擬機產品中都少不了 QEMU 的身影。在 QEMU 的官方文檔中也提到,QEMU 可以利用 Xen、KVM 等技術來加速。為什麼需要加速呢,那是因為如果單純使用 QEMU 的時候,它裡面的 CPU 等硬件都是模擬出來的,也就是全虛擬化,所以運行速度是肯定趕不上物理硬件的。它甚至可以模擬不同架構的硬件,比如說在使用 Intel X86 的 CPU 的電腦中模擬出一個 ARM 體系的電腦或 MIPS 體系的電腦,這樣模擬出的 CPU,運行速度更加不可能趕上物理 CPU。使用加速以後呢,可以把客戶操作系統的 CPU 指令直接轉發到物理系 CPU,自然運行效率大增。

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

下面開始體驗。先看看 Ubuntu 軟件源中和 QEMU 有關的包有哪些:

linux系統下,我也用虛擬機——linux虛擬機隨筆
linux系統下,我也用虛擬機——linux虛擬機隨筆

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

linux系統下,我也用虛擬機——linux虛擬機隨筆

使用 qemu-img 創建磁盤映像文件,使用 qemu-system-i386 啟動虛擬機,並安裝操作系統:

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

更多linux內核視頻教程文本資料免費獲取後台私信【內核】。

linux系統下,我也用虛擬機——linux虛擬機隨筆

被加入 Linux 內核的虛擬機 —— KVM##

上一節展示的 QEMU 是一個強大的虛擬機軟件,它可以完全以軟件的形式模擬出一台完整的電腦所需的所有硬件,甚至是模擬出不同架構的硬件,在這些虛擬的硬件之上,可以安裝完整的操作系統。QEMU 的運行模式如下圖:

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

其實 VirtualBox 也是採取的這種內核模塊加速的模式。我之所以這麼說,是因為在安裝 VirtualBox 時,它會要求安裝 DKMS。如下圖:

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

KVM 和 QEMU 是相輔相成的,QEMU 可以使用 KVM 內核模塊加速,而 KVM 需要使用 QEMU 運行虛擬機。從上圖可以看到,如果要使用 Ubuntu 的包管理軟件安裝 KVM,其實安裝的就是 qemu-kvm。而 qemu-kvm 並不是一個什麼很複雜的軟件包,它只包含很少量幾個文件,如下圖:

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

linux系統下,我也用虛擬機——linux虛擬機隨筆

寫到這裡,已經可以看出 KVM 的使用是很簡單的了。下面,我使用 KVM 運行一下上一篇中安裝的 WinXP 操作系統,體驗一下 QEMU 經過 KVM 加速後的運行效率。使用如下命令運行使用 KVM 加速的 QEMU:

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

linux系統下,我也用虛擬機——linux虛擬機隨筆

另外,對於桌面用戶來說,有一個好用的圖形化界面也是很重要的。雖然 QEMU 和 KVM 自身不帶圖形界面的虛擬機管理器,但是我們可以使用第 3 方軟件,比如 virt-manager。只需要使用 sudo apt-get install virt-manager 即可安裝該軟件。該軟件依賴於 libvirt,在安裝過程中也會自動安裝。運行 virt-manager 的效果如下圖,注意必須使用 sudo 運行,因為該軟件需要超級用戶權限:

linux系統下,我也用虛擬機——linux虛擬機隨筆

該軟件可自動識別系統中的虛擬機環境是 QEMU+KVM 還是 Xen。新建一個虛擬機,由於之前安裝過一個 WinXP 系統,所以選擇導入現有硬盤鏡像。點下一步後,出現如下界面:

linux系統下,我也用虛擬機——linux虛擬機隨筆

這一步沒什麼好說的,再點下一步,如下圖:

linux系統下,我也用虛擬機——linux虛擬機隨筆

這裡可以設置網絡選項。如果勾選“在安裝前自定義配置”的話,還可以對硬件進行進一步的自定義,如下圖:

linux系統下,我也用虛擬機——linux虛擬機隨筆

在上圖中,我們可以看到虛擬機支持的所有虛擬顯卡的類型,在這裡,我當然選擇的是 VMVGA,因為我以前經常用 VMWare,知道這些操作系統在 VMWare 的虛擬顯卡設置下運行得都沒有問題。當然,其它的選項都可以試一下,不過在虛擬的操作系統中需要安裝相應的驅動程序。

最後,虛擬機運行的效果圖如下:

linux系統下,我也用虛擬機——linux虛擬機隨筆

可以看到,該程序提供的界面有非常豐富的功能菜單,功能是非常強大的,甚至可以向虛擬機中的操作系統發送組合按鍵。

可以這麼說,如果沒有 VirtualBox 的話,QEMU+KVM 的組合應該是桌面用戶的首選。

VirtualBox —— 性能強大的經典架構##

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

我在標題中說到 VirutalBox 是使用的經典架構。所謂經典,主要體現在以下幾個方面:

1.虛擬機及虛擬機中的系統(Guest System)仍運行於主操作系統(Host System)之上,只是通過主操作系統的內核模塊進行加速;

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

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

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

安裝完 VirtualBox 後,可以考察一下它所遵守的我之前提到的“經典架構”,命令和運行結果如下圖:

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

啟動 VirtualBox,新建虛擬機和安裝操作系統的過程我就不多說了,圖形界面很強大,一步一步執行准沒錯。安裝完 WinXP 後,運行效果如下圖:

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

linux系統下,我也用虛擬機——linux虛擬機隨筆

然後 VirtualBox 就會給 WinXP 安裝一個虛擬光盤,雙擊該光盤,就可以在 WinXP 系統中安裝客戶系統增強工具,如下圖:

linux系統下,我也用虛擬機——linux虛擬機隨筆

客戶系統增強工具是安裝在 Guest System 中的,可以認為客戶系統增強工具主要是包含了客戶操作系統中所需要驅動,因為沒有這些驅動,客戶操作系統可能無法認識那些虛擬出來的硬件,比如虛擬顯卡什麼的。當然,客戶系統增強工具的功能遠遠不止這些,比如顯卡 3D 加速啊、主操作系統和客戶操作系統共享文件夾啊什麼的,還有一個最牛 B 的,那就是讓客戶操作系統進入無縫模式。比如安裝完用戶增強工具後,可以識別出顯卡類型,並且有不同的分辨率選項,如下圖:

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

linux系統下,我也用虛擬機——linux虛擬機隨筆

由此可見,在 Linux 系統中使用 Windows 的軟件進行辦公不再是夢,什麼網銀、什麼 QQ,一樣毫無障礙。再按 Host+L 鍵,虛擬機會回到窗口模式。

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

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

Xen —— 令人腦洞大開的奇異架構##

在虛擬機領域,Xen 具有非常高的知名度,其名字經常在各類文章中出現。同時 Xen 也具有非常高的難度,別說玩轉,就算僅僅只是理解它,都不是那麼容易。之所以如此,那是因為 Xen 採用了和我前面介紹的那幾個虛擬機完全不同的架構。在這裡,我稱之為令人腦洞大開的奇異架構。

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

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

Xen的架構如下圖:

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

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

這種架構桌面用戶不喜歡,因為 Host System 變成了 Domain 0,本來應該掌控所有資源的主操作系統變成了一個受管理的虛擬機,本來用來打遊戲、編程、聊天的主戰場受到限制了,可能不能完全發揮硬件的性能了,還有可能運行不穩定了,自然會心裡不爽。(Domain 0確實不能安裝專用顯卡驅動,確實會運行不穩定,這個後面會講。)但是企業級用戶喜歡,因為所有的 Domain 都是虛擬機,所以可以更加公平地分配資源,而且由於 Domain U 不再是運行於 Domian 0 裡面的軟件,而是和 Domain 0 平級的系統,這樣即使 Domain 0 崩潰了,也不會影響到正在運行的 Domain U。(真的不會有絲毫影響嗎?我表示懷疑。)

下面開始在 Ubuntu 系統中體驗 Xen。使用如下命令可以在 Ubuntu 的軟件源中搜索和 Xen 相關的軟件包以及安裝 Xen Hypervisor:

sudo aptitude search xen
sudo aptitude install xen-hypervisor-4.4-amd64

傳說在舊版本的 Xen Hypervisor 上只能運行經過修改過的 Linux 內核。但是在目前的版本中不存在該問題。我機器上的 Ubuntu 14.10 系統不經任何修改,就可以當成 Domain 0 中的系統運行。至於是否讓該系統運行於 Xen Hypervisor 上,在啟動時可以選擇,如下圖:

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

linux系統下,我也用虛擬機——linux虛擬機隨筆

前面提到 Host System 一下子變成了 Domain 0 中的操作系統是讓桌面用戶比較不爽的事,這裡詳細論述。雖然說目前的 Xen 同時支持全虛擬化和半虛擬化,支持操作系統不經任何修改就運行於 Xen 虛擬機上(全虛擬),但是系統是否穩定還是和內核有很大關係的。比如說我在 Ubuntu 14.04 剛推出的那段時間,在 Ubuntu 14.04 中使用 Xen 是沒有什麼問題的,但是經過幾次系統升級後,Xen 就出問題了,沒辦法成功進入 Domain 0 中的 Ubuntu 14.04。現在我用的是 Ubuntu 14.10,已經升過好幾次級了,目前使用Xen還是很穩定的。其次就是顯卡驅動的問題,我的 Ubuntu 當主系統用時,使用的是 NVIDIA 的顯卡驅動,但是當 Ubuntu 運行於 Domain 0 中時,就不能使用 NVIDIA 的顯卡驅動了,否則無法進入圖形界面。

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

先進入我主目錄的 virtual-os 目錄,ls 看一下,裡面有我之前創建的 WinXP.img。然後,我們創建一個 WinXP_Xen.hvm 配置文件,其內容如下:

builder = "hvm"
name = "WinXP_Xen.hvm"
memory = 2048
vcpus = 2
disk = [ '/home/youxia/virtual-os/WinXP.img, qcow2, hda, rw' ]
sdl = 1

這段配置文件很簡單,也很容易懂。 hvm 代表這是一個全虛擬化的虛擬機,和全虛擬化相對的是半虛擬化,半虛擬化只能運行經過修改的內核,但是可以獲得更高的性能。為該虛擬機分配 2 個 CPU 和 2G 內存,並指定硬盤鏡像文件。最後一個 sdl=1 表示使用 SDL 圖形庫顯示虛擬操作系統的界面,如果不想用 SDL,也可以寫成 vnc=1,這樣需要使用 vncviewer 才能連接到虛擬機操作系統的桌面。

至於 Xen 的配置文件怎麼寫,管理命令怎麼用,這個必須得有學習資料。通過 man xl 和 man xl.cfg 查看手冊頁是可以的,但是最全面的資料還是在 Xen 的官網 上。

使用 sudo xl list 命令可以看到系統中只有一個Domain 0在運行,然後使用 sudo xl create -c WinXP_Xen.hvm 即可運行一個 Domian U 虛擬機,該虛擬機使用 WinXP_Xen.hvm 配置文件。 xl 命令的 -c 選項表示把 Domain U 的控制台顯示在 Domain 0 中,如果不用 -c 選項而使用 -V 選項,則創建虛擬機後使用 vncviewer 進行連接。新建的虛擬機運行起來後,再次使用 sudo xl list 命令,可以看到除了Domain 0,還多了一個名稱為“WinXP_Xen.hvm”的虛擬機。運行效果如下圖:

linux系統下,我也用虛擬機——linux虛擬機隨筆

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

我覺得,Xen 虛擬機不應該是桌面用戶的首選,因為它架構比較奇異不容易理解,可能因內核升級而出現不穩定,不能充分發揮桌面硬件的性能,如不能使用 Nvidia 的顯卡;桌面用戶還是應該首選 VirtualBox。企業及客戶可以考慮 Xen,因為它可以提供較好的性能和隔離性,企業級用戶不需要桌面用戶那麼多的功能,所以可以把 Domain 0 做到很薄,可以完全不要圖形界面,也不用經常升級內核,甚至可以選擇一個經過修改優化的內核,這樣就可以在一套硬件上運行儘可能多的虛擬機。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/222975.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 14:13
下一篇 2024-12-09 14:13

相關推薦

發表回復

登錄後才能評論