[[PageOutline]] {{{ #!html

實作一: Xen 單機安裝與基本操作

}}} = 【前言】 = * '''__操作說明:__''' * 桌面的 '''Web Broswer''' 為瀏覽器,'''終端機''' 用來輸入課程中的指令 * 黑底白字部份為'''指令''' ($ 為命令提示字元, $ 之後才是指令) (# 為root 的命令提示字元) {{{ $ gedit /etc/hosts $ sudo gedit /etc/hosts $ su root # aptitude update }}} * 第1個指令為 使用 '''gedit''' 指令來編輯 hosts 這個文件 (也可以使用 vim 來編輯) * 第2個指令的 '''sudo''' 為轉換成 root 管理者身份來編輯此文件 (因 hosts 文件的權限只有 root 能修改) * 第3個指令的 '''su root''' 切換 root 身份 * 第4個指令的 為在 root 身份下執行 aptitude update (# 為 root 的提示字元) * 白底黑字為'''文件內容''',文件內容前面有數字則為'''行數''' (下面為 /etc/hosts 文件的第1行) {{{ #!sh 1 127.0.0.1 localhost }}} * 文中的 '''X''' 和 '''Y''' 請自行更換成合適的值 * IP: 192.168.100.'''X''' -> 192.168.100.'''200''' * MAC: 00:16:XX:XX:XX:XX -> 00:16:03:AB:BA:01 * '''__軟體說明:__''' || OS || Debian 503 (AMD64) || || Kernel (support Xen) || 2.6.26 || || Xen || 3.3 || * '''__指令說明:__''' || '''xm''' || Xen Manager (透過 xm 來管理 xend) || || '''xm list''' || 察看目前有幾台 VM || || '''xm create''' {VM.conf} || 開啟 VM (後面須接 VM 的設定檔) || || '''xm destroy''' {VM_ID}/{VM_name} || 關閉 VM (後面須接 VM 的 id 或 名稱) || || '''xen-create-image''' || 產生 Guest/VM Image 的工具 || ---- = 【Step 0: 流程】 = * 本教學方便學員,儘量使用官方提供的 Xen 相關套件來安裝 (Debian 目前維護的 Xen 版本為 3.2),若是想用最新版的 Xen-3.4.1 可以參考[http://trac.nchc.org.tw/grid/wiki/Reading/XenP/single 此篇]改用 source 檔安裝 * 用'''套件'''安裝的__優點:__ 1.方便快速 2.不需考慮軟體相依性,系統會自動幫你安裝相依的套件。__缺點:__可能不是最新的軟體版本 * 從'''source'''安裝的__優點:__ 1.了解軟體的安裝邏輯 2.可以安裝最新的版本。__缺點:__得自行解決軟體的相依性問題 {{{ #!graphviz digraph finite_state_machine { rankdir=LR; ranksep=0.3; size="11,8"; node[shape=box,width=3.0]; "4.安裝 xen image 製作工具" -> "5.產生 VM 的 Image" -> "6.開啟 VM" -> "7.使用 VM 圖形管理介面"; "1.安裝 Xen 和 Xen-patched Kernel" -> "2.編輯 Xend 設定檔和開機選單" -> "3.檢查 Xen 是否正常運作"; } }}} ---- = 【Step 1: 安裝 Xen 和 Xen-patched Kernel】 = * Ubuntu 提供一個簡單的整合套件,只需用 '''aptitude install''' 指令安裝 __xen-linux-system-2.6.26-2-xen-amd64套件 __,即可自動安裝好 Xen-3.2 Hypervisior {{{ $ sudo aptitude update $ sudo aptitude -y install ubuntu-xen-desktop python-xml }}} * 安裝 Xen-patched Kernel,再這邊我們使用 Debian 已打包好的 Kernel 2.6.26-xen-amd64 {{{ $ cd $ mkdir Xen_Kernel && cd Xen_Kernel $ wget http://trac.nchc.org.tw/grid/export/110/Xen/dom0_Kernel/linux-2.6.26-xen-amd64.tar.bz2 $ tar jxvf linux-2.6.26-xen-amd64.tar.bz2 $ sudo dpkg -i ./*.deb }}} ---- = 【Step 2: 編輯Xend 設定檔 & 開機選單】 = * 上個步驟已安裝好Xen和Kernel,此步驟使用 '''vim''' 或 '''gedit''' 指令來編輯 xend 的設定檔 /etc/xen/xend-config.sxp (Xen 的設定檔都再 /etc/xen 路徑下) {{{ $ sudo gedit /etc/xen/xend-config.sxp ( 也可使用vim,如 $ sudo vim /etc/xen/xend-config.sxp ) }}} {{{ #!sh 58 (xend-http-server yes) 60 (xend-tcp-xmlrpc-server yes) 62 (xend-relocation-server yes) 70 (xen-tcp-xmlrpc-server-port 8006) 80 (xend-port 8000) 84 (xend-relocation-port 8002) 109 (xend-relocation-hosts-allow '') sudo aptitude install xen-tools 128 (network-script 'network-bridge netdev=eth1') 139 #(network-script network-dummy) }}} * 編輯 Grub 開機選單 {{{sudo aptitude install xen-tools $ gedit /boot/grub/menu.lst }}} {{{ #!sh 125 module /boot/vmlinuz-2.6.26-2-xen-amd64 root=/dev/sda1 ro console=tty0 mem=920M }}} * 編輯完 xend & 開機選單後,現在重新開機,選擇剛開安裝的 Xen & Kernel 開機 {{{ $ sync ; sudo reboot }}} ---- = 【Step 3: 檢查 Xen 是否正常運作】 = * Ubuntu 預設開機變會自動啟動 xend,我們使用 '''ps -aux | grep xend''' 來檢查 xend 是否正常運作 {{{ $ ps -aux | grep xend }}} * 再使用 '''xm list''',檢查是否有 domain 0 (xm 是 Xen manager 的解稱,我們使用 xm 來控制 xend,xm 指令的用法可以參考 '''xm help''') {{{ $ sudo xm list }}} * 檢查網路設備是否存在 (於此案例我們使用 bridge 方式,可以檢查 eth1 和 peth1 是否存在) {{{ $ sudo ifconfig eth1 Link encap:Ethernet HWaddr 00:1a:4d:9f:ea:f8 inet addr:X.X.X.X Bcast:140.110.138.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:821 errors:0 dropped:0 overruns:0 frame:0 TX packets:106 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:64586 (63.0 KiB) TX bytes:11348 (11.0 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:560 (560.0 B) TX bytes:560 (560.0 B) peth1 Link encap:Ethernet HWaddr 00:1a:4d:9f:ea:f8 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3694 errors:0 dropped:0 overruns:0 frame:0 TX packets:2142 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:311184 (303.8 KiB) TX bytes:759489 (741.6 KiB) Interrupt:21 Base address:0xe000 }}} * Xen 提供三種網路連接方式: 1. Bridge Networking (於此案例,我們使用 Bridge,簡單來說就是讓 VM 和 Host 都再同一個網域,讓 VM 可接收 dhcp server 發的 IP) {{{ #!sh (network-script network-bridge) (vif-script vif-bridge) }}} 2. Two-way Routed Network {{{ #!sh (network-script network-route) (vif-script vif-route) }}} 3. Routed Networking with NAT {{{ #!sh (network-script network-nat) (vif-script vif-nat) }}} ---- = 【Step 4: 安裝 xen image 製作工具】 = * 使用 '''aptitude install''' 安裝 xen-tools (xen-tools 可以協助我們產生VM的印象檔) {{{ $ sudo aptitude -y install xen-tools }}} * 修改 xen-tools 的設定檔 (設定檔位置 /etc/xen-tools) {{{ $ cd /etc/xen-tools $ sudo gedit /etc/xen-tools/xen-tools.conf }}} {{{ #!sh 45 dir = /home 128 size = 1Gb 133 dist = lenny 163 gateway = 192.168.100.254 164 netmask = 255.255.255.0 165 broadcast = 192.168.100.255 193 accounts = 1 214 mirror = http://free.nchc.org.tw/debian 257 serial_device = hvc0 }}} ---- = 【Step 5: 產生 VM 的 Image】 = * 使用 xen-tools 提供的指令 '''xen-create-image''' 產生一個名為 vm01 虛擬機器的印象檔 (若沒指定 dist ,預設則為 debian etch) {{{ $ sudo xen-create-image --hostname=vm01 --ip=192.168.100.X --mac=00:16:XX:XX:XX:XX --force }}} * 產生完的印象檔會放在 '''/home/domains''' 內,而設定檔則會放在 '''/etc/xen/''' {{{ $ ls /home/domains $ ls /etc/xen/ }}} * 查看 vm01 的設定檔 {{{ $ sudo gedit /etc/xen/vm01.cfg }}} ---- = 【Step 6: 開啟 VM】 = * 接下來我們使用此 vm01 的設定檔來開啟一個虛擬機器 (使用 '''xm create''' 指令根據設定檔來開啟虛擬機器) {{{ $ sudo xm create /etc/xen/vm01.cfg ($ sudo xm create /etc/xen/vm01.cfg -C ) }}} * 檢查此 vm01 是否正常開啟sudo aptitude install xen-tools {{{ $ sudo xm list }}} * 如何登入此虛擬機器呢 (使用 '''xm console''') {{{ $ sudo xm console vm01 $ sudo ping ptt.cc $ sudo aptitude install udev }}} * 如何登出呢 (跳出鍵 '''CTRL+]''') * 關閉虛擬機器 (使用 '''xm console''') {{{ $ sudo xm destroy vm01 $ sudo xm list }}} ---- = 【Step 7: 使用 VM 圖形管理介面】 = * 若是不習慣用指令,可使用圖形管理介面來控制虛擬機器 (有兩套可以使用 virt-manager 和 convirt) * virt-manager {{{ $ sudo aptitude install virt-manager $ sudo virt-manager }}} ---- = 【時間 & 討論休息】 =