虛擬化之安裝Xen實例

-----本文大綱

Xen簡介

Xen體系結構

Xen佈署(Centos 6.5)

-------------

一、Xen簡介

Xen 是一個開放源代碼虛擬機監視器,由劍橋大學開發。它打算在單個計算機上運行多達100個滿特徵的操作系統。操作系統必須進行顯式地修改(“移植”)以在Xen上運行(但是提供對用戶應用的兼容性)。這使得Xen無需特殊硬件支持,就能達到高性能的虛擬化。

二、Xen體系結構

同其它的硬件級虛擬化軟件(VMware,Virtual PC)一樣,在Xen系統中,存在一個輕量級的軟件層,向運行在它之上的虛擬機提供虛擬硬件資源,同時分配和管理這些資源,並保證虛擬機之間的相互隔離。這個輕量級的軟件層稱爲虛擬機管理器(VMM)。在Xen系統中,VMM又稱爲管理程序(Xen Hypervisor)或簡稱Xen,而其上的虛擬機被稱爲虛擬域(Domain).

第一層 Xen Hypervisor

Xen Hypervisor位於操作系統與硬件之間,爲其上運行的操作系統內核提供虛擬化的硬件環境。Xen採用混合模式(Hybrid Model),因此在Xen上衆多Domain中存在一個特權權域(Privileged Domain)用來輔助Xen管理其它Domain,提供相應虛擬資源服務,特別是其它Domain對I/O設備的訪問,這個特權域稱爲Domain 0 (Dom0),而其它則稱爲DomainU (DomU).

wKiom1OA907DJx1lAAK2f1gxfV8898.jpg

Xen向Domain提供了一個抽象層(包含管理和虛擬機硬件的API)。其中Dom0擁有真實的設備驅動(Native Device Driver, 原生設備驅動),能夠直接訪問物理硬件,它負責與Xen提供的管理API交互,並通過用戶模式下的管理工具來管理Xen的虛擬機環境,啓支和停止其它Domain,並通過控制接口(Control Interface)控制其它的Domain的CPU調度、內存分配以及設備訪問,如物理磁盤存儲和網絡接口等,同其它虛擬機系統一樣,在Domain中運行的操作系統也稱爲客戶操作系統(Guest OS),在半虛擬化中這些Guset OS的內核己做了相應用修改,因此Xen中Guest OS一般都會加上“Xeno”前綴;在Xen系統中,Xen向Domain提供了基本的虛擬硬件(VCPU、虛擬MMU)和基本機制(事件通道);同時向Dom0提供了虛擬域管理API(控制接口),使Dom0能夠利用運行在其它用戶空間的管理工具(控制軟件)控制和管理其他Domain,對於Domain對設備的訪問,Xen提供了相應的硬件接口(安全硬件接口),以保證設備訪問的安全進行。

  • 控制接口

Xen提供的控制接口僅能被Dom0使用,用以幫助Dom0控制和管理其它的Domain.通過控制接口,Dom0不僅能夠創建、銷燬Domain,控制 Domain的運行、暫停、恢復以及遷移,還能夠實現對其他Domain的CPU調度、內存分配以及設備訪問,

  • 安全硬件接口

作爲Xen核心組件之一,安全硬件硬件接口(Safe Hardware Interface)需要完成除虛擬CPU、MMU之外的所有硬件虛擬工作,包括DMA/IO、驅動程序、虛擬的PCI地址空間配置、虛擬硬件中斷等。安全硬件接口只能被擁有原生驅動的(Dom0、IDD)使用,向其它他Domain僅提供虛擬硬件服務,這些工作是通過建立在擁有原生設備驅動的Domain和其他Domain之間的設備通道(Device Channel)來完成的,設備的通道並不是Xen系統中存在的獨立概念,而是藉由事件通道和共享內存來實現的。其它的Domain中的Guest OS通過設備通道向擁有原生設備驅動的Domain提交異步I/O請求,再由擁有原生設備驅動的Domain通過安全硬件接口完成I/O請求。

  • VCPU

爲了能夠使運行在Guest OS中的應用程序能夠正常執行,Xen爲每一個Domain建立了VCPU結構,用以接收Guest OS中傳遞的指令,其中,大部分的指令都被VCPU直接交給物理CPU執行,而對於特權指令和臨界指令則需要經過確認後交由Xen代爲執行。

  • MMU

虛擬MMU(Virtual MMU)被用幫助Guest OS完成地址轉換,即由虛擬地址到機器地址的轉換。在Xen系統中增加了客戶物理地址層,使得地址層由原來的二層結構變成了三層結構,因此,Xen系統通過虛擬MMU仍然能夠使用硬件MMU來完成地址轉換。

  • 事件通道

事件通道(Event Channel)用於Domain和Xen之間、Domian和Domain之間一種異步事件通知機制,用於處理Guest OS的虛擬中斷、物理中斷以及Domain之間通信等。事件通道是Xen系統的基本機制,與超級調用一起在Xen各個虛擬子系統中都到重格的作用。

  • 控制面板

控制面板(Control Panel)是運行在Dom0中的一系列軟件集合(如xm,xl),用於Dom0同Xen中的控制接口交互,完成對整個Xen系統的管理工作,相當於系統的總控臺。

  • 原生設備驅動

原生設備驅動是指原來操作系統中所使用的一般設備驅動。在Xen系統中,只有經過授權的Domain纔有權使用原生的設備驅動訪問真實的硬件設備。通過支持原生設備驅動,Xen能夠最大限度的利用操作系統(如Linux)中的設備驅動,減少了Xen的開發難度,提高了效率,通過安全硬件接口,這些原生設備驅動能夠被限定在特定的I/O空間中,爲Domain提供設備訪問服務。

  • 前端/後端設備驅動

前端/後端設備驅動(Front-end/Back-end Device Driver)共同組成了Xen的分離設備驅動模型 (Split Drivice Model)負責完成Domain對硬件設備的訪問,其中,位於其它Domain內的前端設備驅動將I/O請求發送給位於Dom0(或IDD)內的後端設備驅動,後端設備驅動接收I/O請求,並對其進行安全檢查,然後將通過檢查的I/O請求交由原生設備驅動處理。

  • 設備模型

設備模型(Device Models)是在Xen支持硬件虛擬化技術後被引入Dom0的,它主要用來處理硬件虛擬域中Guest OS對機器設備的訪問,設備模型訪問的實現主要基於QEMU。

第二層 虛擬化域(Domain)

Xen3.0引入了硬件虛擬化技術,使得Xen能夠支持不修改內核的Guest OS。運行未修改內核操作系統的Domain稱爲硬件虛擬機(Hardware Virtual Machine HVM)或硬件虛擬域。至此,運行在Xen之上的虛擬域包括四種類型:特權域(Privileged Domain,Dom0)、獨立的設備設備驅動域(IDD)、硬件虛擬域(HVM)、非特權域(Unprivileged Domain,DomU)

  • 特權域

Dom0作爲Xen的“助手”,在整個Xen系統中是獨一無二的。它隨着Xen的啓動而建立,是第一個運行在Xen上的虛擬域,Dom0擁有原生設備驅動,具有直接訪問硬件設備的特權,並通過和Xen提供的控制接口的交互事控制和管理其它的虛擬域

運行在Dom0中的控制面板能夠控制其它Domain的創建、銷燬、配置和遷移;設備管理器則負責設備驅動的初始化和管理設備的訪問,在訪問設備過程中,與直接模擬真實的物理設備不同,Xen向其他Domain提供的是抽象的設備,例如,其它Domain通過網卡的前端驅動所看到的網卡設備僅僅是一個通用的網卡類設備,而非具體的某一個網卡,在接收到其它Domain通過網卡的前端驅動發送的I/O請求後,Dom0則利用網卡的後端驅動來確定具體的網卡,並交由原生驅動完成I/O請求。

  • 獨立設備驅動域(IDD)

在最簡單的Xen結構中,只存在一個特權域Dom0,這時Xen就好像一個硬件設備抽象層,將複雜的x86架構隱藏起來,所有的硬件設備被Dom0的Guest OS控制,但這種結構存在很大的問題,若一個特殊設備驅動包含了一些漏洞,那它就有可能摧毀整個Dom0的內核,從而導致整個系統崩潰,爲此,將設備驅動由Dom0移入另一個虛擬域中,一方面可降低Dom0的運行負載,另一個方面楊也可減低系統的風險,一旦虛擬域由於使用設備驅動出面故障,Dom0就可以很方便地重啓該虛擬域,這些經過Dom0授權、能夠使用特定設備驅動的虛擬域稱爲獨立設備驅動域(Isolated Driver Domain,IDD)。可以避免由於DMA需求和I/O中斷對Guest OS造成的影響。

  • 硬件虛擬域(HVM)

Xen3.0支持運行未修改內核的Guest OS,但這需要使用特殊硬件技術的支技,例如Intel的VT-x或AMD的ADM-V技術。運行這些Guest OS的虛擬域稱爲硬件虛擬域;由於Guest OS沒有修改內核,因此Guest OS不能直接支持Xen在半虛擬化下采用的分離設備驅動模型,這意味着Xen必須模擬出Guest OS能夠支持的環境。若HVM中的Guest OS要使用Xen的半虛擬化技術,則必須先通過執行CPUID指令支訪問一個特殊的虛擬寄存器和超級調用頁面,然後同其他Domain中的Guest OS一樣,通過修改超級調用頁表來發布新的超級調用。

  • 非特權域(DomU)

嚴格來講,DomU是指除了Dom0之外的Domain,但由於IDD經過Dom0授權後能夠使用設備驅動直接訪問物理設備,因而IDD也屬於“特權域”,因此,DomU是除了Dom0和IDD之外的Domain,包括前面提到的HVM;相對Dom0 來說,DomU受到了許多限制,首當其衝的是對硬件訪問,無論是HVM還是一般的DomU都不能直接訪問物理設備,必須藉助於Dom0或IDD才能完成。

三、Xen的佈署(Centos6.5)

1、下載Xen下kernel-xen

注:

只在將源指向Centos或163的Xen4的源就可以安裝了

[root@dynamic xen-4.1.3]#yum install -y xen-4.1.3-2.el6.x86_64.rpm \
xen-hypervisor-4.1.3-2.el6.x86_64.rpm xen-libs-4.1.3-2.el6.x86_64.rpm \ 
xen-runtime-4.1.3-2.el6.x86_64.rpm xen-licenses-4.1.3-2.el6.x86_64.rpm
[root@dynamic kernel]#yum install -y kernel-xen-release-6-4.noarch.rpm \
kernel-xen-3.7.4-1.el6xen.x86_64.rpm kernel-xen-firmware-3.7.4-1.el6xen.x86_64.rpm

安裝完成後,修改/boot/grub/grub.conf

root (hd0,0)
        kernel /xen.gz dom0_mem=1024M cpufreq=xen dom0_max_vcpus=2 dom0_vcpus_pin
        module /vmlinuz-3.7.4-1.el6xen.x86_64 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DM LANG=en_US.UTF-8 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg0/root  KEYBOARDTYPE=pc KEYTABLE=us rhgb crashkernel=auto quiet rhgb quiet
        module /initramfs-3.7.4-1.el6xen.x86_64.img

將安裝完的內核以模塊方式加載;引導xen.gz,dom0的內存分配1G

之後重新啓動系統

重啓後使用xm命令查看

[root@essun ~]# xm list
#運行此命令需要依賴於xend服務
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1024     2     r-----     88.4
[root@essun ~]# service xend stop
Stopping xend daemon:                                      [  OK  ]
[root@essun ~]# xl list
Name                                        ID   Mem VCPUs	State	Time(s)
Domain-0                                     0  1024     2     r-----      89.3
#name:每一個域的獨有名稱
#ID:每一個域的身份標識
#Mem:分配的內存空間大小
#Vcpus:虛擬CPU的顆數
#State:Xen虛擬機的狀態
#Time:佔用CPU真正運行的時長
[root@essun ~]# xl info 
#顯示主機的當前信息
host                   : essun.mariadb3.com
release                : 3.7.4-1.el6xen.x86_64
version                : #1 SMP Wed Jan 23 15:52:51 EST 2013
machine                : x86_64
nr_cpus                : 1
nr_nodes               : 1
cores_per_socket       : 1
threads_per_core       : 1
cpu_mhz                : 2095
hw_caps                : 0fabfbff:28100800:00000000:00003f40:90ba2203:00000000:00000001:00000000
virt_caps              :
total_memory           : 2895
free_memory            : 1836
free_cpus              : 0
xen_major              : 4
xen_minor              : 1
xen_extra              : .3
xen_caps               : xen-3.0-x86_64 xen-3.0-x86_32p 
xen_scheduler          : credit
xen_pagesize           : 4096
platform_params        : virt_start=0xffff800000000000
xen_changeset          : unavailable
xen_commandline        : dom0_mem=1024M cpufreq=xen dom0_max_vcpus=2 dom0_vcpus_pin
cc_compiler            : gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) 
cc_compile_by          : mockbuild
cc_compile_domain      : crc.id.au
cc_compile_date        : Fri Oct 12 13:39:11 EST 2012
xend_config_format     : 4

可以使用xm/xl來管理DomU,常用子命令

[root@essun ~]# xm help
Usage: xm <subcommand> [args]

Control, list, and manipulate Xen guest instances.

xm full list of subcommands:

 console              Attach to <Domain>'s console.    
#連接到指定域的控制檯                 
 vncviewer            Attach to <Domain>'s VNC server.                  
 create               Create a domain based on <ConfigFile>.   
#根據配置文件創建虛擬機實例(默認的配置文件在/etc/xen下)         
 new                  Adds a domain to Xend domain management           
 delete               Remove a domain from Xend domain management.      
 destroy              Terminate a domain immediately.
#關閉一個實例                   
 domid                Convert a domain name to domain id.               
 domname              Convert a domain id to domain name.               
 dump-core            Dump core for a specific domain.                  
 list                 List information about all/some domains.          
 mem-max              Set the maximum amount reservation for a domain.  
 mem-set              Set the current memory usage for a domain.        
 migrate              Migrate a domain to another machine.
 #將某一域遷移到其它機器上              
 pause                Pause execution of a domain.                      
 reboot               Reboot a domain.
 #重啓某一個domain                                  
 rename               Rename a domain.                                  
 reset                Reset a domain.                                   
 restore              Restore a domain from a saved state. 
 #還原某一個己建立的快照             
 resume               Resume a Xend managed domain                      
 save                 Save a domain state to restore later.
 #爲某一個域建立一個快照             
 shutdown             Shutdown a domain.  
 #shutdown屬於正常關閉一個實例                             
 start                Start a Xend managed domain 
#啓動一個xend管理的實例                      
 suspend              Suspend a Xend managed domain                     
 sysrq                Send a sysrq to a domain.                         
 trigger              Send a trigger to a domain.                       
 top                  Monitor a host and the domains in real time.
#實時監控虛擬機的運行狀態      
 unpause              Unpause a paused domain.                          
 uptime               Print uptime for all/some domains.                
 usb-add              Add the usb device to FV VM.                      
 usb-del              Delete the usb device to FV VM.                   
 domstate             get the state of a domain                         
 vcpu-list            List the VCPUs for all/some domains.              
 vcpu-pin             Set which CPUs a VCPU can use.                    
 vcpu-set             Set the number of active VCPUs for allowed for    
                      the domain.
                       
#其後命令省略中
<Domain> can either be the Domain Name or Id.
For more help on 'xm' see the xm(1) man page.
For more help on 'xm create' see the xmdomain.cfg(5)  man page

到此,Xen虛擬機完裝完成

下面利用網絡安裝DomU

第一步、下載引導文件

將initrd.img、vmlinuz引導文件到任意目錄下。

第二步、創建Domain

修改配置文件 (/etc/xen)

可以將任意一個模板文件修改後保存爲獨立的Domain配置文件,只要修改如下以內容

root@essun ~]# sed '/^$/d' /etc/xen/test1 |grep -v "#"
kernel = "/tmp/vmlinuz"
#下載後引導文件的位置
ramdisk = "/tmp/initrd.img"
memory = 2048
#Domain的內存大小
name = "TEST1"
#Domain的名字
vcpus = 2
#虛擬兩顆CPU
vif = [ 'bridge=br0' ]
#橋設備
disk = [ '
#磁盤映像文件的位置,後端識別類型,讀取方式

第三步、創建磁盤映像文件 (稀疏格式)

#mkdir /xen/vm1
#cd /xen/vm1
#dd if=/dev/zero  of=test1.img bs=1M oflag=direct seek=102399 count=1

第四步、添加橋設備

[root@essun xen]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0
[root@essun xen]# cat /etc/sysconfig/network-scripts/ifcfg-br0 
DEVICE=br0
BOOTPROTO=none
#HWADDR="00:0C:29:1E:F8:F9"
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Bridge
#UUID="e467967d-404a-4830-9dda-1b74d1569727"
#HWADDR=00:0c:29:d2:39:cb
IPV6INIT=no
USERCTL=no
IPADDR=172.16.32.32
NETMASK=255.255.0.0
[root@essun xen]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
BOOTPROTO=none
#HWADDR="00:0C:29:1E:F8:F9"
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Ethernet
BRIDGE=br0
#UUID="e467967d-404a-4830-9dda-1b74d1569727"
IPV6INIT=no
USERCTL=no

#開啓stp
[root@essun xen]#brctl stp br0 on

第五步、啓動服務

[root@essun xen]#pwd 
/etc/xen
[root@essun xen]#xm create -c test1

安裝過程之語言選擇

wKioL1OBrrGA6O0iAADG-z1H6bk674.jpg

指定URL

wKiom1OBr3uwwxERAAC5AzTQfXc798.jpg

開始安裝

wKiom1OBr7_hXfieAABlUISY6eU189.jpg

是否啓動VNC

wKiom1OBsCPwfUooAADr3Gl***c305.jpg

如果選擇啓動,就要設定一個密碼

wKiom1OBsHLCLEzAAAEK4A8gebo484.jpg

連接VNC

wKioL1OBsJugtmiJAADXEenT_W8097.jpg

安裝完成會提示重啓,但重啓之前修改Domain配置文件

wKioL1OBsMiA9DpgAAFDg74h8Z8807.jpg

 將以下內容

[root@essun ~]# sed '/^$/d' /etc/xen/test1 |grep -v "#" 
kernel = "/tmp/vmlinuz"
ramdisk = "/tmp/initrd.img"
memory = 2000
vcpus=2
name = "TEST1"
vif = [ 'bridge=br0' ]
disk = [ 'file:/xen/vm1/test1.img,xvda,w'

替換爲

[root@essun ~]# sed '/^$/d' /etc/xen/test1 |grep -v "#" 
memory = 1024
bootloader="/usr/bin/pygrub"
vcpus=1
on_reboot = 'restart'
on_crash = 'destroy'
name = "TEST1"
vif = [ 'bridge=br0' ]
disk = [ 'file:/xen/vm1/test1.img,xvda,w'

之後就可以點reboot了 使用xl 查看

[root@essun ~]# xl list
Name                                        ID   Mem VCPUs    State    Time(s)
Domain-0                                     0  1024     2     r-----    1460.2
TEST1                                        3  1024     1     -b----      14.2

雖然DomainTEST1重啓完成,但要使配置生效必須使其重讀,使用xm destroy TEST1命令終於TEST1。再次讀取匹配文件

[root@essun ~]#xm create -c /etc/xen/test1

wKiom1OBtCaihw2kAADmtxD_KRo627.jpg

也可以使用xm console TEST1連接到TEST1

wKioL1OBtHzCXPfeAADH1TgzDjo535.jpg

到此Xen實例安裝完成。



=========================完======================

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章