分类: LINUX
2008-08-28 18:44:16
表-1是x86 处理器支持Xen完全虚拟化列表
最好使用支持Intel VT或AMD PT虚拟化技术。要检查中央处理器是否支持,用命令:
# grep vmx /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 syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr
lahf_lm
假如一个 vmx标志出现的话,就表示您拥有 Intel 处理器的虚拟化支援。
如果是AMD的中央处理器用命令:
# grep svm /proc/cpuinfo
flags :
fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dt acpi
mmx fxsr sse sse2 ss ht tm syscall nx mmtext fxsr_opt rdtscp lm
3dnowext pni cx16 lahf_lm cmp_legacy svm cr8_legacy
说明:Xen是一款虚拟化软件,支持半虚拟化和完全虚拟化。它在不支持Intel VT或AMD PT技术的cpu上也能使用,但是只能以半虚拟化模式运行。半虚拟化的意思是需要修改被虚拟系统的内核,以实现系统能被完美的虚拟在Xen上面。完全虚拟 化则是不需要修改系统内核则可以直接运行在Xen上面。
安装Xen服务
使用下面的命令检查系统是否已经安装了Xen或查看已经安装了何种版本,以及Linux内核是否有针对Xen的补丁。
rpm -qa |grep xen
如果系统还没有安装Xen虚拟机,可以使用下面的命令安装Linux补丁、Xen虚拟机和virt-manager虚拟机管理工具。但用户必须联入Internet,同时拥有virtualization服务的订阅号码。
yum install kernel-xen xen virt-manager
启动和停止Xen服务
1.启动Xen服务
/etc/init.d/xend start
2.停止Xen服务
/etc/init.d/xend stop
3.重新启动Xen服务
/etc/init.d/xend restart
4 自动启动Xen服务
如果需要让Xen服务随系统启动而自动加载,可以执行“ntsysv”命令启动服务配置程序,找到“xend”服务,在其前面加上星号(*),然后选择“确定”即可 。
5 使用图形工具virt-manager创建Xen虚拟系统
在X-Window中打开“应用程序”→“系统工具”→“Virtual Machine Manager”,选择“本地Xen宿主”后单击“连接”,启动虚拟化管理应用程序virt-manager 。下面使用 virt-manager 安装 一个Linux Xen 完全虚拟化客户机。步骤如下:选择 简单文件,键入 /cjh.img 作为文件的位置。指定 2000 MB,并点击“前进”按钮如图-6。
在“分配内存及CPU”界面中,根据实际情况为虚拟系统分配相应的内存和CPU数量 。并点击“前进”按钮如图-7。
点击 完成按钮,如图-8。
系统依照所设置的参数创建虚拟系统的配置文件/etc/xen/VM5,并自动开启虚拟系统终端 。如图-10。
依照提示安装虚拟系统,在安装完成后重新引导系统时虚拟系统会自动关闭,因此需要使用命令“xm creat /etc/xen/cjh”重新开启虚拟系统。
到此为止笔者介绍了红帽企业5.0安装XEN虚拟机,下一页将要介绍管理Xen虚拟机的方法,敬请期待。
使用图形工具virt-manager管理Xen虚拟机
1. 查看虚拟系统的名称、CPU占用情况和内存占用情况
在virt-manager中选择要管理的虚拟系统,然后单击“细节”按钮,打开“虚拟系统状态”窗口,在这里可以查看虚拟系统的名称、CPU占用情况和内存占用情况 。如图-1 。2. 查看和修改虚拟系统内存等硬件的状态和参数
选择“硬件”选项卡,在这里可以查看和修改虚拟系统内存等硬件的状态和参数 。如图-2。
3. 虚拟机保存、停止和暂停
在virt-manager中选择要管理的虚拟系统,然后单击“打开”按钮,启动虚拟系统终端。在这里可以使用暂停、运行、关闭和保存等功能,如图-3。
使用字符工具xm管理Xen虚拟机的命令
显示虚拟机运行状态
xm list
使用文本方式连接虚拟系统
xm console
开启虚拟系统
xm create
关闭虚拟系统
xm shutdown
xm destroy
重新启动虚拟系统
xm reboot
将虚拟系统当前状态保存到文件中
xm save
恢复已保存的虚拟系统
xm restore
暂停虚拟系统
xm pause
恢复被暂停的虚拟系统
xm resume
Xen虚拟机的故障解除
1 了解Xen 配置文件
Xen的配置文件包含下面的标准变量。这些文件里的配置项必须用引号(")括起来。这些配置文件位于 /etc/xen 目录里。 如表1 。
2 了解Xen日志文件
所有红帽虚拟化系统的日志文件都是标准的 ASCII 文件,可以很容易地用基于 ASCII 的编辑器存取。 红帽虚拟化系统的主要配置目录是 /etc/xen/。这个目录包含了 xend 守护进程和其他的虚拟机配置文件。网络脚本文件也存放在此处(在 /scripts 目录)。 所有你用于故障解除目的的日志文件都存放在 /var/log/xen 目录。 你也应该知道所有虚拟机的基于文件的磁盘映像都缺省存放在 /var/lib/xen 目录里。 红帽虚拟化系统的 /proc 文件系统信息位于 /proc/xen/ 目录。
虚拟化系统以 xend 守护进程和 qemu-dm 进程为特征,这两个工具都把多个日志文件写入到 /var/log/xen/ 目录:
xend.log 是包含 xend 守护进程收集的所有数据的日志文件,不管这数据是普通的系统事件,还是操作者执行的动作。所有虚拟机的操作(如创建、关闭、销毁等等)都在此出现。 xend.log 通常是你跟踪事件或性能问题的第一个着手点。它包含错误信息的详细条目和条件。 xend.log 文件包含了于你运行 xm log 命令相同的基本信息。它位于 /var/log/ 目录里。
xend-debug.log 是包含 xend 和虚拟化子系统(如 framebuffer、Python 脚本等等)的事件错误记录的日志文件。 xend-debug.log ,对于系统管理员也是非常有用的,因为它包含了比 xend.log 更为详细的信息。
xen-hotplug-log 是包含热插拔事件的数据的日志文件。如果设备或网络脚本没有被启动,事件将记录在这里。
qemu-dm.[PID].log 是 qemu-dm 进程为每个完全虚拟化客户机创建的日志文件。当使用日志文件时,你必须用 ps 命令并挑选出 qemu-dm 的信息来获取 qemu-dm 的进程号。注意你必须用实际的 qemu-dm 进程的 PID 来代替 [PID]。
如果在使用虚拟机管理者时你遇到任何错误,你可以在 /.virt-manager 目录下的 virt-manager.log 文件里寻找生成的数据。注意每次你启动虚拟机管理者,它都会覆盖现有的日志文件内容。当出现系统错误后,在重启虚拟机管理者前,请确保备份好 virt-manager.log 文件。
3故障解除工具
系统管理员程序、网络工具和高级调试工具(关于如何使用这些工具来配置红帽虚拟化服务的更多信息,请参考相关的配置文档)。你可以使用这些标准的系统管理员工具和日志来协助故障解除:
xentop
xm dmesg
xm log
vmstat
iostat
lsof
你可以使用这些标准的系统管理员工具和日志来协助故障解除:
XenOprofile
systemTap
crash
sysrq
sysrq t
sysrq w
你可以使用这些网络工具来协助故障解除:
ifconfig
tcpdump
brtctl ( 是一个在虚拟化 Linux 内核里检查和配置以太网桥配置的网络工具。在执行这些示例命令时,你必须拥有根用户权限)
4 SELinux
在xen实施 SELinux 必须考虑的事情。当你部署系统修订和增加设备时,你必须相应地更新 SELinux 策略。要为客户机配置 LVM 卷,你必须为不同的底层块设备和卷组修改 SELinux 上下文。
# semanage fcontext -a -t xen_image _t -f -b /dev/sda2
# restorecon /dev/sda2
布尔值参数 xend_disable_trans 使 xend 在重启后进入 unconfined 模式。禁止对单个进程的保护比在整个系统里应用要更好。我们建议你不要把目录重新标记为将在其他地方使用的 xen_image_t。
5 了解翻译错误信息
如果你接收到下面的错误:
failed domain creation due to memory shortage, unable to balloon domain0
如果没有足够的可用内存,域将不能运行。Domain0 没有足够的空间来容纳新创建的客户机。你可以检查 xend.log 里关于这个错误的内容:
[2007-12-21] 20:33:31 xend 3198] DEBUG (balloon:133) Balloon: 558432 Kib free; 0 to scrub; need 1048576; retries: 20
[2007-12-21] 20:33:31 xend. XendDomainInfo 3198] ERROR (XendDomainInfo: 202
Domain construction failed
通过 xm list Domain0 命令,你可以检查 domain0 所使用的内存数量。如果 domain0 已经没有可用内存,你可以用 "xm mem-set Domain-0 NewMemSize" 来设置新的内存容量。
你接收到下面的错误:
wrong kernel image: non-PAE kernel on a PAE
这个信息表示你试图在监控程序里运行不被支持的客户机内核映像。当你试图在 RHEL 5.0 监控程序里引导 non-PAE 半虚拟化客户机内核时,将产生这个问题。红帽虚拟化系统只支持带有 PAE 的客户机内核和 64 位的体系结构。
键入这个命令:
[root@smith]# xm create -c va base
Using config file "va-base"
Error: (22, 'invalid argument')
[2007-12-14 14:55:46 xend.XendDomainInfo 3874] ERRORs
(XendDomainInfo:202) Domain construction failed
Traceback (most recent call last)
File "/usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 195 in create vm.initDomain()
File " /usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 1363 in initDomain raise VmError(str(exn))
VmError: (22, 'Invalid argument')
[2007-12-14 14:55:46 xend.XendDomainInfo 3874] DEBUG (XenDomainInfo: 1449]
XendDlomainInfo.destroy: domin=1
[2007-12-14 14:55:46 xend.XendDomainInfo 3874] DEBUG (XenDomainInfo: 1457]
XendDlomainInfo.destroy:Domain(1)
如果你需要运行 32 位/非 PAE 内核,你将需要把客户机作为完全虚拟化的虚拟机运行。对于半虚拟化的客户机,如果你需要运行 32 位的
PAE 客户机,你必须具有 32 位的 PAE 监控程序。对于半虚拟化的客户机,如果你要运行 64 位的 PAE 客户机,你必须具有 64
位的 PAE 监控程序。对于完全虚拟化的客户机,你必须用 64 位的监控程序运行 64 位客户机。RHEL 5 i686 里的 32 位
PAE 监控程序只支持运行 32 位的并行虚拟化和 32 位的完全虚拟化的客户机操作系统。64 位监控程序只支持 64 位的并行虚拟化客户机。
当你把完全虚拟化的 HVM 客户机移动到 RHEL 5.0 系统里时,就会出现这个问题。你的客户机不能够引导且在控制台可以看到一个错误信息。检查配置文件里的 PAE 条目,确保 pae=1。你应该使用 32 位的版本。
你接收到下面的错误:
Unable to open a connection to the Xen hypervisor or daemon
当 virt-manager 程序不能启动时,会出现这个问题。当 /etc/hosts 配置文件里没有 localhost 条目时会产生这个错误。请确认配置文件里是否启用了 localhost 条目。下面是一个错误的 localhost 条目示例:
# Do not remove the following line, or various programs
# that require network functionality will fail.
localhost.localdomain localhost
下面是一个正确的 localhost 条目示例:
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
localhost.localdomain. localhost
你会接收到下面的错误(在 xen-xend.log file 文件里):
Bridge xenbr1 does not exist!
当客户的网桥没有正确配置时会产生这个问题,它会迫使
Xen hotplug
脚本超时。如果你在主机之间移动配置文件,你必须确保你更新了这些配置文件,如进行网络拓扑结构和配置的修改。当你试图启动含有不正确或不存在的
Xen 网桥配置的客户机时,你将接收到如下的错误:
[root@trumble virt]# xm create r5b2-mySQL01
Using config file " r5b2-mySQL01"
Going to boot Red Hat Enterprise Linux Server (2.6.18.-1.2747 .el5xen)
kernel: /vmlinuz-2.6.18-12747.el5xen
initrd: /initrd-2.6.18-1.2747.el5xen.img
Error: Device 0 (vif) could not be connected. Hotplug scripts not working.
另外,xend.log 里会有下面的错误:
[2007-11-14 15:07:08 xend 3875] DEBUG (DevController:143) Waiting for devices vif
[2007-11-14 15:07:08 xend 3875] DEBUG (DevController:149) Waiting for 0
[2007-11-14 15:07:08 xend 3875] DEBUG (DevController:464) hotplugStatusCallback
/local/domain/0/backend/vif/2/0/hotplug-status
[2007-11-14 15:08:09 xend.XendDomainInfo 3875] DEBUG (XendDomainInfo:1449) XendDomainInfo.destroy: domid=2
[2007-11-14 15:08:09 xend.XendDomainInfo 3875] DEBUG (XendDomainInfo:1457) XendDomainInfo.destroyDomain(2)
[2007-11-14 15:07:08 xend 3875] DEBUG (DevController:464) hotplugStatusCallback
/local/domain/0/backend/vif/2/0/hotplug-status
要解决这个问题,你必须编辑你的客户机配置文件,并修改 vif 条目。找到配置文件里的 vif 条目,假定你把 xenbr0 作为缺省网桥,正确的设置应该如下所示:
# vif = ['mac=00:16:3e:49:1d:11, bridge=xenbr0',]
你接收到这些 python 错误:
[root@python xen]# xm shutdown win2k3xen12
[root@python xen]# xm create win2k3xen12
Using config file "win2k3xen12".
/usr/lib64/python2.4/site-packages/xenxm/opts.py:520: Deprecation Warning:
Non ASCII character '\xc0' in file win2k3xen12 on line 1, but no encoding
declared; see for details