柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!
全部博文(1669)
分类: 虚拟化
2012-07-17 10:39:09
2010-11-24 13:19:37| 分类: 虚拟化+云计 | 标签: |字号大中小
28.5 xm 管理工具
除了通过虚拟系统管理图形化管理程序来管理Xen中的虚拟机外,Xen也提供了一个命令模式中的管理工具。这个工具称为 xm (Xen Manager)。
本节将介绍如何使用xm来管理Xen中的虚拟机。
28.5.1 xm 基本语法
如果要使用 xm 来管控虚拟机,你必须使用下列的语法:
xm COMMAND [ARGS...] |
其中的COMMAND为 xm 的命令,常用的xm命令如表28-2所示。而ARGS则是COMMAND使用的参数与自变量,不同的COMMAND搭配的ARGS 也会不一样。至于每一个 COMMAND 可使用哪些 ARGS 将于本章节后再介绍。
表28-2 xm常用命令一览表
命令 |
说明 |
console |
连接至虚拟机的控制台 |
create |
建立一个 Domain-U 的虚拟机 |
destroy |
删除一个 Domain-U 的虚拟机 |
list |
列出 Domain |
mem-set |
重新设置 Domain-U 的内存大小 |
pause |
暂停 Domain-U 虚拟机的执行 |
reboot |
重新启动某一个虚拟机 |
restore |
还原虚拟机 |
save |
存储虚拟机的状态 |
Shutdown |
关闭虚拟机 |
top |
监控虚拟机的执行状态 |
unpause |
取消暂停,亦即继续执行虚拟机 |
uptime |
显示虚拟机的 uptime |
vcpu-set |
修改虚拟机的 CPU 数量 |
28.5.2 列出Domain
你可以使用xm来列出Xen中的区域。要列出Xen的区域信息,使用方法如下:
xm list [ --long | --label ] [DOMAIN...] |
其中的 --long 与 --label 的功能说明如下。
--long:以完整的格式显示该虚拟机的详细信息。
--label:显示虚拟机的安全卷标 (Security Label)。
以下是我使用xm list来列出Xen 区域的范例。
[root@linux ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 495 1 r----- 358.7 [root@linux ~]# |
显示区域时,xm 会显示下列的每一个字段。
Name:这个字段显示虚拟机的名称。
ID:这是虚拟机的标识符。
Mem:虚拟机目前使用多少的内存。
VCPUs:虚拟机目前使用的 CPU 数量。
State:虚拟机的状态。这个字段中,若显示若干标签,则每一个标签代表的意义如下。
r:代表该虚拟机正在执行中(Running)。
b:该虚拟机因等候 I/O 而被阻断(Block)。
p:该虚拟机已被暂停(Pause)。
s:该虚拟机已被关闭(Shutdown)。
c:虚拟机宕机(Crash)。
d:虚拟机正在结束中(Dying)。
Time:虚拟机执行共花费多少时间。
28.5.3 启动与删除 Domain-U
在安装虚拟机后,Red Hat Enterprise Linux 5的Xen 会默认停止该虚拟机。如果打算启动该虚拟机,你必须以xm来启动它:
xm create [-c] CONFIGFILE [NAME=VALUE...] |
其中的CONFIGFILE是该虚拟机的配置文件路径名称,而后面的参数则是该虚拟机器内核的启动参数。
关于虚拟机的配置文件。
Red Hat Enterprise Linux 5中提供的是Xen 3.0 版。在该版本的Xen中,建立一个新的虚拟机后,会自动产生该虚拟机的配置文件,但在其他版本的Xen里,可能不会自动产生虚拟机的配置文件。
默认虚拟机配置文件会存储于/etc/xen/中,且以该虚拟机的名称作为配置文件的名称。
另外,Xen 里面也允许你删除(Destroy)一个虚拟机。删除的时候,Xen会立即终止该虚拟机的执行,就如同按下计算机的电源一样。
若采用删除的方式来终止虚拟机的执行,你可能会失去所有未存储的资料。所以,请不要随意使用删除的方式来结束虚拟机的执行,若真要这样做,可能会造成无法想象的后果。
如果你想要利用 xm 来删除一个虚拟机,你可以执行下列命令:
xm destroy DOMAIN |
其中的DOMAIN就是虚拟机的名称。
以下是我使用xm来启动与删除一个虚拟机的示范。
[root@linux ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 495 1 r----- 353.9 ?① [root@linux ~]# ls /etc/xen/ ② auto/ system1 xend-pci-quirks.sxp xmexample.hvm qemu-ifup* xend-config.sxp xmexample1 xmexample.vti scripts/ xend-pci-permissive.sxp xmexample2 [root@linux ~]# xm create system1 ?③ Using config file "/etc/xen/system1". Going to boot Red Hat Enterprise Linux Server (2.6.18-8.el5xen) kernel: /boot/vmlinuz-2.6.18-8.el5xen initrd: /boot/initrd-2.6.18-8.el5xen.img Started domain system1 [root@linux ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 495 1 r----- 355.7 system1 2 500 1 -b---- 0.7 ?④ [root@linux ~]# xm destroy system1 ⑤ ? [root@linux ~]# xm list Name ID Mem(MiB) V CPUs State Time(s) Domain-0 0 495 1 r----- 357.9 ?⑥ [root@linux ~]# ls /etc/xen/ ?⑦ auto/ system1 xend-pci-quirks.sxp xmexample.hvm qemu-ifup* xend-config.sxp xmexample1 xmexample.vti scripts/ xend-pci-permissive.sxp xmexample2 [root@linux ~]# |
① 目前我的 Red Hat Enterprise Linux 中仅有一个Domain-0,表示未启动任何虚拟机器。
② 在/etc/xen/ 目录中,有一个名为system1的文件,这就是system1 虚拟机器的配置文件。
③ 现在,利用xm来启动system1虚拟机吧!
④ 完成后,再次查看所有的虚拟机,就可发现system1已经顺利地启动了。
⑤ 现在,利用xm来删除system1虚拟机。
⑥ 确认一下system1是否还在。根据xm list的结果可知,system1虚拟机已经被终止了。
⑦ 删除虚拟机并不会删除虚拟机的配置文件,因此,/etc/xen/中仍存储着system1这个文件。
28.5.4 连接至虚拟机控制台
启动虚拟机后,你可以连接到该虚拟机的控制台来使用该虚拟机。如果要通过xm来连接虚拟机的控制台,则必须使用xm console 命令:
xm console DOMAIN |
其中的DOMAIN就是虚拟机的名称。连接虚拟机后,如果要回到真实的机器,你可以在虚拟机的控制台中按下【Ctrl+]】组合键。这样就可以返回真实机器上。
以下是我使用xm 连接至虚拟机控制台的范例。
[root@linux ~]# xm console system1 ?① Red Hat Enterprise Linux Server release 5 (Tikanga) Kernel 2.6.18-8.el5xen on an i686 localhost.localdomain login: root Password: Last login: Thu Nov 15 11:57:05 on xvc0 [root@localhost ~]# hostname localhost.localdomain ② [root@localhost ~]# uptime ?③ 11:57:46 up 2:00, 1 user, load average: 0.00, 0.00, 0.00 [root@localhost ~]# ?④ [root@linux ~]# |
① 连接到 system1 虚拟机的控制台。
② 根据目前的主机名可知,现在的确是在 system1 的虚拟机下。
③ 看一下uptime的结果,这台虚拟机才开机2分钟。
④ 按下【Ctrl+D】组合键回到宿主机的Shell下吧!
28.5.5 监控 Domain
如果你打算监控每一个虚拟机的状态,则可以使用xen top 进行监控。
xentop - 11:59:32 Xen 3.0.3-rc5-8.el5 2 domains: 1 running, 1 blocked, 0 paused, 0 crashed, 0 dying, 0 shutdown Mem: 1039932k total, 1038780k used, 1152k free CPUs: 1 @ 2799MHz NAME STATE CPU(sec) CPU(%) MEM(k) MEM(%) MAXMEM(k) MAXMEM(%) VCPUS NETS NETTX(k) NETRX(k) VBDS VBD_OO VBD_RD VBD_WR SSID Domain-0 -----r 899 0.9 506964 48.7 no limit n/a 1 4 47889 1818 0 0 0 0 0 system1 --b--- 237 0.1 511768 49.2 512000 49.2 1 1 9 462 1 0 18789 27849 0Delay Networks vBds VCPUs Repeat header Sort order Quit |
在监控虚拟机的过程中,你会看到画面的下方有一行信息,提示你可以做什么动作。在监控的过程中可以执行的动作整理如表28-3所示。
表28-3 在监控中可以执行的动作
项目 |
按键 |
说明 |
Delay |
D |
修改显示更新频率,单位为秒 |
Networks |
N |
修改显示网络的状态 |
vBds |
B |
切换是否显示虚拟磁盘的状态 |
VCPUs |
V |
切换是否显示虚拟中央处理器信息 |
Repeat header |
R |
切换是否在每一个虚拟机前显示表格字段 |
Sort order |
S |
切换排序的字段 |
Quit |
Q |
结束 xm top,回到 Shell |
28.5.6 修改Domain-U
当然,跟虚拟系统管理一样,你也可以利用xm来修改 Domain-U 的硬件设备之设置。你可以执行如下的操作
调整内存大小
xm mem-set DOMAIN MEM xm mem-max DOMAIN MEM |
mem-set用来修改虚拟机内存的目前使用量,而mem-max 则用来修改内存的最大值。值得注意的是,mem-set 设置的值不能超过mem-max设置的值的大小。
调整 CPU 数量
xm vcpu-set DOMAIN VCPU |
其中的DOMAIN为虚拟机的名称,Mem为内存的大小,单位为MB,而VCPU则是虚拟机CPU的数量。
[root@linux ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 495 1 r----- 902.2 system1 3 499 ① 1 ------ 237.3 [root@linux ~]# xm mem-set system1 256 ② [root@linux ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 495 1 r----- 902.5 system1 3 322 ③? 1 -b---- 237.6 [root@linux ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 495 1 r----- 902.8 system1 3 255 ④ 1 -b---- 237.8 [root@linux ~]# |
① 目前system1的内存为499 MB。
② 将system1的内存改为256 MB吧。
② Xen 并不会马上修改,它会慢慢地调降至指定的大小。
④ 稍候片刻,system1的内存就成了255 MB。
28.5.7 控制Domain-U
Xen允许你控制虚拟机的执行状态,也可以利用xm来控制Xen中的虚拟机。至于如何使用xm来控制虚拟机的状态,请参阅表28-4。
表28-4 使用XM控制虚拟机的状态说明
动作 |
命令 |
暂停虚拟机 |
xm pause DOMAIN |
取消暂停 |
xm unpause DOMAIN |
关闭虚拟机 |
xm shutdown [OPTIONS] DOMAIN |
重新启动虚拟机 |
xm reboot [OPTIONS] DOMAIN |
其中DOMAIN为虚拟机的名称。另外,shutdown 与 reboot可以配合下列的参数。
-a, --all:代表全部的虚拟机。
w, --wait:需等候多少时间。
以下是我使用xm控制虚拟机的示范。
[root@linux ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 495 1 r----- 903.4 system1 3 255 1 ------ ① 237.8 [root@linux ~]# xm pause system1 ② [root@linux ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 495 1 r----- 903.7 system1 3 255 1 --p--- ③ 237.8 [root@linux ~]# xm unpause system1 ④? [root@linux ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 495 1 r----- 912.1 system1 3 255 1 ------ ⑤ 239.2 [root@linux ~]# |
① 目前 system1 并无显示 p 标签,代表该虚拟机处在正常的执行中。
② 暂停 system1 吧!
③ 目前 system1 的状态区位中出现了p标签,代表 system1 已经暂停了。
④ 现在来取消 system1 的暂停状态。
⑤ system1 果然又继续执行了。