Linux折騰記(十九):虛擬機(jī)體驗(yàn)之QEMU篇

說(shuō)起虛擬機(jī),大家都不陌生。需要使用虛擬機(jī)的場(chǎng)景也非常的多,比如有志于寫(xiě)操作系統(tǒng)的同志,往往需要一個(gè)虛擬機(jī)來(lái)運(yùn)行和調(diào)試他寫(xiě)的系統(tǒng);再比如喜歡研究網(wǎng)絡(luò)體系結(jié)構(gòu)的朋友,需要在自己的電腦上虛擬出N個(gè)系統(tǒng)組成各種各樣的網(wǎng)絡(luò)。(這個(gè)需要電腦的配置夠強(qiáng)大才行,幸好本人的電腦夠。)還比如用Windows的想玩Linux,用Linux想玩Windows,這樣用虛擬機(jī)玩起來(lái)也比較方便;最后比如有人想研究一下目前最流行的大數(shù)據(jù)啊、云計(jì)算啊,想試一試Hadoop、Spark、OpenStack什么的,沒(méi)有虛擬機(jī)怎么搭建實(shí)驗(yàn)環(huán)境。我自己也經(jīng)常用虛擬機(jī),在Windows中用的是VMWare,感覺(jué)它功能強(qiáng)大、使用方便,運(yùn)行效率也非常的高。我的博客中有不少內(nèi)容都是在虛擬機(jī)中折騰出來(lái)的,你們能分得出來(lái)嗎?在Linux系統(tǒng)下,我也用虛擬機(jī)。比如在我的這一篇《使用GCC和GNU Binutils編寫(xiě)能在x86實(shí)模式運(yùn)行的16位代碼》中,我就使用QEMU來(lái)運(yùn)行一個(gè)FreeDOS系統(tǒng),用來(lái)調(diào)試我的16位代碼。其實(shí)我自己也是一個(gè)喜歡研究操作系統(tǒng)的主,結(jié)識(shí)QEMU就是從《自己動(dòng)手寫(xiě)操作系統(tǒng)》這本書(shū)開(kāi)始的。
虛擬機(jī)的分類(lèi)很復(fù)雜。什么全虛擬、半虛擬什么的搞得人頭暈。我用過(guò)的虛擬機(jī)也不少了,也總是分不清這些概念。而且桌面用戶和企業(yè)級(jí)用戶對(duì)虛擬機(jī)的期望值是不一樣的。比如說(shuō),我可能期望這樣一個(gè)虛擬機(jī):
1.它能模擬出完整的個(gè)人電腦,我可以給它安裝任何我想安裝的操作系統(tǒng);
2.它要有比較好用的圖形界面,模擬出的電腦也要能無(wú)障礙運(yùn)行Windows或Gnome這樣的圖形系統(tǒng),能打游戲最好;
3.客戶操作系統(tǒng)所用的硬盤(pán)就是宿主操作系統(tǒng)中的一個(gè)鏡像文件,隨時(shí)可復(fù)制粘貼,隨時(shí)可打包帶走;
4.最好能模擬出一些本身不存在的硬件,比如多個(gè)網(wǎng)卡什么的。
很顯然,VMWare Workstation就是這樣一個(gè)可以完美滿足我要求的桌面用戶最滿意的虛擬機(jī)。我經(jīng)常使用它來(lái)折騰各個(gè)Linux發(fā)行版,而且運(yùn)行流暢。當(dāng)然,在Linux這個(gè)開(kāi)源的世界我們是不該去使用破解版這樣的東西的。不過(guò)不用擔(dān)心,在Linux江湖中,還有VirtualBox、QEMU這樣的虛擬機(jī)軟件可用。
而企業(yè)級(jí)用戶呢,他們期望的虛擬機(jī)可能是這樣的:
1.它不一定要能模擬出完整的電腦,重點(diǎn)是CPU、內(nèi)存、磁盤(pán)和網(wǎng)卡,重點(diǎn)是能當(dāng)服務(wù)器使用;
2.它性能一定要好,虛擬的CPU性能一定要接近物理CPU,一定要充分利用物理CPU的所有特性,為了性能,甚至只能安裝經(jīng)過(guò)修改過(guò)內(nèi)核的操作系統(tǒng);(所謂的半虛擬化技術(shù)。)
3.它隔離性一定要好,它的目的是把一臺(tái)機(jī)器分成N臺(tái)機(jī)器用,而管理這N臺(tái)虛擬機(jī)的宿主機(jī)要越不占用資源越好,客戶機(jī)是主,宿主機(jī)是次;(正如Xen這樣。)
4.由于企業(yè)級(jí)用戶對(duì)性能的追求,所以客戶機(jī)所用的硬盤(pán)可能真是一個(gè)物理硬盤(pán)、磁盤(pán)陣列、網(wǎng)絡(luò)文件系統(tǒng)什么的,而不僅僅只是宿主機(jī)上的一個(gè)鏡像文件;
5.它不一定需要有圖形界面,因?yàn)槭褂妹钚薪缑娓菀坠芾?,比如自?dòng)化啊、遠(yuǎn)程化啊、批量化啊什么的;
6.更多的企業(yè)級(jí)高可用性需求,比如什么熱備份啊、動(dòng)態(tài)遷移啊什么的。
從上面這些期望值可以看出,虛擬機(jī)領(lǐng)域水很深,市場(chǎng)前景也比較廣闊。各個(gè)虛擬機(jī)廠家把自家產(chǎn)品吹得天花亂墜那也是很常見(jiàn)的,因?yàn)槊恳粋€(gè)用戶期望的點(diǎn)都可以大做文章嘛。所謂臨淵羨魚(yú),不如退而結(jié)網(wǎng),各種虛擬機(jī)看得再過(guò)癮,也不如自己嘗試一下。
今天我介紹的是QEMU。還是老規(guī)矩,我的博文并不是該軟件的使用手冊(cè),所以,它的學(xué)習(xí)資料還請(qǐng)參考QEMU的官網(wǎng):
http://wiki.qemu.org/Main_Page
或者,在自己的系統(tǒng)中輸入如下命令:
man qemu-system-i386
man qemu-img
等等...
QEMU本身是一個(gè)非常強(qiáng)大的虛擬機(jī),甚至在Xen、KVM這些虛擬機(jī)產(chǎn)品中都少不了QEMU的身影。在QEMU的官方文檔中也提到,QEMU可以利用Xen、KVM等技術(shù)來(lái)加速。為什么需要加速呢,那是因?yàn)槿绻麊渭兪褂肣EMU的時(shí)候,它自己模擬出了一個(gè)完整的個(gè)人電腦,它里面的CPU啊什么的都是模擬出來(lái)的,它甚至可以模擬不同架構(gòu)的CPU,比如說(shuō)在使用Intel X86的CPU的電腦中模擬出一個(gè)ARM的電腦或MIPS的電腦,這樣模擬出的CPU的運(yùn)行速度肯定趕不上物理CPU。使用加速以后呢,可以把客戶操作系統(tǒng)的CPU指令直接轉(zhuǎn)發(fā)到物理CPU,自然運(yùn)行效率大增。
QEMU同時(shí)也是一個(gè)非常簡(jiǎn)單的虛擬機(jī),給它一個(gè)硬盤(pán)鏡像就可以啟動(dòng)一個(gè)虛擬機(jī),如果想定制這個(gè)虛擬機(jī)的配置,比如用什么樣的CPU啊、什么樣的顯卡啊、什么樣的網(wǎng)絡(luò)配置啊,指定相應(yīng)的命令行參數(shù)就可以了。它支持許多格式的磁盤(pán)鏡像,包括VirtualBox創(chuàng)建的磁盤(pán)鏡像文件。它同時(shí)也提供一個(gè)創(chuàng)建和管理磁盤(pán)鏡像的工具qemu-img。QEMU及其工具所使用的命令行參數(shù),直接查看其文檔即可。
下面開(kāi)始體驗(yàn)。先看看Ubuntu軟件源中和QEMU有關(guān)的包有哪些:
我的電腦是Intel的CPU,而我想虛擬的也是個(gè)人電腦,所以我安裝的自然是qemu-system-x86,另外一個(gè)有用的是qemu-utils。查看QEMU軟件包中的工具及文檔:
使用qemu-img創(chuàng)建磁盤(pán)映像文件,使用qemu-system-i386啟動(dòng)虛擬機(jī),并安裝操作系統(tǒng):
WinXP估計(jì)是目前全網(wǎng)絡(luò)上最好下載的操作系統(tǒng)了。運(yùn)行以上命令后,彈出熟悉的系統(tǒng)安裝界面。安裝過(guò)程我就不啰嗦了。下圖是安裝完WinXP操作系統(tǒng)之后的效果。可以給qemu-system-i386指定更多的參數(shù),在再一次啟動(dòng)WinXP的時(shí)候,我除了給它分配了2G內(nèi)存,我還使用-smp 2參數(shù)為它分配了兩個(gè)CPU,還使用-vga vmware為它指定和VMWare虛擬顯卡一樣的顯卡。雖然指定兩個(gè)CPU,但是性能仍較差。隨便拖動(dòng)一下窗口CPU使用率就飆升到100%。
而且從上圖中可以看到,虛擬機(jī)中的CPU雖然顯示為3.5GHz,但是很顯然是QEMU模擬出來(lái)的,和物理CPU有顯著差別。事實(shí)上我的電腦配置相當(dāng)強(qiáng)悍,Core i7-4770K的四核八線程CPU,請(qǐng)看lshw的輸出結(jié)果:
結(jié)論:
Intel Core i7-4770K的CPU,虛擬出的XP也分配了2G的內(nèi)存和兩個(gè)CPU,但是流暢度仍較差。說(shuō)明單純使用QEMU還是不能滿足我們桌面用戶的需要。配合Xen或者KVM呢?性能是否會(huì)有質(zhì)的飛躍?敬請(qǐng)期待下篇。
相關(guān)文章
Fedora Linux 42 穩(wěn)定版發(fā)布: 帶來(lái)大量新功能和軟件更新
Fedora 42昨日發(fā)布,這是 Red Hat 贊助開(kāi)發(fā)的杰出前沿 Linux 發(fā)行版的最新版,包含大量新功能和軟件更新,使其成為 2025 年上半年發(fā)布的一款出色的 Linux 操作系統(tǒng)之一,內(nèi)2025-04-16如何在Linux查看硬盤(pán)信息? 查看Linux硬盤(pán)大小類(lèi)型和硬件信息的5種方法
使用Linux系統(tǒng)的過(guò)程中,查看和了解硬盤(pán)信息是非常重要的工作,尤其是對(duì)于系統(tǒng)管理員而言,那么在Linux系統(tǒng)中如何查看硬盤(pán)信息?以下是具體內(nèi)容介紹2025-03-12如何在 Linux 中查看 CPU 詳細(xì)信息? 3招輕松查看CPU型號(hào)、核心數(shù)和溫度
在日常運(yùn)維工作中,獲取 CPU 信息是系統(tǒng)運(yùn)維管理員常見(jiàn)的工作內(nèi)容,無(wú)論是為了性能調(diào)優(yōu)、硬件升級(jí)還是僅僅滿足好奇心2025-03-11什么是 Arch Linux? 獨(dú)樹(shù)一幟的Arch Linux發(fā)行版分析
Arch Linux是為簡(jiǎn)化,優(yōu)化,現(xiàn)代化,實(shí)用主義,用戶中心和多功能性而創(chuàng)建Linux發(fā)行版,究竟是什么讓 Arch 與眾不同?下面我們就來(lái)簡(jiǎn)要解讀2025-02-19如何在Linux環(huán)境下制作 Win11裝機(jī)U盤(pán)?
一直用的linux辦公,想要將筆記本電腦從 Linux 系統(tǒng)切換回 Windows 11,我們可以制作一個(gè)win11裝機(jī)u盤(pán),詳細(xì)如下2025-02-17Rsnapshot怎么用? 基于Rsync的強(qiáng)大Linux備份工具使用指南
Rsnapshot 不僅可以備份本地文件,還能通過(guò) SSH 備份遠(yuǎn)程文件,接下來(lái)詳細(xì)介紹如何安裝、配置和使用 Rsnapshot,包括創(chuàng)建每小時(shí)、每天、每周和每月的本地備份,以及如何進(jìn)2025-02-06Linux Kernel 6.13發(fā)布:附更新內(nèi)容及新特性解讀
Linux 內(nèi)核 6.13 正式發(fā)布,新版本引入了惰性搶占支持,簡(jiǎn)化內(nèi)核搶占邏輯,通過(guò)減少與調(diào)度器相關(guān)的調(diào)用次數(shù),讓內(nèi)核在運(yùn)行時(shí)表現(xiàn)更優(yōu),從而提高效率2025-01-23五大特性引領(lǐng)創(chuàng)新! 深度操作系統(tǒng) deepin 25 Preview預(yù)覽版發(fā)布
今日,深度操作系統(tǒng)正式推出deepin 25 Preview版本,該版本集成了五大核心特性:磐石系統(tǒng)、全新DDE、Treeland窗口合成器、AI For OS以及Distrobox子系統(tǒng)2025-01-18Linux Mint Xia 22.1重磅發(fā)布: 重要更新一覽
Beta 版 Linux Mint“Xia” 22.1 發(fā)布,新版本基于 Ubuntu 24.04,內(nèi)核版本為 Linux 6.8,這次更新帶來(lái)了諸多優(yōu)化和改進(jìn),進(jìn)一步鞏固了 Mint 在 Linux 桌面操作系統(tǒng)領(lǐng)域的2025-01-16LinuxMint怎么安裝? Linux Mint22下載安裝圖文教程
Linux Mint22發(fā)布以后,有很多新功能,很多朋友想要下載并安裝,該怎么操作呢?下面我們就來(lái)看看詳細(xì)安裝指南2025-01-16