PV(Paravirtualized) 和 FV(Fully Virtualized) 設定檔有些許的不同接下來做說明.
PV(Paravirtualized) 設定檔
不管我們是用 virt-manager / virt-install 都會在 /etc/xen 產生相對應的 Virtual Macine 設定檔.而設定檔的名稱會依據你的 virtual Machine 所命名來為這設定檔來命名.假如當初我們在建立一個 virtual Machine 時命名為 RHEL4,此時在 /etc/xen 會有一個檔案命名為 rhel4.通常在安裝完成之後我們還是可以透過 virt-manager 來修改設定檔.我們其實可以透過修改檔來達到相同的目的.我們先來看看標準的設定檔內容包含了哪些內容.目前我系統上面有一個 Virtual Machine : RHEL4 ,設定檔名稱也為 /etc/xen/RHEL4
[root@benjr ~]# vi /etc/xen/rhel4 name = "rhel4" uuid = "cf67710d-b756-086b-8cde-be61d2faca1b" maxmem = 512 memory = 512 vcpus = 1 bootloader = "/usr/bin/pygrub" on_poweroff = "destroy" on_reboot = "restart" on_crash = "restart" vfb = [ "type=vnc,vncunused=1,keymap=en-us" ] disk = [ "phy:/dev/sda5,xvda,w", "phy:/dev/sda6,xvdb,w" ] vif = [ "mac=00:16:3e:27:95:c0,bridge=xenbr0" ]
- name
這就是 virtual Machine 的名稱,虛擬化的環境下其 virtual Machine 名稱必須為唯一的.與設定檔相同的名稱. - uuid
通用唯一識別碼(Universally Unique Identifier,UUID),系統會指定一個唯一的 uuid 來給每一台 virtual Machine. - maxmem
通常我們在指定記憶體大小給 virtual Machine 時可以先指定多一點,但是多指定的時候並不會真的使用到這麼多,先指定的優點是系統可以線上直接增加 virtual Machine 記憶體大小. - memory
目前 virtual Machine 所真正使用的記體的多寡. - vcpus
在 virtual Machine 所使用的邏輯 CPU 數目. - bootloader
不同於 VMware 的全虛擬方式,或是 Xen 的全虛擬 virtual machine ,VMware 可以透過他虛擬的 BIOS 載入一般的 bootloader , Xen 主要使用了 Paravirtualized 的技術, 所以 virtual Machine 無法直接使用 GRUB 當作 Bootloader , 因此 Xen – Paravirtualized 採用了 PyGrub 當作我們 Virtual Machine 的 Boot loader(類似於 GRUB),PyGrub 可以直接載入 DomU 檔案 bootloader 所指定的開機系統的 kernel 取代了原先必須先將 kernel 的名稱寫在檔案的方式. 提供了我們能更方便直接在 PyGrub(Bootloader) 直接加入 Kernel 核心的參數.
在使用 PyGrub 時需注意硬碟指定的順序. disk = [ "phy:/dev/sda5,xvda,w", "phy:/dev/sda6,xvdb,w" ] 包含 /boot 的 partition 必須指定為第一顆.不然系統會無法載入 bootloader 並且回報出下面的錯誤訊息.
Error: Boot loader didn't return any data
pygrub 還包含了一項 PXEBoot 的功能.
- on_poweroff/reboot/crash
當系統在 poweroff/reboot/crash VM 所對應的動作為何,系統在 poweroff 是做 destory 其實也就是 poweroff 主要是將 VM 的記憶體肆放並將硬碟資料確切寫回,而 reboot/crash 則是將 VM 重新開機. - vfb
Xen 底下的 virtual Machine 都是透過 VNC 來傳送畫面,所以這裡的 vfb(virtual framebuffer device) 就是設定系統畫面與輸入裝置 Keyboard/Mouse. - disk
虛擬的 virtual Machine 所使用的硬碟或是光碟裝置可以為,硬碟可為實體 partition 也可以為 image 的方式.光碟裝置可為實體裝置或是 image .
指定硬碟的方式:
"phy:/dev/sda5,xvda,w"phy:/dev/sda5 – Dom0 實體裝置所在位置,也可以為 image 的方式.
xvda – DomU 下將會看到的裝置名稱,如果是 cdrom 時要特別指定(hda:cdrom ).
w – writable(用於可讀寫裝置如硬碟)光碟機 (CD / DVD) 也是在這邊做設定:
"phy:/dev/hda,hda:cdrom,r".r – readable(用於CDROM/DVD 裝置)
- vif
virtual Machine 網路裝置的設定.vif = [ "mac=00:16:3e:27:95:c0 ,bridge=xenbr0" ] 其中的虛擬與實體傳輸方式會依據不同模式而有所改變.在 RHEL5 Xen 的環境預設會建立兩個 bridge,一個則是由 QEMU 所提供出來的 virbr0,另外一個是由 Xen 所提供叫做 xenbr0,在安裝 Virtual machine 時網路卡的選擇也就是這兩種.- Virtual network – virbr0
vif =[ bridge=virbr0 ] 或是 - Shared physical device – xenbr0
vif =[ bridge=xenbr0 ]
- Virtual network – virbr0
FV(Fully Virtualized) 設定檔
FV(Fully Virtualized) 是全虛擬化的 virtual machine 所以設定參數會比 PV(Paravirtualized) 多,下面只針對不同之處做說明.
[root@benjr ~]# vi /etc/xen/FV_RHEL4 name = "FV_RHEL4" uuid = "55fb6839-faad-3578-cc2d-93f753fe8a97" maxmem = 512 memory = 512 vcpus = 1 builder = "hvm" kernel = "/usr/lib/xen/boot/hvmloader" boot = "c" pae = 1 acpi = 1 apic = 1 localtime = 0 on_poweroff = "destroy" on_reboot = "restart" on_crash = "restart" device_model = "/usr/lib64/xen/bin/qemu-dm" sdl = 0 vnc = 1 vncunused = 1 keymap = "en-us" disk = [ "phy:/dev/sda3,hda,w", ",hdc:cdrom,r" ] vif = [ "mac=00:16:3e:6e:61:7f,bridge=xenbr0" ] serial = "pty"
- builder
這個 virtual machine 是使用何種技術所產生的.如果是 HVM (hardware virtual machine) 就代表是由 XEN full virtualization(Hardware-assisted virtualization) 這個技術所支援的,需要有 CPU 的支援在 Intel 叫做 VT(Virtualization Technology) 或者 AMD 的 V Pacifica. - kernel
所以使用 XEN full virtualization(Hardware-assisted virtualization) 這個技術都會採用 hvmloader(/usr/lib/xen/boot/hvmloader) 當 virtual machine 的前導. - boot
預設的開機裝置,裝置名稱方式類似於 windows ,virtual machine 為 Linux 時也適用 (Default='c';Value='a|b|c|d') - pae
Physical Address Extension (PAE) 讓 32bit 的 virtual machine 支援大於 4GB 以上的記憶體 (default=1; Value='PAE') - acpi
Advanced Configuration and Power Interface (ACPI) 進階的電源管理系統 (default=1; Value='ACPI') - apic
Advanced Programmable Interrupt Controller (APIC) 進階的 IRQ 管理器 (default=1; Value='APIC') - localtime
是否將 RTC(real-time clock) 設成當地時間??? (Default=0; Value='no|yes') - device_model
全虛擬化採用 QEMU 的模擬方式,QEMU 主要是模擬整個電腦的系統包括 CPU 及其他週邊裝置. /usr/lib64/xen/bin/qemu-dm 為其主程式 - sdl
Simple DirectMedia Layer(SDL) 主要提供了圖形顯示的函數庫,可跨平台使用,常應用在 遊戲 , 模擬器 , 媒體播放器等. (Default=None) - vnc
Virtual Network Computing(vnc) 是可以遠端遙控桌面的服務 (Default=None) 系統預設使用 127.0.0.1 port N+5900 其中的 N 會依據 virtual machine 的 domain id 來決定. - vncunused
如果採用了 vnc 的遠端桌面服務而且 vncunused=1 時,系統會隨意的找一個大於 5900 沒有在使用的 port 來做 VNC 連線. (Default=1) - keymap
選擇我們用的鍵盤是哪種格式,通常我們使用的是 US keymap. - serial
序列終端裝置 serial console 的選擇有兩種 pty(Pseduo Tty) 或是 vc(Virtual console)
關於其他參數可以參考 Xen 的官方網站. http://www.xen.org/files/Support/XenConfigurationDetails.pdf
自動啟動(Auto booting) Virtual Machine
基本上在 RHEL5 啟動 Dom0 系統時,virtual machine 並不會同時啟動,所以你要在開機時一併將這些 virtual machine 一併啟動需將 virtual machine 的設定檔連結到 /etc/xen/auto 目錄下面.方法如下:
目前我所有的 Guest OS 是 rhel4 / rhel5
下次系統重新開機包括 rhel4 / rhel5 都會一起啟動.
[root@benjr ~]# cd /etc/xen [root@benjr ~]# chkconfig xend on [root@benjr xen]# ln rhel4 auto/ [root@benjr xen]# ln rhel5 auto/
- virtual machine image files (當 Selinux 開啟時,檔案存取會受到嚴格的管控,所以連 virtual machine images 所放置的位置都並需存放在固定目錄下)
/var/lib/xen/images - Log file( RHEL5 所採用的虛擬化最大的兩部份是 Xen + Qemu 其 log 記錄檔如下)
/var/log/xen/xend.log
/var/log/xen/qemu-dm.log - proc 系統資訊的資源
/proc/xen/capabilities
/proc/xen/balloon 關於記憶體
/proc/xen/xenbus/
同事遇到在 RHEL 5.9 Xen 虛擬化下,安裝 RHEL 6 卻無圖形介面,後來才發現
RHEL6 x86_64 對於記憶體的要求是 1G 以上
Red Hat Enterprise Linux 6 technology capabilities and limits