引言
說起虛擬機,大家都不陌生。需要使用虛擬機的場景也非常的多,比如有志於寫操作系統的同志,往往需要一個虛擬機來運行和調試他寫的系統;再比如喜歡研究網絡體系結構的朋友,需要在自己的電腦上虛擬出 N 個系統組成各種各樣的網絡。(這個需要電腦的配置夠強大才行,幸好本人的電腦夠。)還比如用 Windows 的想玩 Linux,用 Linux 想玩 Windows,這樣用虛擬機玩起來也比較方便;最后比如有人想研究一下目前最流行的大數據啊、雲計算啊,想試一試 Hadoop、Spark、OpenStack 什么的,沒有虛擬機怎么搭建實驗環境。我自己也經常用虛擬機,在 Windows 中用的是 VMWare,感覺它功能強大、使用方便,運行效率也非常的高。我的博客中有不少內容都是在虛擬機中折騰出來的,你們能分得出來嗎?在 Linux 系統下,我也用虛擬機。比如在我的這一篇《使用GCC和GNU Binutils編寫能在x86實模式運行的16位代碼》中,我就使用 QEMU 來運行一個 FreeDOS 系統,用來調試我的 16 位代碼。其實我自己也是一個喜歡研究操作系統的主,結識 QEMU 就是從《自己動手寫操作系統》這本書開始的。
虛擬機的分類很復雜。什么全虛擬、半虛擬什么的搞得人頭暈。我用過的虛擬機也不少了,也總是分不清這些概念。而且桌面用戶和企業級用戶對虛擬機的期望值是不一樣的。比如說,我可能期望這樣一個虛擬機:
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。還是老規矩,我的博文並不是該軟件的使用手冊,所以,它的學習資料還請參考 QEMU 的官網:
http://wiki.qemu.org/Main_Page
或者,在自己的系統中輸入如下命令:
man qemu-system-i386
man qemu-img
等等...
QEMU 本身是一個非常強大的虛擬機,甚至在 Xen、KVM 這些虛擬機產品中都少不了 QEMU 的身影。在 QEMU 的官方文檔中也提到,QEMU 可以利用 Xen、KVM 等技術來加速。為什么需要加速呢,那是因為如果單純使用 QEMU 的時候,它自己模擬出了一個完整的個人電腦,它里面的 CPU 啊什么的都是模擬出來的,它甚至可以模擬不同架構的 CPU,比如說在使用 Intel X86 的 CPU 的電腦中模擬出一個 ARM 的電腦或 MIPS 的電腦,這樣模擬出的 CPU 的運行速度肯定趕不上物理 CPU。使用加速以后呢,可以把客戶操作系統的 CPU 指令直接轉發到物理 CPU,自然運行效率大增。
QEMU 同時也是一個非常簡單的虛擬機,給它一個硬盤鏡像就可以啟動一個虛擬機,如果想定制這個虛擬機的配置,比如用什么樣的 CPU 啊、什么樣的顯卡啊、什么樣的網絡配置啊,指定相應的命令行參數就可以了。它支持許多格式的磁盤鏡像,包括 VirtualBox 創建的磁盤鏡像文件。它同時也提供一個創建和管理磁盤鏡像的工具 qemu-img。QEMU 及其工具所使用的命令行參數,直接查看其文檔即可。
下面開始體驗。先看看 Ubuntu 軟件源中和 QEMU 有關的包有哪些:
我的電腦是 Intel 的 CPU,而我想虛擬的也是個人電腦,所以我安裝的自然是 qemu-system-x86,另外一個有用的是 qemu-utils。查看 QEMU 軟件包中的工具及文檔:
使用 qemu-img 創建磁盤映像文件,使用 qemu-system-i386 啟動虛擬機,並安裝操作系統:
WinXP 估計是目前全網絡上最好下載的操作系統了。運行以上命令后,彈出熟悉的系統安裝界面。安裝過程我就不啰嗦了。下圖是安裝完 WinXP 操作系統之后的效果。可以給 qemu-system-i386 指定更多的參數,在再一次啟動 WinXP 的時候,我除了給它分配了 2G 內存,我還使用 -smp 2 參數為它分配了兩個 CPU,還使用 -vga vmware 為它指定和 VMWare 虛擬顯卡一樣的顯卡。雖然指定兩個 CPU,但是性能仍較差。隨便拖動一下窗口 CPU 使用率就飆升到 100%。
而且從上圖中可以看到,虛擬機中的 CPU 雖然顯示為 3.5GHz,但是很顯然是 QEMU 模擬出來的,和物理 CPU 有顯著差別。事實上我的電腦配置相當強悍,Core i7-4770K 的四核八線程 CPU,請看 lshw 的輸出結果:
結論:
Intel Core i7-4770K 的 CPU,虛擬出的 XP 也分配了 2G 的內存和兩個 CPU,但是流暢度仍較差。說明單純使用 QEMU 還是不能滿足我們桌面用戶的需要。配合Xen 或者 KVM 呢?性能是否會有質的飛躍?敬請期待下篇。
(京山游俠於2015-02-17發布於博客園,轉載請注明出處。)
原文:http://www.cnblogs.com/youxia/p/linux019.html