安裝及運用一台全虛擬化的 Xen 客端系統

引言

除了安裝半虛擬化的客端系統外,Xen 亦可以在擁有合適硬件的機器上寄存全虛擬化的客端系統。這代表你可以執行未經修改的操作系統如 CentOS 3 或微軟 Windows。

這份教學文件描述你可以如何安裝一台全虛擬化的客端系統,而不須使用 virt-manager,或它的文字版 virt-install。很多時候,用戶須要這些工具無法提供的自訂設定,因此用它們背後的工具多數會更好。這份教學文件利用來自 libvirt 套件的 virsh 工具,它是一件用來管理虛擬機器的萬用工具。

我們會看一個安裝 CentOS 3 的範例。之後我們會討論可在設定上作出的改動。

檢查你的硬件

要安裝一台全虛擬化的客端系統,你須要一個支援 VT-X(Intel)或 AMD-V(AMD)延伸的處理器。你可以簡易地檢查這個功能,就是透過檢視 /proc/cpuinfo 內的 flags 檔案內是否含有 vmxsvm 旗標。譬如:

$ egrep '^flags.*(vmx|svm)' /proc/cpuinfo
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 pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
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

某些系統預設並不啟用 VT-X 或 AMD-V 的支援,請檢查你的 BIOS 設定來確定你的 CPU 延伸已被啟用。來自 cpuinfo 的內容在這方面不能作準。就算 BIOS 內的虛擬化設定已被停用,vmx 這個旗標仍會被顯示。

建立一個映像

第一步是要建立存有 domU 虛擬硬盤的映像檔。由於它只需要是一個被零填滿的檔案,我們的好朋 dd 便大派用場。在這個教學文檔內,我們會將映像放在 /srv/xen 內,雖然官方普遍認可的位置似乎是 /var/lib/xen/images。假若你希望在檔案增長時才分配資料塊,你可以建立一個有洞的檔案。以下的指令會建立一個 4096MB 的 /srv/xen/centos3.img 檔案,雖然實際資料塊是以遲緩的方式來分配:

# dd if=/dev/zero of=/srv/xen/centos3.img oflag=direct bs=1M seek=4095 count=1

如果你想立即分配所有資料塊,你亦可以這樣做:

# dd if=/dev/zero of=/srv/xen/centos3.img oflag=direct bs=1M count=4096

這個方法可以避免日後存有映像檔的磁碟區滿載時,無法分配資料塊的問題。

假如你使用 SELinux,你一定要確保映像檔擁有正確的安全性脈絡(xen_image_t),否則 domU 系統存取虛擬硬盤時便會被拒絕。你可以用 ls 進行檢查:

# ls -Z /srv/xen/centos3.img 
-rw-r--r--  root root user_u:object_r:xen_image_t      /srv/xen/mailserver.img

假如你在設定檔案脈絡時遇到問題,請參閱 Xen 提示與技巧這一頁。無論如何,停用 SELinux,一如某些有關這方面的教學文檔所建議,是個很壞的權宜之計。反過來,透過閱讀兩篇手冊(semanage(8)restorecon(8))來換取多一層保障更為化算!

安裝客端系統

在安裝之前,我們須要一個設定檔來定義客端系統。你可以利用以下範例來安裝 CentOS 3:

<domain type='xen'>
  <name>CentOS3</name>
  <os>
    <type>hvm</type>
    <loader>/usr/lib/xen/boot/hvmloader</loader>
    <boot dev='cdrom'/>
  </os>
  <memory>262144</memory>
  <vcpu>1</vcpu>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>destroy</on_reboot>
  <on_crash>destroy</on_crash>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <devices>
    <emulator>/usr/lib/xen/bin/qemu-dm</emulator>
    <interface type='bridge'>
      <source bridge='xenbr0'/>
      <script path='vif-bridge'/>
    </interface>
    <disk type='file' device='disk'>
      <driver name='file'/>
      <source file='/srv/xen/centos3.img'/>
      <target dev='hda'/>
    </disk>
    <disk type='file' device='cdrom'>
      <source file='/srv/xen/boot-centos3.iso'/>
      <target dev='hdc'/>
      <readonly/>
    </disk>
    <graphics type='vnc' port='5900'/>
  </devices>
</domain>

此刻,設定檔內的下列方面是最要的:

你現在可以用 virsh 開啟這台虛擬系統。假設它的設定檔被儲存為 /srv/xen/centos3.xml,你可以用下面的指令來啟動這台虛擬系統:

virsh create /srv/xen/centos3.xml

當指令在沒有錯誤的情況下完成,這個客端系統便在運作中。你須要透過一個 VNC 檢視器才能檢視它的圖像主控台。要連接到這個區域,你首先需要它的區域編號。你可以利用 virsh list 這個指令來取得它:

$ virsh list
 Id Name                 State
----------------------------------
  0 Domain-0             running
 12 CentOS3              running

在這個例子中,客端系統是以 12 這個編號來運行。你現在可以用 vncviewer localhost:<編號> 來連線到這個系統。在這裡,要執行的指令便是 vncviewer localhost:12。運氣好的話,你應該會看見 ISOLinux 的提示字元,讓你可以按既往的方法來進行安裝 :^)。

安裝完成後,客端系統將會被關閉。

應用客端系統

針對日常運作,你需要對客端系統的設定作出調整。首先,你必須將開機裝置由 cdrom 改為 hd,好讓它能用硬盤的映像開機。此外,為了一致性,把 on_rebooton_crash 的選項改為 restart 亦是一個好主意。以下的設定檔已包含了這些改動,以及刪除了 cdrom 這個裝置:

<domain type='xen'>
  <name>CentOS3</name>
  <os>
    <type>hvm</type>
    <loader>/usr/lib/xen/boot/hvmloader</loader>
    <boot dev='hd'/>
  </os>
  <memory>262144</memory>
  <vcpu>1</vcpu>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <devices>
    <emulator>/usr/lib/xen/bin/qemu-dm</emulator>
    <interface type='bridge'>
      <source bridge='xenbr0'/>
      <script path='vif-bridge'/>
    </interface>
    <disk type='file' device='disk'>
      <driver name='file'/>
      <source file='/srv/xen/centos3.img'/>
      <target dev='hda'/>
    </disk>
    <graphics type='vnc' port='5900'/>
  </devices>
</domain>

現在你可以利用這個設定檔來啟動客端系統:

virsh create /srv/xen/centos3.xml

你可以利用上面描述的步驟來連線到圖像主控台。

應用一台實體的光碟機

你亦可以在虛擬客端系統內應用一台實體的光碟機。請採用以下的客端光碟機項目,並在 source 選項內列出被應用的光碟機的裝置名稱:

<disk type='block' device='cdrom'>
  <driver name='phy'/>
  <source dev='/dev/hdc'/>
  <target dev='hdc'/>
  <readonly/>
</disk>

安裝 Windows

如果 Windows 的安裝程式在啟動 Windows 內核時當機(xentop 這個指令多數會匯報客端的工作量是 100%),這個問題很大機會可以借著停用客端的 ACPI 及 APIC 而得以解決。你可以透過註釋掉以下選項來達至這個目的。請將

<acpi/>
<apic/>

改為

<!-- <acpi/> -->
<!-- <apic/> -->

然後重新啟動客端系統。

Translation of revision 11

zh-tw/HowTos/Xen/InstallingHVMDomU (last edited 2010-04-09 08:10:26 by TimothyLee)