1.xm list
xm list 是看目前正在動作的 Guest.
[root@benjr ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 975 4 r----- 1153.6 rhel4.6 4 511 1 -b---- 15.0 rhel5 3 511 1 -b---- 510.6 |
其中要注意的是 STATES 一共有6種
r - running
目前有使用到 CPU 支援的 Guest
b - blocked
可能 Guest 在 sleep 狀態或是等待 I/O 裝置.
p - paused
我們可以使用 xm pause domainID 讓系統進入暫停模式.有點像是進入 S1 - "Sleep" 的狀態.
s - shutdown
Guest 正在 shutdown, rebooted 或是 suspended,當完全關閉時使用 xm list 是看不到的.
c - crashed
Guest 已經完全 crashed 了,通常在 crashed 系統會自動重開機,除非你將設定檔中的 on_crash = "restart" 的選項移除掉.
d - dying
Guest 正在死亡狀態通常是系統還沒完全關機或是 crashed.
如果 Guest 是在關閉的情況下是不會顯示出來的.可以使用 -l (--long) 模式來看!
[root@benjr ~]# xm list -l |
顯示的資訊相當多這裡就不多做說明,基本上包括 Guest 硬體資訊都會顯示出來.直接看.configuration files(設定檔 /etc/xen)會是一個比較直接的方式.
2.xen console domain
很奇怪的事,照著 RHEL 的官方文件說明去連接 Guest 的 console 但是系統像是死魚一樣,沒有反應!!檢查一下 Guest 的 /var/log/message 發現說沒有 console 這個東西.過了一個下午後想起來好像是 security 的權限不能讓 console 登入!!但是這應該是針對 root 不應該 Guest 的 console 沒反應.查了一下果然 Guest 還是需要設定不然光是 xm console 這個指令是不能登入的!!
1. 在 /boot/grub/grub.conf
指定 console 值 "console=tty0 console=xvc0"
[root@benjr ~]# vi /boot/grub/grub.conf title Red Hat Enterprise Linux ES (2.6.9-78.ELxenU) root (hd0,0) kernel /boot/vmlinuz-2.6.9-78.ELxenU ro root=LABEL=/ console=tty0 console=xvc0 initrd /boot/initrd-2.6.9-78.ELxenU.img |
2. /etc/inittab 系統預設不能使用 comport 來登入系統 ,所以要修改一下 /etc/inittab,
[root@benjr ~]# vi /etc/inittab co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav |
3. /etc/securetty 由於 PAM 的限制所以 root 無法使用 comport 登入系統 ,所以還是要修改一下 /etc/securetty:
[root@benjr ~]# vi /etc/securetty xvc0 [root@benjr ~]# xm list Domain-0 0 1231 4 r----- 150.1 rhel4.6 2 255 1 -b---- 0.1 rhel5 4 511 1 -b---- 2.2 |
你會看到的都是目前在 running 狀態的 Guest.
[root@benjr ~]# xm console rhel4.6 |
如果剛剛的設定正確就可以看到 console 的畫面了!!
3.xen create / shutdown domain
如果我們用的是 virt-manager 基本上 Guest Os 開機時幾乎沒有辦法看到 Bottloader(GRUB).不過還是有辦法透過 virtual console 的方式進入 GRUB 修改一些參數!
使用指令 #xm creat -c domainID
-c 的參數就是開機時會將 kernel 輸出導入到 virtual console.
[root@benjr ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 1231 4 r----- 150.1 rhel4.6 2 255 1 -b---- 0.1 rhel5 4 511 1 -b---- 2.2 |
目前正在運行的 Guest 有兩個 RHEL4.6 / RHEL5 我想用 RHEL4.6 ,所以先將 RHEL4.6 關機吧!!
[root@benjr ~]# xm shutdown rhel4.6 or #xm shutdown domain(domain ID) [root@benjr ~]# xm shutdown 2 |
這動作相當於按下 Guest OS 的 power button
[root@benjr ~]# xm create -c rhel4.6 |
出現這畫面按下任意鍵就可以在 GRUB 進行參數設定了.
Using config file "/etc/xen/rhel4.6".
Started domain rhel4.6
不過預設 RHEL 是沒有 console ,請參考 RHEL5 - xen console command - http://benjr.tw/?q=node/375
4.xm destroy command
在正常情況下我們都會使用 xm shutdown domain(Domain ID),但是如果 Guest 的系統是在死當的情況下那光是使用 xm shutdown domain(Domain ID)是沒有效果的.這時候可以用 xm destroy domain(Domain ID) 強制 Guest OS 關機.
[root@benjr ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 1231 4 r----- 150.1 rhel4.6 2 255 1 -b---- 0.1 rhel5 4 511 1 -b---- 2.2 |
目前正在運行的 Guest 有兩個 RHEL4.6 / RHEL5 我想用 RHEL4.6 做示範,所以先將 RHEL4.6 強制關機吧!!
[root@benjr ~]# xm destroy rhel4.6 or #xm destroy domain(domain ID) [root@benjr ~]# xm destroy 2 |
這動作相當於按下 Guest OS 的 power button 4秒.直接將系統關閉.
[root@benjr ~]# xm create -c rhel4.6 |
你可以發現 Guest系統一定是立刻關閉了.
5.xm save / restore command
老實說 save/restore command 很像是 hibernate(S4) - "Suspend to Disk" 的動作.可以將目前系統狀態保留下來並關機.下次開機時就可以快速回覆到關機前的狀態.
[root@benjr ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 975 4 r----- 1153.6 rhel4.6 4 511 1 -b---- 15.0 rhel5 3 511 1 -b---- 510.6 |
目前正在運行的 Guest 有兩個 RHEL4.6 / RHEL5 我想用 RHEL4.6 ,所以先將 RHEL4.6 做 save 吧!!
[root@benjr ~]# xm save Error: 'xm save' requires 2 arguments. Usage: xm save <Domain> <CheckpointFile> Save a domain state to restore later. #xm save 主要需要兩個參數 <Domain> 可以是 ID 或是名稱皆可,<CheckpointFile> 將目前狀態存儲下來的檔案.檔案大小和 Guest OS 的記憶體需求一樣的空間. [root@benjr ~]# xm save rhel4.6 rhel4.6.save [root@benjr ~]# xm restore [root@benjr ~]# xm restore rhel4.6.save |
系統也如期的快速開啟並回到剛剛關機的狀態了!!
6.xm pause/unpause command
"pause" 在一般系統比較下像是 S1 - "Sleep" 的狀態,它系統的資源是不會像是 save 會真的將系統關機並將資源釋放出來.
[root@benjr ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 975 4 r----- 2167.6 rhel4.6 2 511 1 -b---- 385.0 rhel5 4 511 1 -b---- 20.0 |
目前正在運行的 Guest 有兩個 RHEL4.6 / RHEL5 我想用 RHEL4.6 做示範,所以先將 RHEL4.6 做 pause 吧!!
[root@benjr ~]# xm pause rhel4.6 [root@benjr ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 975 4 r----- 2170.6 rhel4.6 2 511 1 --p--- 385.0 rhel5 4 511 1 -b---- 20.0 |
可以看到 rhel4.6 進入了 P(Pause) 模式!
[root@benjr ~]# xm unpause rhel4.6 [root@benjr ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 975 4 r----- 2171.7 rhel4.6 2 511 1 -b---- 385.1 rhel5 4 511 1 -b---- 20.0 |
rhel4.6 暫停解除,恢復到了原來的狀態!
7.xm mem-set / mem-max command
Guest OS 可以透過 xm mem-set 來增加 Guest OS 系統的記憶體大小,這種技術叫做 balloon ,和 Vmware 是使用相同的方式.指令也相當簡單!!
#xm mem-set domain-id mem[count]
#mem[count] 大小單位為 MBytes
[root@benjr ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 975 4 r----- 178.2 rhel4.6 5 512 1 -b---- 11.5 [root@benjr ~]# xm mem-set 5 800 #大小單位為 MBytes [root@benjr ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 975 4 r----- 180.9 rhel4.6 5 799 1 -b---- 11.7 |
不過記憶體的變大縮小是有其限制的,還記得當初在新增 Guest OS 時,有個選項是 Memory / Maximum allocation,你不能超過當初設定最大的範圍.當然在設定 Memory / Maximum allocation 也是不能超過系統實際的大小.
還有另外一個指令可以動態變更 Memory / Maximum allocation !
#xm mem-max domain-id mem
[root@benjr ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 975 4 r----- 178.2 rhel4.6 5 512 1 -b---- 11.5 [root@benjr ~]# xm mem-max 5 800 |
所有使用 xm mem-set / mem-max command 都是暫時性的,需要修改 /etc/xen/ 設定檔.或是使用 virt-manager 的介面來修改.
在其官方說明都敘述說請小心使用 xm mem-set / mem-max command 而且不保證生效也有可能會讓 Guest crash.
8.xm vcpu-list/vcpu-set/vcpu-pin command
通常透過 xm list 只能看到 Guest 的 vcpu 個數外並沒有其他關於 CPU 的資訊,xm 提供另外一個指令 xm vcpu-list . 目前我的系統是1個 CPU 4 個 cores.
1.Name : Guest (Domain) name
2.ID : Domain ID
3.VCPUs : 虛擬的 vcpu 個數,0 為第一顆,以此類推.
4.CPU :目前 vcpu 對應到的實體 CPU 是哪一顆.
5.State :
r - running
目前有使用到 CPU 支援的 Guest
b - blocked
可能 Guest 在 sleep 狀態或是等待 I/O 裝置.
p - paused
我們可以使用 xm pause domainID 讓系統進入暫停模式.有點像是進入S1 - "Sleep" 的狀態.
6.Time(s) : 截至目前為止 Domain 的 CPU 有使用到時間單位為分鐘
7.CPU Affinity: Guest 的 vcpu 對應到哪一個實體 CPU .如果為 any cpu 就代表由系統去動態配置.
[root@benjr ~]# xm vcpu-list Name ID VCPUs CPU State Time(s) CPU Affinity Domain-0 0 0 0 -b- 26.4 0 Domain-0 0 1 1 -b- 8.7 1 Domain-0 0 2 2 r-- 9.7 2 Domain-0 0 3 3 -b- 5.9 3 rhel4.6 4 0 3 -b- 5.4 any cpu rhel5 3 0 1 -b- 19.0 any cpu |
剛剛 Domain U (Guest)的 CPU Affinity 都是 any cpu (代表由系統去動態配置),我們可以手動去配置它的的對應,使用 xm vcpu-pin.
Usage: xm vcpu-pin <Domain> <VCPU> <CPUs>
我要指定 rhel4.6(ID:4) 的第一顆 CPU(目前只有設定一顆) 使用實體第二顆 CPU (core)
[root@benjr ~]# xm vcpu-pin 4 0 2 [root@benjr ~]# xm vcpu-list Name ID VCPUs CPU State Time(s) CPU Affinity Domain-0 0 0 0 -b- 38.4 0 Domain-0 0 1 1 r-- 12.5 1 Domain-0 0 2 2 -b- 13.1 2 Domain-0 0 3 3 -b- 7.6 3 rhel4.6 4 0 2 -b- 12.6 2 rhel5 3 0 1 -b- 21.4 any cpu |
不過下次 Domain U(Guest) 開關機就會失效了.
關於動態調整 VCPU 個數我只能說是可惜,因為大多數的 OS 都不支援動態調配 CPU 個數.所以 xm vcpu-set 基本上派不上用場.
[root@benjr ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 975 4 r----- 74.6 rhel4.6 4 511 1 -b---- 12.6 rhel5 3 511 1 -b---- 21.5 |
我要指定 rhel4.6(ID:4) 使用3個 CPU (core)
[root@benjr ~]# xm vcpu-set 4 3 |
可以看到系統並沒有任何變更.
[root@benjr ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 975 4 r----- 75.0 rhel4.6 4 511 1 -b---- 12.6 rhel5 3 511 1 -b---- 21.5 |
不過還是透過最基本的方式去調配,關機去修改 /etc/xen/ 設定檔或是使用 virt-manager 的介面來修改.
[root@benjr ~]# xm vcpu-list Name ID VCPUs CPU State Time(s) CPU Affinity Domain-0 0 0 0 r-- 456.1 0 Domain-0 0 1 1 r-- 217.0 1 Domain-0 0 2 2 -b- 254.6 2 Domain-0 0 3 3 -b- 76.6 3 rhel4.6 5 0 2 -b- 7.7 any cpu rhel4.6 5 1 2 -b- 3.2 any cpu rhel4.6 5 2 2 -b- 3.3 any cpu rhel4.6 5 3 2 -b- 2.9 any cpu rhel5 6 0 1 -b- 1.6 any cpu |