xm command

RHEL5 提供 xm command 給使用者操作 Xen Guest,下面介紹一些常見的使用方式!

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

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

你會看到的都是目前在 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
Error: 'xm restore' requires 1 arguments.
Usage: xm restore <CheckpointFile>
Restore a domain from a saved state.

#xm restore 只需要一個參數就是剛剛 save 時的 <CheckpointFile>

[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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值