在上一篇中,我展示了虛擬機軟件 QEMU 的使用、效果及其性能,同時也分析了不同用戶對虛擬機的不同追求。但是不管是桌面用戶還是企業級用戶,對虛擬機軟件的追求有一點是共同的,那就是性能。QEMU 是一個強大的虛擬機軟件,它可以完全以軟件的形式模擬出一台完整的電腦所需的所有硬件,甚至是模擬出不同架構的硬件,在這些虛擬的硬件之上,可以安裝完整的操作系統。QEMU 的運行模式如下圖:
很顯然,這種完全以軟件模擬硬件的形式雖然功能強大,但是性能難以滿足用戶的需要。模擬出的硬件的性能和物理硬件的性能相比,必然會大打折扣。為了提高虛擬機軟件的性能,開發者們各顯神通。其中,最常用的辦法就是在主操作系統中通過內核模塊開一個洞,通過這個洞將虛擬機中的操作直接映射到物理硬件上,從而提高虛擬機中運行的操作系統的性能。如下圖:
其中 KVM 就是這種加速模式的典型代表。在社區中,大家常把 KVM 和 Xen 相提並論,但是它們其實完全不一樣。從上圖可以看出,使用內核模塊加速這種模式,主操作系統仍然占主導地位,內核模塊只是在主操作系統中開一個洞,用來連接虛擬機和物理硬件,給虛擬機加速,但是虛擬機中的客戶操作系統仍然受到很大的限制。這種模式比較適合桌面用戶使用,主操作系統仍然是他們的主戰場,不管是辦公還是打游戲,都通過主操作系統完成,客戶操作系統只是按需使用。至於 Xen,則完全使用不同的理念,比較適合企業級用戶使用,桌面用戶就不要輕易去碰了,具體內容下一篇我再講。
其實 VirtualBox 也是采取的這種內核模塊加速的模式。我之所以這么說,是因為在安裝 VirtualBox 時,它會要求安裝 DKMS。如下圖:
熟悉 Linux 的人知道,DKMS 就是為了方便用戶管理內核模塊而存在的,不熟悉 DKMS 的人 Google 一下也可以了解個大概。關於 VirtualBox 的具體使用方面的內容,我下一篇再講。這一篇主要講 KVM。
KVM 和 QEMU 是相輔相成的,QEMU 可以使用 KVM 內核模塊加速,而 KVM 需要使用 QEMU 運行虛擬機。從上圖可以看到,如果要使用 Ubuntu 的包管理軟件安裝 KVM,其實安裝的就是 qemu-kvm。而 qemu-kvm 並不是一個什么很復雜的軟件包,它只包含很少量幾個文件,如下圖:
用 man 命令查看一下它的文檔,發現 qemu-kvm 包不僅包含的文件很少,而且它的可執行文件 kvm 也只是對 qemu-system-x86_64 命令的一個簡單包裝,如下圖:
那么問題來了,kvm 內核模塊究竟是由哪個包提供的呢?其實,自從 Linux 2.6 開始,kvm 就已經被加入內核了。如果非要找出 kvm 內核模塊 kvm.ko 是由哪個包提供的,可以用如下命令考察一下:
寫到這里,已經可以看出 KVM 的使用是很簡單的了。下面,我使用 KVM 運行一下上一篇中安裝的 WinXP 操作系統,體驗一下 QEMU 經過 KVM 加速后的運行效率。使用如下命令運行使用 KVM 加速的 QEMU:
可以看出,使用 KVM 加速后,虛擬機中的 WinXP 運行速度提升了不少,開機只用了 34 秒。我將分辨率調整為 1366*768,圖形界面運行也很流暢,不管是打開 IE 瀏覽器還是 Office 辦公軟件都沒有問題,再也沒有出現 CPU 使用率飆升到 100% 的情況。如果用 ps -ef | grep qemu 命令查看一下,發現 kvm 命令運行的還是 qemu-system-x86_64 程序,只不過加上了 -enable-kvm 參數,如下圖:
另外,對於桌面用戶來說,有一個好用的圖形化界面也是很重要的。雖然 QEMU 和 KVM 自身不帶圖形界面的虛擬機管理器,但是我們可以使用第 3 方軟件,比如 virt-manager。只需要使用 sudo apt-get install virt-manager 即可安裝該軟件。該軟件依賴於 libvirt,在安裝過程中也會自動安裝。運行 virt-manager 的效果如下圖,注意必須使用 sudo 運行,因為該軟件需要超級用戶權限:
該軟件可自動識別系統中的虛擬機環境是 QEMU+KVM 還是 Xen。新建一個虛擬機,由於之前安裝過一個 WinXP 系統,所以選擇導入現有硬盤鏡像。點下一步后,出現如下界面:
這一步沒什么好說的,再點下一步,如下圖:
這里可以設置網絡選項。如果勾選“在安裝前自定義配置”的話,還可以對硬件進行進一步的自定義,如下圖:
在上圖中,我們可以看到虛擬機支持的所有虛擬顯卡的類型,在這里,我當然選擇的是 VMVGA,因為我以前經常用 VMWare,知道這些操作系統在 VMWare 的虛擬顯卡設置下運行得都沒有問題。當然,其它的選項都可以試一下,不過在虛擬的操作系統中需要安裝相應的驅動程序。
最后,虛擬機運行的效果圖如下:
可以看到,該程序提供的界面有非常豐富的功能菜單,功能是非常強大的,甚至可以向虛擬機中的操作系統發送組合按鍵。
可以這么說,如果沒有 VirtualBox 的話,QEMU+KVM 的組合應該是桌面用戶的首選。下一篇我將嘗試 VirtualBox,VirtualBox 號稱是最強大的開源虛擬機系統,敬請期待。
(京山游俠於2015-02-24發布於博客園,轉載請注明出處。)