目錄:
1. Xen的簡介
1.1 Xen的大體結構
1.2 Xen對VM的稱呼
1.3 Xen對CPU和內存的虛擬化過程
1.4 Xen對IO設備的虛擬化過程
1.5 Linux Kernel對Xen的支持
1.6 Xen版本發布簡史
1.7 Xen的工具棧
1.8 XenStore
1.9 虛擬化中的四種網絡模型
1.10 Xen的安全問題導讀
2. Xen的安裝及配置文件說明
2.1.1 在CentOS6.6上運行Xen的條件
2.1.2 Xen的配置
2.2.1 Xen 啟動DomU的配置文件說明
2.2.1.1 如何創建一個Xen PV模式的VM 【注:HVM模式的VM創建參見試驗部分】
3. 使用libvirt實現Xen虛擬機的圖形管理
4. PV DomU的根文件系統可以以多種不同的方式安置
提示:
Xen僅建議學習其原理,不建議花時間學習具體使用.
若希望了解具體使用參考: https://pan.baidu.com/s/1A77aJdoBK7CPIF7FVngudQ
查看此文件需要使用Cherrytree文檔編輯器查看
1. Xen的簡介
Xen是一個開源的可直接運行於硬件層之上的虛擬化軟件,它可在傳統虛擬技術極度不友好的X86架構上也有上佳的表現它是英國劍橋大學開發的開源虛擬化軟件,它的初衷是在一台物理機上運行上百台虛擬機;
Xen的設計十分精巧,它屬於虛擬化type-I ,因為Xen實際是一個簡化版的Hypervisor層;相對於Type-II類型的基於Host的虛擬化(如:VMware Workstattion),其性能相對會較好;Xen僅對CPU和Memory直接接管,而其它IO硬件驅動則由其上運行的第一個虛擬機來提供支持.這樣做的原因是: Xen無法為眾多IO設備開發驅動,而硬件設備的開發商也不會專為Xen提供驅動,因此Xen采用了這樣一種特別的設計方式。
Xen默認認為自己是直接運行於硬件層之上的虛擬化軟件,並且可以直接驅動CPU和內存,需注意CPU和內存是所有想要運行的操作系統必須能直接支持的,但Xen為保證自身的小巧,它並沒有提供虛擬機的管理接口,因此它采用了一種獨特的方式,先運行一台特權虛擬機,且這台VM必須支持Kernel的修改,因此選擇開源的Linux做為特權VM是最合適的,這樣也可方便采用Linux所支持的方式來開發虛擬機管理接口,實現與Xen Hypervisor層直接交互來完成為VM分配CPU和內存資源 及 創建、刪除、停止、啟動VM的管理接口;通常這台特權虛擬機一定會采用當前比較流行的Linux發行版,因為它能支持更多IO硬件設備,如:網卡,磁盤,顯卡,聲卡等; 到目前為止,NetBSD, GNU/Linux, FreeBSD和Plan 9,OpenSolaris等系統已經支持已半虛擬化方式運行在Xen的DomU中;目前Xen已經支持x86,x86_64和ARM等平台,並正在向IA64、PPC移植。移植到其他平台從技術上是可行的,未來有可能會實現。
Xen虛擬機支持在不停止的情況下在多個物理主機之間實時遷移。在操作過程中,虛擬機在沒有停止工作的情況下內存被反復的復制到目標機器。虛擬機在最終目的地開始執行之前,會有一次60-300毫秒的非常短暫的暫停以執行最終的同步化,給人無縫遷移的感覺。類似的技術被用來暫停一台正在運行的虛擬機到磁盤,並切換到另外一台,第一台虛擬機在以后可以恢復。
1.1 Xen的大體結構:
Xen的組成分為三部分:
(1) 硬件層之上的Xen Hypervisor層:負責直接驅動CPU和Memory這些基礎硬件,
為其它所有虛擬機提供CPU、內存、Interrupt(中斷)管理,並且還提供了HyperCall的調用。
(2) 第一個虛擬機: 此虛擬機在Xen中稱為特權虛擬機: 它有整個虛擬化環境的訪問權,並負責創建用戶級虛擬機,
並為其分配I/O設備資源.它的Kernel是經過特別修改的VM,它可以直接訪問IO硬件也可訪問其它用戶VM。
(3) 其它眾多虛擬機: 這些虛擬就是用戶級虛擬機: 它們是實際提供給用戶使用的虛擬機,也是相關隔離的VM。
需要注意:Xen支持三種虛擬化,當然此處的虛擬化特指CPU的半虛擬化或完成虛擬化.
<1> Para-Virtualization(半虛擬化): 在這種虛擬化中,CPU不要求支持HVM特性,
但GuestOS的Kernel必須允許被修改.否則將無法支持該GuestOS運行在DomU中。
這是因為必須讓GuestOS知道自己是運行在虛擬化環境中,這樣它在進行特權指令操作硬件時,
會直接發起HyperCall向Xen Hypervisor發起請求來完成所謂的硬件操作。
在PV技術下,能夠運行在DomU上的OS包括:
Linux, NetBSD, FreeBSD, OpenSolaris
<2> HVM(基於硬件的完全虛擬化): 此種虛擬化需要借助於Intel的VT-x 或 AMD的AMD-v 的HVM技術
及Qemu的IO硬件模擬,才能支持GuestOS的kernel不修改,就可直接被DomU支持。
這是因為Xen Hypervisor是運行在CPU的環-1上的,GuestOS的kernel是運行在CPU的環0上,GuestOS
向環0上發起的所有假特權指令調用都由CPU直接捕獲,並交由環-1上的Xen Hypervisor處理,最后由Xen代其執行
這樣DomU若發起關機指令時,Xen僅會切斷該GuestOS的電源,而不會影響其它GuestOS。
在HVM技術下,能夠運行在DomU上的OS包括: 所有支持X86架構的OS.
<3> PV on HVM: I/O設備半虛擬化運行,CPU運行於HVM模式
此中方式是為了解決HVM方式中IO設備也必須完全模擬而帶來的性能低下問題;通過讓CPU進行
完全虛擬化,而I/O設備則采用在GuestOS中安裝相應的IO驅動實現IO的半虛擬化的方式來提高效率。
在PV on HVM的技術下,能夠運行在DomU上的OS包括:
只要OS能驅動PV接口類型的IO設備,即可.
1.2 Xen對VM的稱呼:
Xen對VM統稱為Domain.
第一台特權VM,在Xen中通常稱為: Domain0,簡稱為Dom0, 別名: Privileged Domain.
其它后續用戶級VM,在Xen中稱為: Domain1,Domain2,...., 它們有一個統稱為DomU,別名:Unprivileged Domain.
1.3 Xen對CPU和內存的虛擬化過程:
Xen在給VM提供CPU的虛擬化時,它采用的也是在Xen hypervisor層啟動一個線程,並將這些線程映射到某個物理核心上,當然通過DomU的配置文件中的cpus可以指定將這些模擬CPU的線程綁定到某幾個物理核心上;而內存的虛擬化則是內存頁的映射,將物理內存上多個連續或不連續的內存頁映射給VM,讓VM看來這就是一個完整的連續的內存空間.
1.4 Xen對IO設備的虛擬化過程:
當啟動一個用戶VM(DomU)時, 該VM所需的CPU和內存都有Xen Hypervisor提供,而它若需要使用IO設備時,則向特權VM發起請求,特權VM(Dom0)會為該用戶VM創建一個模擬的硬件設備線程,並運行於特權VM的用戶空間,當用戶VM向該IO硬件發起調用時,特權VM上相應的模擬設備接收請求並將其轉化為特權VM對IO硬件的操作,交給特權VM的內核來代為完成其操作。這里需注意這些虛擬IO硬件需要由Qemu來模擬,Xen本身並沒有提供相應的模擬功能。(注:特權VM的CPU和內存也是有Xen Hypervisor提供.)
Qemu模擬IO設備(完全虛擬化方式): 假如用戶VM向特權VM請求磁盤,特權VM可以將一個分區、文件等,通過Qemu將其模擬成一個磁盤設備,就拿文件來說,特權VM先創建一個映像文件,再通過Qemu為該文件模擬一個磁盤控制器芯片,然后,將其映射到用戶VM上,當然模擬的這個磁盤控制器芯片一定是一個最常見的,用戶VM的Kernel一定支持的,但需注意: 模擬的磁盤可能會與實際的物理磁盤不同,因為要盡可能兼容。這樣一來用戶VM假如要寫數據到磁盤的過程如下:
用戶VM-APP--->用戶VM-Kernel調用虛擬磁盤的驅動進行寫數據前的准備(如:數據寫入到磁盤中的扇區位置/數據編碼等)--->
用戶VM-Kernel將編碼后的信息發給特權VM的模擬磁盤進程--->
特權VM的模擬磁盤進程再將編號信息還原后發給特權VM-kernel--->
特權VM-kernel調用真實物理磁盤的驅動對數據進行寫前准備--->最后磁盤驅動調度磁盤完成寫入.
摘錄補充:(http://my.oschina.net/davehe/blog/94039?fromerr=mOuCyx6W)
Xen向Domain提供了一個抽象層,其中包含了管理和虛擬硬件的API。Domain 0內部包含了真實的設備驅動(原生設備驅動),可直接訪問物理硬件,Xen 提供的管理 API 可與其交互,並通過用戶模式下的管理工具(如:xm/xend、xl等)來管理 Xen 的虛擬機環境。
半虛擬化的IO設備:它與模擬最大不同是DomU知道自己是運行在虛擬化環境中的,並且知道這個磁盤不是真正的磁盤它只是Xen模擬的一個磁盤前端驅動(Disk Frontend),它要寫數據時,直接將數據交給Disk Frontend,而不再去調用磁盤驅動進行數據編碼,當特權VM端的Disk backend收到來自DomU的數據時,也是直接轉給特權VM-Kernel,由其直接調用物理磁盤驅動來對這些原始數據進行處理並寫入磁盤。
摘錄補充:
Xen2.0之后,引入了分離設備驅動模式。該模式在每個用戶域中建立前端(front end)設備,在特權域(Dom0)中建立后端(back end)設備。所有的用戶域操作系統像使用普通設備一樣向前端設備發送請求,而前端設備通過IO請求描述符(IO descripror ring)和設備通道(device channel)將這些請求以及用戶域的身份信息發送到處於特權域中的后端設備。這種體系將控制信息傳遞和數據傳遞分開處理。
半虛擬化客戶機(Domain U PV)的PV Block Driver接收到要向本地磁盤寫入數據的請求,然后通過Xen Hypervisor將自己與Domain 0共享的本地內存中的數據寫入到本地磁盤中。在Domain 0 和半虛擬化Domain U之間存在事件通道(我的理解:Device Channel包含Event Channel),這個通道允許它們之間通過存在於Xen Hypervisor內的異步中斷來進行通信。Domain 0將會接收到一個來自於Xen Hypervisor的系統中斷,並觸發Domain 0中的Block Backend驅動程序去訪問本地系統內容,並從自己與半虛擬化客戶機的共享內存中讀取適合的數據塊后,隨即被寫入到本地磁盤的指定位置中。
但無論采用模擬或半虛擬化最終都是對物理磁盤的操作,假如當前只有一個物理磁盤,眾多用戶VM都在進行大量的讀寫請求,此時,為了避免用戶VM無限制的向特權VM發起請求,特權VM中采用一個環狀緩存區,每到一個IO請求,就先將其塞入這個環狀緩沖區的槽位中,若緩沖區滿了,就會告訴用戶VM IO設備繁忙。當然其它各種IO設備大致都采用這種機制來控制。
1.5 Linux Kernel對Xen的支持:
》Linux2.6.37 : kernel開始對Xen進行支持,並加其加入到Kernel中。
》Linux3.0 :Kernel開始對Xen的關鍵部分進行優化.
RHEL對Xen的支持概況:
Redhat系列對Xen的支持情況:
RHEL5.7 ~ 及以前版本: 默認的企業虛擬化技術為Xen.
但Redhat提供了兩種內核:
kernel-... :這是僅允許RHEL系統的內核,不能運行在DomU中。
kernel-xen.. :這是需要部署XenServer時,使用的Kernel版本.
RHEL6 ~ 及以后版本: 默認支持KVM(收購自以色列的一款虛擬化工具),並且不在對Xen做任何支持,但允許自己運行在DomU中.
1.6 Xen版本發布簡史:
10年4月Xen4.0.0發布,改進后Xen的DomU最大可支持虛擬CPU 64顆,Xen主機可支持1TB內存和128顆物理CPU,磁盤可支持快照和克隆; HVM客戶機支持虛擬內存頁共享;
11年4月發布的Xen4.1版后,xm/xend開始被提示廢棄,xl這個更輕量級的Xen VM管理工具逐漸成為主流.
15年為止已經發布Xen4.5版本.目前yum源可用的最新版Xen是4.6.1版的(http://mirrors.skyshe.cn/centos/6.7/virt/x86_64/xen-46/).
1.7 Xen的工具棧:
xend : 這是Xen Hypervisor的Dom0上運行的服務,此服務用來監控xm命令發來的指令,並完成相應的動作。
xm : Xen Management,用來管理VM的創建、刪除、啟動、快照、刪除、停止等的管理工具。
xl : 這是一個基於libxenlight庫的一個輕量級VM管理工具,它從Xen4.1開始出現,從4.3以后,它被作為主要的VM管理工具,而xm這個重量級管理工具開始被提示廢棄.以下為xm、xl的對比圖:
xl 和 xm都需要調用libxenlight,但xl不需要運行任何服務,它可直接調用libxenlight完成相關操作。
xe/XAPI,是xend的一個API管理接口,通常用於Xen Cloud環境中:Xen Server, XCP
virsh/ libvirt : 這是Redhat發起開發的一套用於管理眾多不同類別的VM的管理工具。
virsh : 這是一個命令行工具
libvirt: 則是一個lib庫, libvirtd守護進程用於監聽virsh命令操作,並調用lbvirt完成相關操作.
1.8 XenStore:
為各Domain之間提供共享信息存儲的空間,同時它也是一個有着層級結構的名稱空間數據庫;它運行於Dom0上,由Dom0直接管理,它支持事務和原子操作。XenStore通常用來控制DomU中設備的機制,並通過多種方式對其進行訪問。
摘錄補充(http://blog.chinaunix.net/uid-26299858-id-3134495.html):
XenStore是Xen提供的一個域間共享的存儲系統,它以字符串形式存放了管理程序和前、后端驅動程序的配置信息。Dom0管理所有的數據,而DomU通過共享內存,向Dom0請求與自己相關的鍵值,以此實現域間通信。Xen提供了多種接口用來操作XenStore:命令行的xenstore-*命令、用戶空間的xs_系列函數、內核的XenBus接口,都可以用來方便地操作XenStore的數據。
1.9 虛擬化中的四種網絡模型
在虛擬化環境中虛擬網絡是十分重要但又比較難,需要特別注意;
在Linux中實現虛擬網絡的方法中比較常用的工具有兩個:bridge-utils 和 openvswitch,它們創建的虛擬網絡設備是不能相互使用的,比如:bridge-utils創建的橋設備,openvswitch是無法識別的。
用下圖來做簡單說明
1.10 Xen的安全問題導讀
補充見附件:
2. Xen的安裝及配置文件說明
2.1.1 在CentOS6.6上運行Xen的條件:
方式一:
(1) 編譯3.0以上版本的內核,啟動對Dom0的支持.
(2) 編譯xen程序
方式二:
使用相關Xen運行環境快速部署的項目:
(1) xen4contos : 這是Xen官方提供的開源項目。
xen環境部署的RPM包鏡像站: http://mirrors.aliyun.com/centos/6.7/xen4/x86_64/
(2) xen made easy
2.1.2 Xen的配置:
(1) 修改grub.conf
# Xen是直接運行於硬件層之上的,因此必須修改grub.conf,手動添加以下參數:
title Xen Server Linux 3.7.4
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_LUNKS LANG=en_US.UTF-8
rd_LVM_LV=vg0/swap rd_NO_MDSYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_DM
KEYBOARDTYPE=pc KEYTABLE=us rd_LVM_LV=vg0/root rhgb quiet
module /initramfs-3.7.4-1.el6xen.x86_64.img
注: kernel 必須指定xen*.gz為啟動的內核, dom0_mem:設定Dom0啟動后可以使用的內存大小,
cpufreq: 設定由Xen來管理CPU, dom0_max_vcpus: 設定Dom0可以使用多少顆CPU,
dom0_vcpus_pin: 將Dom0固定在系統啟動后,分配給它的CPU上,以避免它去搶占其它物理CPU核心,這樣其它物理核心就可以分配給DomU來使用了。
詳細參數查看:
http://xenbits.xen.org/docs/unstable/misc/xen-command-line.html
2.2.1 Xen 啟動DomU的配置文件說明
xl list : #首先需要了解的第一個命令.
xen VM的常見狀態:
r : running
b: block(阻塞)
p: pause(暫停): 類似與睡眠.
s: stop
c: crash(崩潰)
d: dying, 正在關閉的過程中.
2.2.1.1 如何創建一個Xen PV模式的VM:
1. Kernel 和 initrd或initramfs :這些LinuxKernel文件必須要有,但可以不在DomU上,它們可以在Dom0上.
2. DomU內核模塊(即:/lib/modules/`uname -r`): 這些就需要在DomU根文件系統中存儲了。
3. 根文件系統
4. swap設備: 若條件充足也可以提供.
以上四步的內容必須定義在DomU的配置文件中.
注: xl 和 xm啟動DomU的配置文件是存在一些不同的.
對於xl命令創建VM所需的配置文件說明可查看:
man xl.cfg
# 注: man xl.conf #這是對xl命令所使用的配置文件.
xl.cfg的配置文件參數說明:
name : 域的唯一名.
builder: 指明VM的類型,generic:創建PV類型的VM; HVM:創建HVM類型的VM
vcpus: 指定CPU個數.
maxvcpus:指定最大可使用CPU的個數,這些CPU可在需要是手動啟動。
cpus: 指定VM的vcpu線程可以運行在哪些物理核心列表上.
#如:cpus="0-3,5,^1" 這表示:VCPU可運行在0,2,3,5上,但不能運行在1上.
#建議將vCPU綁定到固定的物理核心上,這樣可減少vCPU線程在多個物理核心上切換.
memory: 指定DomU啟動時預分配的內存大小[單位:M]
maxmem: 指定最大給DomU分配的內存大小. [單位:M]
on_poweroff: 指定DomU關機時,實際采用的動作.
destroy: 直接將DomU斷電關機.
restart: 重啟
rename-restart: 改名后重啟
preserve: 將這個DomU保存,以便下次再啟動。
coredump-destroy: 將DomU的運行中的內核數據備份出來后,再關機。
coredump-restart: 先備份內核數據,再重啟.
on_reboot: 重啟DomU時實際采用的動作。
on_crash: 當DomU崩潰后,實際采用的動作。
uuid: DomU的UUID,非必須.
disk:指定DomU的磁盤列表
如: disk=[ "/img/disk/DomU1.img" , "/dev/sda3" , ...]
vif : 指定DomU的網卡列表
如: vif=[ "NET_SPEC_STRING" , "NET_SPEC_STRING" , ...]
vfb: 指定DomU的顯示器, vfb:virtual frame buffer(虛擬幀緩沖)
如: vfb=[ "VFB_SPEC_STRING" , "VFB_SPEC_STRING" ,...]
pci :指定DomU的PCI設備列表.
如:pci=[ "PCI_SPEC_STRING" , "PCI_SPEC_STRING" ,...]
PV模型的專用指令:
kernel : 指定內核文件路徑,此路徑為Dom0的路徑.
ramdisk: 指定initrd或initramfs文件的路徑.
root: 指定根文件系統. 此參數僅與kernel和ramdisk一起使用,因為,kernel和ramdisk都是在
Dom0上的,並沒有grub.conf來告訴kernel根文件系統在哪里,因此這里需要指定。
extra: 與root參數類似,它是指定kernel啟動時的其它參數的.
# 以上4個參數用於kernel文件在Dom0上, 下面固定格式用於DomU有自身的Kernel文件.
bootloader="pygrub": 若DomU使用自己的kernel和ramdisk,則此時需要一個Dom0中的
應用程序來實現其bootloader功能。這個不用指定root,因為,DomU的啟動所需的
所有文件都在自己的鏡像文件中,它可以從grub.conf中指定根文件系統的位置.
注:
# 讓DomU通過網絡之間安裝操作系統,需要注意:
# kernel 和 ramdisk所需要的文件必須是:安裝光盤目錄下/isolinux/{vmlinuz,initrd.img}
kernel="/images/kernel/vmlinuz"
ramdisk="/images/kernel/initrd.img"
extra="ks=http://1.1.1.1/centos6.6_x86_64.ks" #注:給內核傳遞的ks文件。
另注:
cloud-init*.rpm工具包可以將安裝的OS中的特有信息(如:MAC, 磁盤信息等)刪除,並且可以在下次啟動時,
自動生成這些信息.是制作雲模板OS鏡像的工具。
磁盤參數的指定方式:
xl方式創建VM時,磁盤指定格式: http://xenbits.xen.org/docs/unstable/misc/xl-disk-configuration.txt
[<target>, [<format>,[<vdev>,[<access>]]]]
target: 表示磁盤映像文件或設備文件路徑:
如: /images/xen/linux.img
/dev/vg-xen/lv-linux
format: 表示磁盤的格式:
如: raw、qcow2..等,具體格式可查看: qemu-img --help |grep 'Supported formats'
vdev: 指定添加的虛擬磁盤被DomU識別為何種類型的磁盤; 支持:hd, sd, xvd(xen-vritual-disk)
注: 指定是需要寫成: sda 或 sdb等,即要指定這是第幾塊磁盤.
access: 訪問權限,除CDROM為'r'只讀外,其它都為'rw'
示例:
disk=["/images/xen/linux.img,qcow2,xvda,rw", "/iso/CentOS6.7.iso,,hdc,devtype=cdrom"]
# 使用Dom0中物理磁盤分區做為DomU的存儲空間
disk=['/dev/vg-data/lv-bbox,raw,xvda,rw']
創建虛擬磁盤文件:
#注qemu-img創建的磁盤映像文件是采用稀疏磁盤格式創建的.因此用:du -sh linux.img 可看到其大小為0.
qemu-img create -f raw -o size=2G /images/xen/linux.img
創建虛擬網絡接口:
#虛擬網卡的創建直接在配置文件中使用vif指定即可。
#格式: vif=[ "NET_SPEC_STRING" , "NET_SPEC_STRING" , ...]
NET_SPEC_STRING:的格式如下:
key=value
#key包含以下幾個:
》mac :指定網卡的MAC地址,注:MAC地址必須以:00:16:3e 開頭,這是IANA分配給Xen的MAC廠商前綴.
》bridge: 指定此網卡要橋接到Dom0上的那個橋設備上.
》model: 指定模擬網卡的芯片類型:[rtl8139 |e1000]
》vifname:指定在Dom0中顯示的接口名, 注: 在DomU中顯示還是eth0...
》script: DomU在創建網絡接口時,預先執行的腳本.注: 此腳本的路徑也是Dom0上的路徑.
》ip:指定要注入DomU中的IP地址。
》rate: 指定網卡的設備速率.
如: rate=10Mb/s
rate=1MB/s@20ms #20毫秒內只能傳輸1M/0.02s=20000字節/20ms
圖形窗口的啟用:
可直接修改DomU的啟動配置文件,並在其中添加:
(1) vfb=['sdl=1'] #這是直接在本地啟動一個VNC窗口來輸出DomU的圖形桌面,且只能本地連接.
(2)Dom0上啟動一個VNC進程,並監聽在5900端口上,可通過密碼連接.
vfb=['vnc=1,vnclisten=0.0.0.0,vncpasswd=123456,vncunused=1,vncdisplay=:1']
#注: vncunused: 為非0值,則表示vncserver監聽在大於5900的第一個沒被占用的端口上.
# vncdisplay: VNC顯示號,默認為當前域的ID,當前域的VNC服務器將監聽在5900+此顯示號的端口上.
vfb=[ 'sdl=1,xauthority=/home/bozo/.Xauthority,display=:1' ]
#注:xauthority:表示認證密碼文件。
# display:
3. 使用libvirt實現Xen虛擬機的圖形管理
#需要安裝的包
yum install libvirt libvirt-deamon-xen virt-manager python-virtinst libvirt-client
注: virt-manager: 是圖形管理VM的接口界面,類似與VMware,可創建、啟動、停止等
python-virtinst: 此工具提供了virt-install命令行管理VM的接口.
libvirt-client: 提供了一個virsh命令來管理VM。
service libvirtd start #要使用libvirt工具集,此服務必須首先啟動.
virsh dumpxml busybox #將busybox的信息輸出為virsh的可用的xml配置文件,可修改此文件做模板來創建新VM實例.
4. PV DomU的根文件系統可以以多種不同的方式安置:
(1) 虛擬磁盤映像文件
(a)方便制作成通用模板
當用qemu-img創建好一個虛擬磁盤映像文件,並向其中安裝好OS后,可以使用cloud-init這種工具對其進行修改,去除其中OS的唯一性的數據信息(如:MAC地址等),需要注意的是,磁盤映像文件實際上是由標准格式的並且在其上創建完文件系統后,就可以通過FS的API接口在不掛載的情況下對其中的文件進行修改.
(b)方便實現實時遷移
1. 將模板映像文件放置於FTP/NFS/Samba等共享存儲上,且有多台Xen Hypervisor:
場景一: 需要快速創建一台VM.
假如當前業務中MySQL的從庫讀壓力過大,需要擴容,此時就可以直接通過自行開發的腳本工具來判斷
當前那個Xen Hypervisor更空閑,然后,直接下載從共享存儲上下載一個模板磁盤映像,直接就可以啟動起來.
並且這是配置好的從庫模板,啟動后它可以直接連接到主庫等等.
場景二: 快速遷移
假如當前某台Xen Hypervisor的CPU、Memory或其他資源突然升高,此時,可直接將該Xen Hypervisor上
某些VM的內存數據導出到共享存儲上,然后直接在另一台比較寬裕的Xen Hypervisor上,下載模板映像文
件並直接將該共享存儲上導出的內存數據與模板映像文件關聯,就可恢復到此Xen Hypervisor上實現快速遷移。
2.分布式文件系統上存儲磁盤映像文件,且有多台Xen Hypervisor:
場景一: 故障快速恢復
假如當前Xen Hypervisor上運行了多台VM,但Xen Hypervisor所在物理機突然故障,這時,我們完全可以直接
將分布式存儲系統上的磁盤映像文件直接讓正常的Xen Hypervisor接管,已實現快速遷移.
場景二:快速遷移
如上面場景二類似,但此處我們無需在下模板磁盤映像文件,直接dump出運行中VM的內存數據到共享存儲上
就可以直接在另一台Xen Hypervisor上啟動起來。
(2) 使用Dom0上空閑的物理磁盤分區
(3) 使用Dom0上空閑的邏輯卷
(4) 使用iSCSI設備提供的塊級別網絡文件系統 或 分布式文件系統。
(5) 網絡文件系統,如: NFS, Samba