說起虛擬機器,大家都不陌生。需要使用虛擬機器的場景也非常的多,比如有志於寫作業系統的同志,往往需要乙個虛擬機器來執行和除錯他寫的系統;再比如喜歡研究網路體系結構的朋友,需要在自己的電腦上虛擬出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.更多的企業級高可用性需求,比如什麼熱備份啊、動態遷移啊什麼的。
從上面這些期望值可以看出,虛擬機器領域水很深,市場前景也比較廣闊。各個虛擬機器廠家把自家產品吹得天花亂墜那也是很常見的,因為每乙個使用者期望的點都可以大做文章嘛。所謂臨淵羡魚,不如退而結網,各種虛擬機器看得再過癮,也不如自己嘗試一下。
回到頂部
或者,在自己的系統中輸入如下命令:
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啟動虛擬機器,並安裝作業系統:
而且從上圖中可以看到,虛擬機器中的cpu雖然顯示為3.5ghz,但是很顯然是qemu模擬出來的,和物理cpu有顯著差別。事實上我的電腦配置相當強悍,core i7-4770k的四核八執行緒cpu,請看lshw的輸出結果:
回到頂部
intel core i7-4770k的cpu,虛擬出的xp也分配了2g的記憶體和兩個cpu,但是流暢度仍較差。說明單純使用qemu還是不能滿足我們桌面使用者的需要。配合xen或者kvm呢?效能是否會有質的飛躍?敬請期待下篇。
2 虛擬機器體驗之KVM篇
很顯然,這種完全以軟體模擬硬體的形式雖然功能強大,但是效能難以滿足使用者的需要。模擬出的硬體的效能和物理硬體的效能相比,必然會大打折扣。為了提高虛擬機器軟體的效能,開發者們各顯神通。其中,最常用的辦法就是在主作業系統中通過核心模組開乙個洞,通過這個洞將虛擬機器中的操作直接對映到物理硬體上,從而提高虛...
Linux江湖20 虛擬機器體驗之KVM篇
很顯然,這種完全以軟體模擬硬體的形式雖然功能強大,但是效能難以滿足使用者的需要。模擬出的硬體的效能和物理硬體的效能相比,必然會大打折扣。為了提高虛擬機器軟體的效能,開發者們各顯神通。其中,最常用的辦法就是在主作業系統中通過核心模組開乙個洞,通過這個洞將虛擬機器中的操作直接對映到物理硬體上,從而提高虛...
Linux入門學習教程 虛擬機器體驗之KVM篇
很顯然,這種完全以軟體模擬硬體的形式雖然功能強大,但是效能難以滿足使用者的需要。模擬出的硬體的效能和物理硬體的效能相比,必然會大打折扣。為了提高虛擬機器軟體的效能,開發者們各顯神通。其中,最常用的辦法就是在主作業系統中通過核心模組開乙個洞,通過這個洞將虛擬機器中的操作直接對映到物理硬 件上,從而提高...