2,381 瀏覽數

RHEL5 XEN – Virtual machine 設定檔

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 時網路卡的選擇也就是這兩種.

    1. Virtual network – virbr0
      vif =[ bridge=virbr0 ]
      或是
    2. Shared physical device – xenbr0
      vif =[ bridge=xenbr0 ]

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
xen_list
下次系統重新開機包括 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/

2 個網友的想法 “RHEL5 XEN – Virtual machine 設定檔

  1. 自動參照通知: XEN – RHEL5 | Benjr.tw

發表迴響