XEN--转载自鸟哥的linux私房菜
初探?Xen
Xen?的虛擬類型與特色
Xen?這套自由軟體在虛擬機(jī)器的模擬類型方面主要分為半虛擬化?(Para-virtualization)?及全虛擬化?(Full?virtualization)?兩種,其中半虛擬化主要是透過修改?Linux?核心來達(dá)成的虛擬技術(shù)。?半虛擬化技術(shù)所產(chǎn)生的虛擬機(jī)器需要與原本的作業(yè)系統(tǒng)相同較佳。使用半虛擬化的環(huán)境所具備的特色有:?(註5)
虛擬機(jī)器的運作效率與實體機(jī)器的效能相當(dāng);?
最多可支援到具有?32?顆以上?CPU?的主機(jī)環(huán)境;?
支援?x86/32,?x86/32?含?PAE?技術(shù),?及?x86/64?的硬體平臺環(huán)境;?
良好的硬體驅(qū)動程式支援,幾乎支援所有的?Linux?裝置之驅(qū)動程式;?
?
Xen?的半虛擬化技術(shù)主要是用在相同版本的?Linux?上面,也就是說,如果妳想要使用半虛擬化的方式啟動多個虛擬機(jī)器,?那麼那些虛擬機(jī)器全部都必須是相同的作業(yè)系統(tǒng),甚至要求相同版本與相同核心的?Linux?distribution?喔。如果妳想要安裝不同版本的?Linux?或者是其他的?OS?(例如?Windows?XP)?時,就得要使用全虛擬化技術(shù)了。?但是全虛擬化技術(shù)是有其限制的,當(dāng)你的硬體滿足下列需求時,全虛擬化技術(shù)才能夠動作:
你的硬體支援?Intel?的?VT?技術(shù)?(Virtualization?Technology,?Intel-VT);?
你的硬體支援?AMD?的?SVM?技術(shù)?(Secure?Virtual?Machine,?AMD-SVM?or,?AMD-V)。?
?
此外,上面提到的?PAE?指的是?Intel?的實體位址延伸技術(shù)?(Physical?Addressing?Extensions,?PAE),?這項技術(shù)可讓原本僅支援到?4GB?實體記憶體的?32?位元硬體平臺,可支援到最大?64GB?的記憶體喔!?而且,?Xen?幾乎可以在所有的?P-II?以上等級的硬體平臺上面跑半虛擬化任務(wù),如果不跑全虛擬化的話,其實效能確實是?OK?的啦!近來由於虛擬機(jī)器軟體的流行,加上?x86?電腦效能與?CPU?運算核心單元的增加,兩大?x86?CPU?製造商?Intel/AMD?都發(fā)表了新的整合到?CPU?的虛擬技術(shù),分別是?Intel?的?Vanderpool?虛擬技術(shù)以及?AMD?的?Pacifica?技術(shù)。?這些技術(shù)有的也支援?Xen?,這讓?Xen?的效能增進(jìn)不少呢!?^_^
Xen?的運作環(huán)境解釋
在基礎(chǔ)學(xué)習(xí)篇裡面我們曾經(jīng)談過硬體、核心與應(yīng)用程式的關(guān)係,?所有的應(yīng)用程式都是在核心層之上來完成的?(註6)。?然後透過核心功能去呼叫與使用硬體元件的命令。好了,?現(xiàn)在來仔細(xì)想一想,既然我有多個虛擬機(jī)器,每個虛擬機(jī)器的環(huán)境各別有自己的作業(yè)系統(tǒng)核心,?也就是有多個作業(yè)系統(tǒng)同時存在。如果所有的作業(yè)系統(tǒng)都能夠完整的控制硬體的話,?那麼硬體到底該接受誰的指令來運作?那個系統(tǒng)的指令會先被執(zhí)行?這是很重要的問題,?因為如果這邊搞不定,那麼妳的硬體系統(tǒng)就只有當(dāng)機(jī)一途。
為了解決這個問題,Xen?也分成多個層級?(layer)?來執(zhí)行。他將?Linux?的核心修改過後,?再使用這個修改過後的核心開機(jī),而開機(jī)後先載入?Xen?的監(jiān)督器?(Hypervisor)?,?並且啟動第一個在上頭的作業(yè)系統(tǒng),我們稱他為?domain-0。?(在?Xen?上面所謂的一個?domain?就是一個虛擬機(jī)器囉!)
Domain-0?之所以要先被載入是因為?Domain-0?含有其他虛擬機(jī)器啟動所必須的控制指令,?並且?domain-0?也是控制虛擬裝置的重要主控系統(tǒng)。?在?domain-0?上頭最重要的就是一個?xend?的常駐程式,其他的?domain?都是由這個?xend?來管理的。?至於命名方面,除了?domain-0?之外的其他虛擬機(jī)器就依序被稱為?domain-1,?domain-2?等等,?我們通稱為?domain-U?囉。這些咚咚的相關(guān)性有點像這樣:
圖?2-1、Xen?Hypersvisor?的功能示意圖(註7)
由上圖我們知道?domain-0?真的是很重要的,因為他直接控制?Xen?的監(jiān)督器?(Hypervisor),而且掌握了實際的?Linux?驅(qū)動程式?(drivers)。而其他的虛擬機(jī)器?(domain-U)?則是透過?Xen?監(jiān)督器來與實際的硬體以及?domain-0?達(dá)成溝通。而為了讓?domain-0?能夠與?Xen?結(jié)合,我們必須要修改?domain-0?的核心才能夠順利運作。並且需要使用?domain-0?的核心來開機(jī)才可以。?domain-0?是所有虛擬機(jī)器的來源,所以他可以盡量簡單一點,其他的個別服務(wù)則可以放置到不同的?domain?當(dāng)中了。
那個?xend?也是很重要的咚咚,他可以管理?domain-0?與其他?domain?之間的啟動與溝通,?可以提供一個終端機(jī)?(console)?介面來讓?domain-0?登入其他的?domain?,所以我們也必須要啟動這玩意兒才行。
早期?Xen?尚未被各?distribution?整合到各自的版本中時,使用者必須要由?Xen?的官方網(wǎng)站下載原始碼,?然後自行重新編譯核心以及編譯?Xen?軟體才行。說實在的,玩?zhèn)€?Xen?這麼麻煩,倒不如不要玩!^_^。?然而在?RHEL?5?(CentOS?5)?以後,?Xen?已經(jīng)包含在原始釋出的套件中了,所以我們直接用?yum?就能夠安裝妥當(dāng)!?所以要搞定一部?Xen?的?domain-0?已經(jīng)不再是不可能的任務(wù)囉!^_^
對於?Xen?的基本原理有一些認(rèn)識之後,接下來就讓我們開始在?CentOS?5?上面進(jìn)行一個小小的實驗吧!
確定你的硬體是否支援?Xen?的運作
雖然說目前的硬體都很新了,不過有的朋友使用的是舊的主機(jī)來安裝?Linux?,所以我們必須要留意你的硬體是否支援?xen?的運作。而我們知道?Xen?支援半虛擬化與全虛擬化兩種模式,兩種模式的需求為:
半虛擬化?(Para-virtualization)?硬體需求:?
只要是?64?位元的?x86?主機(jī)?(x86_64)?都能夠支援半虛擬化的環(huán)境。如果是?32?位元的主機(jī)?(x86)?時,?該主機(jī)必須要支援的實體位址延伸技術(shù)?(PAE)?才能夠使用?xen?喔!那如何確認(rèn)呢?很簡單,檢查?CPU?的參數(shù)即可:
嘿嘿!這一部主機(jī)是鳥哥的?P-III?800?主機(jī),看吧!確實有支援?PAE?喔!所以當(dāng)然可以玩?Xen?囉。[root@linux ~]# cat?/proc/cpuinfo?|?grep?flags flags : fpu tsc msr pae mce cx8 mtrr mca cmov pat pse36 mmx fxsr sse up ?
全虛擬化?(Fully-virtualization)?硬體需求:?
如果妳需要全虛擬化的技術(shù)支援時,此時需要硬體有支援虛擬化技術(shù)才行。?目前在?x86?的主機(jī)當(dāng)中,?Intel?提供?VT?技術(shù),?AMD?則提供?SVM?技術(shù)。?這兩種技術(shù)在?CPU?的旗標(biāo)分別是:?Intel?(vmx)?與?AMD?(svm)?。?鳥哥在?Core?Duo?主機(jī)上面的測試可以發(fā)現(xiàn):
至於?AMD?的主機(jī)旗標(biāo)則是:(下表感謝donyingle兄的提供!)在?Intel?Core?2?Duo?的?CPU?主機(jī)上面測試?CPU?旗標(biāo): [root@linux ~]# cat?/proc/cpuinfo?|?grep?flags flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc up pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm #?瞧!是有那個?vmx?的支援啦!
如果確定你的?CPU?有支援上述的條件後,嘿嘿!那我們就可以開始底下的遊戲啦!如果沒有支援呢??那很抱歉,底下的資料看看就好!在?AMD?Athlon(tm)?64?X2?的?CPU?主機(jī)上面測試?CPU?旗標(biāo): [root@linux ~]# cat?/proc/cpuinfo?|?grep?flags flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8legacy 3dnowprefetch ts fid vid ttp tm stc 100mhzsteps #?瞧!是有那個?svm?的支援啦! ?
所需要的?Xen?套件與核心
注意:?在開始安裝之前,請先參考前一小節(jié)以確定你的硬體已經(jīng)支援?Xen?的半虛擬化功能了!
約略談了一下?Xen?的原理、特色之後,在開始玩弄?Xen?之前,我們得瞭解運作?Xen?所需要的各項套件,並且順利安裝後,才能夠使用的啊!?^_^。如同前一小節(jié)提到的,?要使用?Xen?半虛擬化?(Para-virtualization)?必須要修改核心才能夠順利的運作。?在以前的版本妳需要重新編譯核心,不過,在新的版本,例如?CentOS?5.x?底下,就已經(jīng)將?Xen?的核心幫妳編譯好了!妳可以直接安裝即可。所以,妳需要安裝的套件主要有:
kernel-xen:修改的?Linux?核心,使可以跑?Xen?的環(huán)境;?
xen:主要的?xen?套件,包括設(shè)定檔、啟動腳本、所需的基本函式庫等;?
xen-libs:Xen?所需要的函式庫等;?
python-virtinst:提供終端機(jī)安裝的軟體;?
virt-manager:為一個圖形使用者介面軟體,可在圖形介面管理?xen?喔!?
?
在?CentOS?5.x?的環(huán)境下,妳可以使用?yum?直接來安裝這幾個套件。安裝完畢後請務(wù)必使用新的核心開機(jī)!?以鳥哥的例子來說,我安裝了數(shù)個核心,包括?kernel-2.6.18-8.1.14.el5?及?kernel-xen-2.6.18-8.14.el5?,?所以在?grub?的設(shè)定檔當(dāng)中會像這樣:| [root@linux ~]# vi?/boot/grub/menu.lstdefault=0 timeout=5 splashp_w_picpath=(hd0,0)/boot/grub/splash.xpm.gz hiddenmenu title?CentOS?(2.6.18-8.1.14.el5xen)????????root?(hd0,0)????????kernel?/boot/xen.gz-2.6.18-8.1.14.el5????????module?/boot/vmlinuz-2.6.18-8.1.14.el5xen?ro?root=/dev/hda1?rhgb?quiet????????module?/boot/initrd-2.6.18-8.1.14.el5xen.img title CentOS (2.6.18-8.1.14.el5)root (hd0,0)kernel /boot/vmlinuz-2.6.18-8.1.14.el5 ro root=/dev/hda1 rhgb quietinitrd /boot/initrd-2.6.18-8.1.14.el5.img |
| [root@linux ~]# uname?-r 2.6.18-8.1.14.el5xen#?仔細(xì)看,鳥哥的核心為新的?xen?的核心喔![root@linux ~]# chkconfig?--list?|?grep?xen xend 0:off 1:off 2:on 3:on 4:on 5:on 6:off xendomains 0:off 1:off 2:off 3:on 4:on 5:on 6:off #?Runlevel?3/5?的?xen?相關(guān)服務(wù)是有啟動的才行![root@linux ~]# pstree?-p?|?grep?xen| |-xenbus(10)| `-xenwatch(9)|-xenconsoled(2348)---{xenconsoled}(2349)|-xenstored(2340) #?這樣看來,應(yīng)該確實是有啟動的樣子喔!繼續(xù)最後一個確認(rèn)![root@linux ~]# xm?list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 462 1 r----- 49.2 #?xm?為?Xen?的重要指令,list?為列出已經(jīng)在跑的?xen?系統(tǒng),預(yù)設(shè)有?domain-0?存在! |
xen?的套件結(jié)構(gòu)?
我們前面談到過,?Xen?在?domain-0?是由一個?xend?的服務(wù)所管理的,他可以用來啟動、關(guān)閉與連結(jié)到其他的?domain-U?當(dāng)中。此外,?Xen?亦提供許多的指令來讓系統(tǒng)管理員管理他們的?domain-U?啊!這些重要的啟動執(zhí)行檔為:/usr/sbin/xend:就是?xend?的啟動腳本,使用?python?程式語言寫成的;?
/usr/sbin/xm:重要的管理?xen?的指令,可輸入?xm?help?查詢用法。?
/etc/xen/xend-config.sxp:這個重要!是?xend?的設(shè)定檔!內(nèi)容包括?domain-0?的類型、網(wǎng)路的連結(jié)方式、?domain-0?的記憶體與CPU等資源配置、是否使用?vnc?作為?domain-U?的連線方式等等。?不過,鳥哥覺得,這個檔案不太需要更動,使用預(yù)設(shè)值就很夠用了。
/etc/xen/:裡面含有數(shù)個?domain-U?的設(shè)定檔範(fàn)本,包括:xmexample1,?xmexample.hvm。?其中,那個?xmexample.hvm?可作為完整模擬的參考範(fàn)本喔!
/etc/xen/auto:如果妳想要在系統(tǒng)開機(jī)時就自動啟動某個?domain-U?的話,可以將該設(shè)定檔指定連結(jié)到這個目錄中。?舉例來說,如果妳要在開機(jī)後立即使用?/etc/xen/xmexample.hvm?設(shè)定檔來啟動某個?domain-U?,?那可以這樣做:
[root@linux ~]# cd?/etc/xen/auto [root@linux auto]# ln?-s?../xmexample.hvm?.#?這只是個範(fàn)例,妳可不要跟著做!因為?xmexample.hvm?還需要修改才能運作! /etc/xen/scripts:這目錄有趣了!包括虛擬設(shè)備的啟動、虛擬網(wǎng)路的啟動、?虛擬橋接器的啟動等等,都是透過這目錄底下的所有檔案來達(dá)成的!?
?
第一個泛用實例
就如同圖?2-1?的樣子,在主機(jī)上的所有?Linux?OS?都需要自己能夠開機(jī),?而開機(jī)流程通常是這樣的:(註8)
step?1:?按下電源,主機(jī)開始讀取?BIOS?資料;?
step?2:?取得開機(jī)的裝置順序,並由?MBR?取得開機(jī)選單與開機(jī)管理程式;?
step?3:?由開機(jī)管理程式載入?Linux?kernel?及虛擬磁碟?(initrd);?
step?4:?Kernel?偵測硬體載入適當(dāng)?shù)尿?qū)動程式,並掛載根目錄以讀取核心模組;?
step?5:?開始由?/sbin/init?程式設(shè)定主機(jī)的環(huán)境。?
硬體支援性?
就如同前面幾個小節(jié)談到的,如果我們的硬體並不支援?xen?所必須要的功能,那麼妳是無法建立好你的?domain-U?的!?在這個泛用案例當(dāng)中我們的重點是測試半虛擬化,因此妳只要具有?PAE?的支援即可。?鳥哥以較低階的?P-III?800?來進(jìn)行測試,硬體檢查的結(jié)果是這樣的:
妳可以發(fā)現(xiàn)確實存在那個?pae?的關(guān)鍵字,因此我們這個系統(tǒng)是可以玩?Xen?的半虛擬化技術(shù)的!?所以讓我們繼續(xù)進(jìn)行工作吧![root@linux ~]# cat?/proc/cpuinfo?|?grep?flags flags : fpu tsc msr pae mce cx8 mtrr mca cmov pat pse36 mmx fxsr sse up ?
根目錄所需磁碟槽?
根目錄所需磁碟槽的來源可以有兩個,一個是實體硬碟,一個是利用?dd?建立一個大檔案來使用。?鳥哥比較傾向利用?dd?來處理你的根目錄喔!妳可以這樣做:
檔案是建立起來了,不過如果你的?Linux?有啟動?SELinux?的話,還需要一些類型的改變才可以!?其實動作也不難,這樣做就對了!範(fàn)例:建立一個?5GB?的大檔案 [root@linux ~]# mkdir?-p?/disk2/xen#?因為鳥哥的?/disk2?為一顆額外的硬碟,所以容量比較大啦![root@linux ~]# cd?/disk2/xen [root@linux xen]# dd?if=/dev/zero?of=xen.img?bs=1M?count=5000 5000+0 records in 5000+0 records out 5242880000 bytes (5.2 GB) copied,178.482 秒,29.4 MB/s #?這個時候會開始創(chuàng)造一個?5GB?左右的檔案,由於硬碟速度快慢的關(guān)係,#?這個動作可能會消耗數(shù)分鐘到數(shù)十分鐘不等。[root@linux xen]# ll?/disk2/xen -rw-r--r-- 1 root root 5242880000 Oct 10 00:30 xen.img
檔案建立起來後,就需要進(jìn)行格式化囉~格式化的方法為:[root@linux xen]# chcon?-t?xen_p_w_picpath_t?-R?/disk2/xen [root@linux xen]# ll?-aZ?/disk2 drwxr-xr-x root root user_u:object_r:xen_p_w_picpath_t . drwxr-xr-x root root system_u:object_r:file_t .. -rw-r--r-- root root user_u:object_r:xen_p_w_picpath_t xen.img #?如果妳有啟動?SELinux?才需要這麼做,否則就略過。#?反正你要記得?Xen?的檔案必須要是?xen_p_w_picpath_t?的安全內(nèi)容類型。
由於這是檔案不是磁碟分割槽,所以會有上述的警告訊息,妳按下『y』就對啦!範(fàn)例:將剛剛建立的大檔案格式化為?ext3?的檔案格式 [root@linux xen]# mke2fs?-j?/disk2/xen/xen.img mke2fs 1.39 (29-May-2006) /disk2/xen/xen.img?is?not?a?block?special?device. Proceed anyway? (y,n) y Filesystem label= OS type: Linux Block size=4096 (log=2) ....底下省略.... ?
複製或安裝根目錄?
由於?domain-U?與?domain-0?其實是一樣的系統(tǒng),因為是半虛擬化嘛!所以,最簡單的根目錄製作方法,?就是將原本的?domain-0?的根目錄複製到新的分割槽內(nèi)就對了!?以鳥哥的例子來說,妳可以簡單的這樣做:
基本上,根目錄的設(shè)定到這裡就算結(jié)束了!不過,妳會發(fā)現(xiàn)由於?domain-U?的資料都是由?domain-0?來的,?而不同的主機(jī)其實設(shè)定不會相同,所以使用上述的作法妳會發(fā)現(xiàn)有幾個小問題:[root@linux ~]# mount?-o?loop?/disk2/xen/xen.img?/mnt#?先將剛剛製作出來的資料給他掛載起來,這是特殊掛載法喔![root@linux ~]# cp?-ax?/{root,dev,var,etc,usr,bin,sbin,lib}?/mnt#?這幾個目錄的資料是一定需要複製的!粉重要!。[root@linux ~]# mkdir?/mnt/{proc,sys,home,tmp,selinux}#?這幾個目錄與虛擬檔案系統(tǒng)有關(guān),包括程序、核心資料等目錄,所以要先建立[root@linux ~]# vi?/mnt/etc/fstab/dev/sda1 / ext3 defaults 1 1 devpts /dev/pts devpts gid=5,mode=620 0 0 tmpfs /dev/shm tmpfs defaults 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 #?我這裡假設(shè)我的根目錄所在磁碟槽為?SATA?硬碟的第一個分割槽,#?所以是?/dev/sda1?。此外,其他的檔案系統(tǒng)如?proc,?sysfs?都必須要寫入!#?至於原本在?domain-0?的其他裝置,就給他拿掉吧![root@linux ~]# vi?/mnt/etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=xen.test.hostname#?這裡設(shè)定一下妳的主機(jī)名稱啦![root@linux ~]# vi?/mnt/etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0BOOTPROTO=noneIPADDR=192.168.0.123NETMASK=255.255.255.0ONBOOT=yes#?建議將?IP?也設(shè)好。但是要注意那個?HWADDR?最好能夠拿掉不設(shè)定![root@linux ~]# umount?/mnt#?記得將掛載的資料給他卸載掉 妳必須要手動處理一些小設(shè)定,包括主機(jī)名稱,?/etc/fstab,?IP?參數(shù)等等;?
即使手動處理過上述的資料,還是很可能會無法成功的啟動?domain-U?;?
由於?domain-0?可能會安裝比較多的套件,這些資料又在?domain-U?當(dāng)中用不著,徒然造成硬碟容量的浪費。?
?
所以,雖然這個方法最簡單,不過通常鳥哥不是很建議您使用啦!?^_^設(shè)定虛擬磁碟映象檔以及終端機(jī)介面?
由於預(yù)設(shè)的?CentOS?虛擬磁碟?(Initial?Ram?Disk)?並不包含一些?Xen?的相關(guān)驅(qū)動程式,?因此搞了老半天也是無法驅(qū)動?Xen?的?domain-U?,給他氣死!?所以,我們得先就?initrd?來進(jìn)行一些額外的設(shè)定才行。?這個地方非常的重要!因為鳥哥卡在這裡好幾天~最後才發(fā)現(xiàn)原來是?initrd?的問題啊~
除了這個虛擬磁碟之外,為了要方便我們登入?domain-U?的環(huán)境,我們需要產(chǎn)生一個終端機(jī)介面才行。?因為每個?domain-U?會使用到終端介面,然而我們知道?tty1?~?tty7?預(yù)設(shè)給?domain-0?使用掉了。?為此,我們必須得要製作出一個虛擬的終端介面,那就是?xvc0?這個終端介面囉。如何產(chǎn)生呢??簡單的流程是這樣:[root@linux ~]# mount?-o?loop?/disk2/xen/xen.img?/mnt [root@linux ~]# cd?/boot [root@linux boot]# ?mkinitrd?-v?-f?--fstab?/mnt/etc/fstab?--with?xenblk?\ > --with?xennet?--preload?xenblk?--preload?xennet?\ > initrd-2.6.18-8.1.14.el5xen.vbird.img?`uname?-r` [root@linux boot]# umount?/mnt#?詳細(xì)的各項參數(shù)請?man?mkinitrd?,上述的範(fàn)例僅是利用?/etc/fstab?的裝置來設(shè)定,#?並且加上一些?xen?相關(guān)的驅(qū)動程式而已。這個過程非常的重要!#?最終會製作出一個?initrd-2.6.18-8.1.14.el5xen.vbird.img?檔案
做完這一步之後,接下來就是可怕的設(shè)定檔囉~[root@linux ~]# vi?/etc/inittab#?大約在第?51?行的地方加入底下特殊字體的部分: 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 co:2345:respawn:/sbin/agetty?xvc0?9600?vt100-nav#?意思是使用?agetty?建立?xvc0[root@linux ~]# init?q#?init?q?這個指令可以讓?/etc/inittab??的設(shè)定立刻生效而不需要重新開機(jī)![root@linux ~]# ln?-s?/dev/console?/dev/xvc0#?如果?xvc0?沒有主動建立的話,我們需要手動來建立連結(jié)才可以喔! ?
編輯?xen?虛擬資料的設(shè)定檔?
接下來就是重頭戲啦!因為我們必須要指定?domain-U?的相關(guān)虛擬設(shè)定值,包括使用幾顆?CPU?、使用多少記憶體容量,?以及所使用的核心與根目錄的所在等等。如前所述,這些設(shè)定檔主要都在?/etc/xen?底下,?尤其裡面的?xmexample1,?xmexample2?等檔案就是很好的說明文件檔,很有參考價值。?鳥哥先說一下我的設(shè)定是這樣的:
特別特別留意的是,上面的設(shè)定檔當(dāng)中的?kernel,?ramdisk?以及?disk?都是以原本的主機(jī)?(domain-0)?的角度來思考的,?也就是說,實際上我們是以?domain-0?的核心檔案來進(jìn)行?domain-U?的開機(jī),因此妳會發(fā)現(xiàn)在?domain-U?當(dāng)中並不存在?/boot?這個目錄喔!因為實際上用來開機(jī)的是?domain-0?的檔案嘛![root@linux ~]# vi?/etc/xen/centos5#?這個檔案的檔名可以隨便你取,不過設(shè)定檔最好是在?/etc/xen?這個目錄下才好!name????=?"centos5"kernel??=?"/boot/vmlinuz-2.6.18-8.1.14.el5xen"ramdisk?=?"/boot/initrd-2.6.18-8.1.14.el5xen.vbird.img"memory??=?"128"vcpus???=?1vif?????=?[?''?]disk????=?[?'tap:aio:/disk2/xen/xen.img,sda1,w'?]root????=?"/dev/sda1?ro?"#?name:只是一個顯示的名稱,一般建議與檔名相同即可;#?kernel:在?domain-0?上面的檔案,用來進(jìn)行?domain-U?的開機(jī)!非常重要!#?ramdisk:就是?initrd?那個檔案囉~剛剛我們才做出來的檔名#?memory:分配給這個?domain-U?的記憶體有多少?如果沒有圖形,96?MB?也可以!#?vcpus:使用多少顆?CPU?的意思;#?vif:是否需要網(wǎng)路卡,如果需要網(wǎng)路卡,至少要有設(shè)定!但內(nèi)容可用預(yù)設(shè)!#?disk:用來作為根目錄的是那個磁碟,這個最重要啦!語法為:#tap:aio:/完整/路徑/檔名,設(shè)計為domain-U的磁碟代號,可否寫入#以我們這個例子來說,我將之前建立的大檔案模擬成為?domain-U?的#/dev/sda1?,並且該?partition?為可寫入?(w)。
至於另一個重點就是那個?disk?參數(shù)。我們可以使用模擬的方式也可以使用實際的?partition?來給予設(shè)定。?如果是『用檔案來模擬成為?partition』時,使用兩個逗號?(,)?隔開成為三個欄位,分別為:
tap:aio:/完整路徑/檔案的名稱,裝置代號名稱,寫入與否?[tap:aio:]:為較新的檔案處理模式,舊的方式為使用:[file:]?
[裝置代號名稱]:就是模擬的裝置,請與?domain-U?內(nèi)的?fstab?對應(yīng)起來喔!?
[w]:就是設(shè)定可否寫入,若唯讀則為[r]?
?
如果使用實體?partition?來模擬的話,那麼開頭的部分會以『phy:』來取代。舉例來說,如果我們以?/dev/hda5?來作為?domain-U?的?/dev/sda1?的話,那就會變成:disk?=?[?'phy:/dev/hda5,sda1,w'?]如果一切都搞定之後,接下來讓我們來啟動?Xen?的?domain-U?吧!
利用?xm?指令啟動與管理?domain-1?
在?domain-0?可以使用?xm?這個指令來啟動、關(guān)閉、刪除某個?domain-U?,?xm?的指令用法是這樣的:
如果想要啟動我們剛剛建立的?centos5?這個設(shè)定檔內(nèi)的?domain?時,妳可以使用『xm?create?-c?centos5?』即可。?那個?-c?的作用是可以讓妳直接取得?domain-U?的終端機(jī)介面。鳥哥在?pietty?上面連線到?domain-0?,?然後啟動?centos5?這個?domain?的情況如下所示:[root@linux ~]# xm?[動作]?[設(shè)定檔名]?[-c]參數(shù):[動作]:要某個設(shè)定檔內(nèi)的?domain-U?作何動作之意,常見的動作有:???create???:啟動這個?domain-U?的意思,例如啟動?centos5?這個設(shè)定檔時,使用:??????????????xm?create?centos5???destroy??:立即由記憶體中,將這個?domain-U?給刪除,常用於?domain-U?出問題時???list?????:將目前已經(jīng)啟動的?domain?都列出來之意;???console??:若有已建立的?domain-U?時,可用?console?來取得?domain-U?的終端介面???shutdown?:關(guān)閉某個已啟動的?domain。如果想要關(guān)閉全部的?domain-U?,可用??????????????xm?shutdown?-a[設(shè)定檔名]:亦即在?/etc/xen/?目錄下的檔名囉;-c?:同時建立到該設(shè)定檔的終端介面?(console)
圖?2-2、啟動?xen?domain-U?的示意圖
在圖?2-2?當(dāng)中,輸入指令後?domain-U?的開機(jī)流程就會依序的顯示在妳的終端機(jī)上,?感覺上就好像坐在電腦前面看?Linux?主機(jī)開機(jī)一樣!實在是很不賴!最後如果開機(jī)順利成功的話,?結(jié)果會像下圖所示這樣:
圖?2-3、啟動?xen?domain-U?的示意圖
在圖?2-3?當(dāng)中,最上方圈起來的開機(jī)訊息是錯誤訊息。由於我們是複製?domain-0?的所有資料,?因此連同原本寫在?/etc/rc.d/rc.local?檔案內(nèi)的執(zhí)行過程也會被執(zhí)行。但是?domain-U?的狀況與?domain-0?並非完全相同,所以就會如上所述出現(xiàn)一些錯誤訊息啦!這也是我們需要額外處理的部分喔。
當(dāng)你以?root?的身份登入後?(這個真的是終端機(jī),並非是?ssh?的畫面喔!),會發(fā)現(xiàn)多了一個?xvc0?的終端介面,?這個介面得先在?/etc/inittab?裡面設(shè)定好才行!如果一切都?OK?了!恭喜您,你已經(jīng)登入?domain-U?囉!?接下來請妳自行根據(jù)妳的需要來設(shè)定好妳的?domain-U?吧!讓這兩個?domain?並行呢!
好了,現(xiàn)在我如何登出?centos5?這個?domain-U?呢?妳可以這樣做的:直接在?domain-U?的環(huán)境中按下?[ctrl]-]?這個組合鍵來回到?domain-0?的環(huán)境;?
直接關(guān)閉?pietty?等連線的軟體;?
利用其他?bash?來結(jié)束?(kill)?掉使用?xm?所建立的連線程序?
?
有趣的是,即使妳使用上述的方法來離開?domain-U?時,?也不會影響到?domain-U?的繼續(xù)運作!而且?root?也不會登出,等到妳下次再以『?xm?console?centos5?』時,?會繼續(xù)取得?root?的動作繼續(xù)處理剛剛未完成的工作呢!很神奇吧~現(xiàn)在,請?zhí)?domain-0?的地方,或者是利用另外一條?pietty?的連線連入?domain-0?,我們使用?xm?list?來察看一下各個?domain?的狀況吧!
| [root@linux ~]# xm?list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 366 1 r----- 735.2 centos5 42 127 1 ------ 52.4 #?妳會發(fā)現(xiàn)多了一個?domain?出現(xiàn)!名稱為?centos5?啦!#?妳也會發(fā)現(xiàn)有個?State?吧!那個?State?的意義是這樣的:#?r?:該?domain?正在使用?CPU?資源在運作中;#?b?:這個?domain?目前被懸置(blockded),很可能由於這個?domain?在等待較長時間#?????的輸入輸出?(I/O)?之故。#?p?:該?domain?處於暫停的狀態(tài),通常由於管理員使用?xm?pause?之故。#?????當(dāng)?domain?在此狀態(tài)時,?Xen?的監(jiān)督器將不會處理該?domain?的動作;#?s?:這個?domain?正在關(guān)機(jī)當(dāng)中#?c?:這個?domain?已經(jīng)?crash?了,但是卻沒有自動的關(guān)掉。通常是因為沒有設(shè)定#?????on_crash?的相關(guān)動作所致。#?d?:該?domain?正在死亡中...因為該?domain?無法正確的?shutdown/crashed?之故。? |
?
?
轉(zhuǎn)載于:https://blog.51cto.com/luyx30/1249562
總結(jié)
以上是生活随笔為你收集整理的XEN--转载自鸟哥的linux私房菜的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到盛米饭是怎么回事
- 下一篇: linux远程登录三种方式telnet,