濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Linux折騰記(二十二):虛擬機(jī)體驗(yàn)之Xen篇——令人腦洞大開(kāi)的奇異架構(gòu)

Linux折騰記(二十二):虛擬機(jī)體驗(yàn)之Xen篇——令人腦洞大開(kāi)的奇異架構(gòu)

熱門(mén)標(biāo)簽:河北語(yǔ)音電銷(xiāo)機(jī)器人 電話機(jī)器人哪里有賣(mài)的 地球地圖標(biāo)注方法 河南智能電話機(jī)器人公司 新鄭電銷(xiāo)外呼系統(tǒng)線路 商戶地圖標(biāo)注 怎樣給景區(qū)加百度地圖標(biāo)注 樺甸電銷(xiāo)機(jī)器人 壽光百度地圖標(biāo)注中心網(wǎng)站

  這一篇我要體驗(yàn)的虛擬機(jī)系統(tǒng)是Xen。在虛擬機(jī)領(lǐng)域,Xen具有非常高的知名度,其名字經(jīng)常在各類文章中出現(xiàn)。同時(shí)Xen也具有非常高的難度,別說(shuō)玩轉(zhuǎn),就算僅僅只是理解它,都不是那么容易。之所以如此,那是因?yàn)閄en采用了和我前面介紹的那幾個(gè)虛擬機(jī)完全不同的架構(gòu)。在這里,我稱之為令人腦洞大開(kāi)的奇異架構(gòu)。

  比如說(shuō)在經(jīng)典的虛擬機(jī)架構(gòu)中,虛擬機(jī)軟件運(yùn)行于Host System之中,而Guest System運(yùn)行于虛擬機(jī)軟件之中。為了提高Guest System的運(yùn)行速度,虛擬機(jī)軟件一般會(huì)在Host System中使用內(nèi)核模塊開(kāi)一個(gè)洞,將Guest System的運(yùn)行指令直接映射到物理硬件上。但是在Xen中,則根本沒(méi)有Host System的概念,傳說(shuō)它所有的虛擬機(jī)都直接運(yùn)行于硬件之上,虛擬機(jī)運(yùn)行的效率非常的高,虛擬機(jī)之間的隔離性非常的好。

  當(dāng)然,傳說(shuō)只是傳說(shuō)。我剛開(kāi)始也是很納悶,怎么可能讓所有的虛擬機(jī)都直接運(yùn)行于硬件之上。后來(lái)我終于知道,這只是一個(gè)噱頭。虛擬機(jī)和硬件之間,還是有一個(gè)管理層的,那就是Xen Hypervisor。當(dāng)然Xen Hypervisor的功能畢竟是有限的,怎么樣它也比不上一個(gè)操作系統(tǒng),因此,在Xen Hypervisor上運(yùn)行的虛擬機(jī)中,有一個(gè)虛擬機(jī)是具有特權(quán)的,它稱之為Domain 0,而其它的虛擬機(jī)都稱之為Domain U。

  Xen的架構(gòu)如下圖:

  從圖中可以看出,Xen虛擬機(jī)架構(gòu)中沒(méi)有Host System,在硬件層之上是薄薄的一層X(jué)en Hypervisor,在這之上就是各個(gè)虛擬機(jī)了,沒(méi)有Host System,只有Domain 0,而Guest System都是Domain U,不管是Domain 0還是Domain U,都是虛擬機(jī),都是被虛擬機(jī)軟件管理的對(duì)象。

  既然Domain 0也是一個(gè)虛擬機(jī),也是被管理的對(duì)象,所以可以給它分配很少的資源,然后將其余的資源公平地分配到其它的Domain。但是很奇怪的是,所有的虛擬機(jī)管理軟件其實(shí)都是運(yùn)行在這個(gè)Domain 0中的。同時(shí),如果要連接到其它Guest System的控制臺(tái),而又不是使用遠(yuǎn)程桌面(VNC)的話,這些控制臺(tái)也是顯示在Domian 0中的。所以說(shuō),這是一個(gè)奇異的架構(gòu),是一個(gè)讓人很不容易理解的架構(gòu)。

  這種架構(gòu)桌面用戶不喜歡,因?yàn)镠ost System變成了Domain 0,本來(lái)應(yīng)該掌控所有資源的主操作系統(tǒng)變成了一個(gè)受管理的虛擬機(jī),本來(lái)用來(lái)打游戲、編程、聊天的主戰(zhàn)場(chǎng)受到限制了,可能不能完全發(fā)揮硬件的性能了,還有可能運(yùn)行不穩(wěn)定了,自然會(huì)心里不爽。(Domain 0確實(shí)不能安裝專用顯卡驅(qū)動(dòng),確實(shí)會(huì)運(yùn)行不穩(wěn)定,這個(gè)后面會(huì)講。)但是企業(yè)級(jí)用戶喜歡,因?yàn)樗械腄omain都是虛擬機(jī),所以可以更加公平地分配資源,而且由于Domain U不再是運(yùn)行于Domian 0里面的軟件,而是和Domain 0平級(jí)的系統(tǒng),這樣即使Domain 0崩潰了,也不會(huì)影響到正在運(yùn)行的Domain U。(真的不會(huì)有絲毫影響嗎?我表示懷疑。)

  下面開(kāi)始在Ubuntu系統(tǒng)中體驗(yàn)Xen。使用如下命令可以在Ubuntu的軟件源中搜索和Xen相關(guān)的軟件包以及安裝Xen Hypervisor:


復(fù)制代碼
代碼如下:

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

  傳說(shuō)在舊版本的Xen Hypervisor上只能運(yùn)行經(jīng)過(guò)修改過(guò)的Linux內(nèi)核。但是在目前的版本中不存在該問(wèn)題。我機(jī)器上的Ubuntu 14.10系統(tǒng)不經(jīng)任何修改,就可以當(dāng)成Domain 0中的系統(tǒng)運(yùn)行。至于是否讓該系統(tǒng)運(yùn)行于Xen Hypervisor上,在啟動(dòng)時(shí)可以選擇,如下圖:

  通過(guò)查看Grub的配置文件,可以看到通過(guò)Xen虛擬機(jī)啟動(dòng)Ubuntu系統(tǒng)時(shí),Grub先啟動(dòng)的是/boot/xen-4.4-amd64.gz,然后才把Linux內(nèi)核以及initrd文件作為模塊載入內(nèi)存。也就是說(shuō),Grub啟動(dòng)Xen Hypervisor,然后Xen Hypervisor運(yùn)行Domian 0。

  前面提到Host System一下子變成了Domain 0中的操作系統(tǒng)是讓桌面用戶比較不爽的事,這里詳細(xì)論述。雖然說(shuō)目前的Xen同時(shí)支持全虛擬化和半虛擬化,支持操作系統(tǒng)不經(jīng)任何修改就運(yùn)行于Xen虛擬機(jī)上(全虛擬),但是系統(tǒng)是否穩(wěn)定還是和內(nèi)核有很大關(guān)系的。比如說(shuō)我在Ubuntu 14.04剛推出的那段時(shí)間,在Ubuntu 14.04中使用Xen是沒(méi)有什么問(wèn)題的,但是經(jīng)過(guò)幾次系統(tǒng)升級(jí)后,Xen就出問(wèn)題了,沒(méi)辦法成功進(jìn)入Domain 0中的Ubuntu 14.04?,F(xiàn)在我用的是Ubuntu 14.10,已經(jīng)升過(guò)好幾次級(jí)了,目前使用Xen還是很穩(wěn)定的。其次就是顯卡驅(qū)動(dòng)的問(wèn)題,我的Ubuntu當(dāng)主系統(tǒng)用時(shí),使用的是NVIDIA的顯卡驅(qū)動(dòng),但是當(dāng)Ubuntu運(yùn)行于Domain 0中時(shí),就不能使用NVIDIA的顯卡驅(qū)動(dòng)了,否則無(wú)法進(jìn)入圖形界面。

  下面來(lái)測(cè)試一下Xen虛擬機(jī)的運(yùn)行效果。通過(guò)前文的探討,可以看出一個(gè)虛擬機(jī)的運(yùn)行需要兩個(gè)要素:一是一套虛擬的硬件系統(tǒng),二是一個(gè)包含了操作系統(tǒng)的磁盤(pán)鏡像。QEMU虛擬機(jī)關(guān)于硬件的配置全由命令行指定,VirtualBox虛擬機(jī)的硬件配置存在于配置文件中,而Xen呢,它也存在于配置文件中,這個(gè)配置文件要我們自己寫(xiě)。至于磁盤(pán)鏡像,還是復(fù)用我之前創(chuàng)建的那個(gè)WinXP.img吧,記住,它是qcow2格式的。

  先進(jìn)入我主目錄的virtual-os目錄,ls 看一下,里面有我之前創(chuàng)建的WinXP.img。然后,我們創(chuàng)建一個(gè)WinXP_Xen.hvm配置文件,其內(nèi)容如下:


復(fù)制代碼
代碼如下:

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

  這段配置文件很簡(jiǎn)單,也很容易懂。 hvm 代表這是一個(gè)全虛擬化的虛擬機(jī),和全虛擬化相對(duì)的是半虛擬化,半虛擬化只能運(yùn)行經(jīng)過(guò)修改的內(nèi)核,但是可以獲得更高的性能。為該虛擬機(jī)分配2個(gè)CPU和2G內(nèi)存,并指定硬盤(pán)鏡像文件。最后一個(gè) sdl=1 表示使用SDL圖形庫(kù)顯示虛擬操作系統(tǒng)的界面,如果不想用SDL,也可以寫(xiě)成 vnc=1,這樣需要使用 vncviewer 才能連接到虛擬機(jī)操作系統(tǒng)的桌面。

  至于Xen的配置文件怎么寫(xiě),管理命令怎么用,這個(gè)必須得有學(xué)習(xí)資料。通過(guò) man xl 和 man xl.cfg 查看手冊(cè)頁(yè)是可以的,但是最全面的資料還是在Xen的官網(wǎng) http://www.xenproject.org 上。

  使用 sudo xl list 命令可以看到系統(tǒng)中只有一個(gè)Domain 0在運(yùn)行,然后使用 sudo xl create -c WinXP_Xen.hvm 即可運(yùn)行一個(gè)Domian U虛擬機(jī),該虛擬機(jī)使用WinXP_Xen.hvm配置文件。 xl 命令的 -c 選項(xiàng)表示把Domain U的控制臺(tái)顯示在Domain 0中,如果不用 -c 選項(xiàng)而使用 -V 選項(xiàng),則創(chuàng)建虛擬機(jī)后使用 vncviewer 進(jìn)行連接。新建的虛擬機(jī)運(yùn)行起來(lái)后,再次使用 sudo xl list 命令,可以看到除了Domain 0,還多了一個(gè)名稱為“WinXP_Xen.hvm”的虛擬機(jī)。運(yùn)行效果如下圖:

  關(guān)于Xen更多更高級(jí)的功能,比如動(dòng)態(tài)遷移什么的,我這里就不試了。至于說(shuō)到Xen虛擬機(jī)的隔離性,如果一個(gè)Domain U崩潰了,肯定是不會(huì)影響到Domain 0和其它Domain U的,但是如果Domain 0崩潰了,Domain U真的不會(huì)受到任何影響嗎?Domain 0崩潰了怎么重啟它呢?這都是我沒(méi)想明白的問(wèn)題。在折騰Xen的過(guò)程中,我曾多次重啟過(guò)機(jī)器,重啟后一看,WinXP_Xen.hvm還在繼續(xù)運(yùn)行,似乎是沒(méi)有受到Domain 0的影響,但是我就想,我機(jī)器都重啟了,電源都斷了,Domain U它真的能絲毫不受影響嗎?

總結(jié):

  1.Xen虛擬機(jī)不應(yīng)該是桌面用戶的首選,因?yàn)樗軜?gòu)比較奇異不容易理解,可能因內(nèi)核升級(jí)而出現(xiàn)不穩(wěn)定,不能充分發(fā)揮桌面硬件的性能,比如顯卡;桌面用戶還是應(yīng)該首選VirtualBox。

  2.企業(yè)及客戶可以考慮Xen,因?yàn)樗梢蕴峁┹^好的性能和隔離性,企業(yè)級(jí)用戶不需要桌面用戶那么多的功能,所以可以把Domain 0做到很薄,可以完全不要圖形界面,也不用經(jīng)常升級(jí)內(nèi)核,甚至可以選擇一個(gè)經(jīng)過(guò)修改優(yōu)化的內(nèi)核,這樣就可以在一套硬件上運(yùn)行盡可能多的虛擬機(jī)。

   關(guān)于Linux下虛擬機(jī)相關(guān)的內(nèi)容,就寫(xiě)到這里吧。歡迎大家批評(píng)指正。

標(biāo)簽:來(lái)賓 楚雄 荊州 阜陽(yáng) 淄博 迪慶 忻州 遼陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Linux折騰記(二十二):虛擬機(jī)體驗(yàn)之Xen篇——令人腦洞大開(kāi)的奇異架構(gòu)》,本文關(guān)鍵詞  Linux,折騰,記,二十二,虛擬機(jī),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Linux折騰記(二十二):虛擬機(jī)體驗(yàn)之Xen篇——令人腦洞大開(kāi)的奇異架構(gòu)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Linux折騰記(二十二):虛擬機(jī)體驗(yàn)之Xen篇——令人腦洞大開(kāi)的奇異架構(gòu)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    大埔区| 临泽县| 阿合奇县| 华池县| 临汾市| 永登县| 邵阳县| 东台市| 石屏县| 玛沁县| 江城| 嘉祥县| 若尔盖县| 东兰县| 永仁县| 鹰潭市| 金溪县| 灵璧县| 朝阳县| 盐城市| 无极县| 永寿县| 南郑县| 阿拉善盟| 河东区| 青岛市| 抚顺市| 林州市| 来安县| 张家川| 崇仁县| 长武县| 宁安市| 潢川县| 黄陵县| 东兴市| 卫辉市| 长葛市| 应用必备| 奉贤区| 绩溪县|