免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1481 | 回复: 0
打印 上一主题 下一主题

RedHat 5.0配置XEN虚拟机 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-05 14:31 |只看该作者 |倒序浏览

       
       
       
       
       
       
Xen虚拟机有两种运行方式:完全虚拟化(full
virtualization)和半虚拟化(para
virtualization)。完全虚拟化提供底层物理系统的全部抽象化,且创建一个新的虚拟系统,客户机操作系统可以在里面运行。不需要对客户机操作
系统或者应用程序进行修改(客户机操作系统或者应用程序像往常一样运行,意识不到虚拟环境的存在)。半虚拟化需要对运行在虚拟机上的客户机操作系统进行修
改(这些客户机操作系统会意识到它们运行在虚拟环境里)并提供相近的性能,但半虚拟化的性能要比完全虚拟化更优越。
   
表-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
   
假如一个svm标志出现的话,就表示您拥有AMD
处理器的虚拟化支援。除了检查中央处理器旗标以外,您也应该要使您系统
BIOS 中的完整虚拟化生效。图
-1 是笔者AMD计算机的截图。

    图
-1 是笔者AMD计算机的截图。
   
说明: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
完全虚拟化客户机。步骤如下:

在virt-manager中打开“文件”→“新系统”,启动创建新的虚拟系统向导,单击“前进”按钮
。如图-2 。

图2启动创建新的虚拟系统向导

在“为虚拟系统命名”界面中,输入虚拟系统的名称“cjh”,单击“前进”按钮,如图-3


图-3为虚拟系统命名
   
在“选择虚拟化方式”界面中选中“完全虚拟化”单选按钮,然后单击“前进”按钮
,如图-4。

图-4
选择完全虚拟化
   
这里选择的是完全虚拟化, 指定 CD-ROM
或 DVD,然后输入安装介质的路径。如果你将从
ISO 映像进行安装,指定
ISO 映像的位置。单击“前进”按钮如图-5。

图-5定位安装介质
 选择
简单文件,键入 /cjh.img
作为文件的位置。指定 2000
MB,并点击“前进”按钮如图-6。

图-6选择简单文件
在“分配内存及CPU”界面中,根据实际情况为虚拟系统分配相应的内存和CPU数量
。并点击“前进”按钮如图-7。

图-7分配内存及CPU
   点击 完成按钮,如图-8。

图-8完成配置

虚拟机控制台窗口将出现。象往常一样进行并结束安装Linux。如图-9。

创建虚拟机界面

系统依照所设置的参数创建虚拟系统的配置文件/etc/xen/VM5,并自动开启虚拟系统终端
。如图-10。

图-10Xen虚拟机安装linux
界面

图-11
Xen虚拟机中的Linux
界面
   
依照提示安装虚拟系统,在安装完成后重新引导系统时虚拟系统会自动关闭,因此需要使用命令“xm
creat /etc/xen/cjh”重新开启虚拟系统。
   
到此为止笔者介绍了红帽企业5.0安装XEN虚拟机,下篇文章将要介绍管理Xen虚拟机的方法。
RedHat
5.0配置XEN虚拟机(下)
使用图形工具virt-manager管理Xen虚拟机
    1.
查看虚拟系统的名称、CPU占用情况和内存占用情况
   
在virt-manager中选择要管理的虚拟系统,然后单击“细节”按钮,打开“虚拟系统状态”窗口,在这里可以查看虚拟系统的名称、CPU占用情况和内存占用情况
。如图-1 。

   
图-1查看虚拟系统的名称、CPU占用情况和内存占用情况
    2.
查看和修改虚拟系统内存等硬件的状态和参数
   
选择“硬件”选项卡,在这里可以查看和修改虚拟系统内存等硬件的状态和参数
。如图-2。

   
图-2查看和修改虚拟系统内存等硬件的状态和参数
   
3. 虚拟机保存、停止和暂停
   
在virt-manager中选择要管理的虚拟系统,然后单击“打开”按钮,启动虚拟系统终端。在这里可以使用暂停、运行、关闭和保存等功能,如图-3。

    图-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


            
表1 Xen 虚拟化系统配置文件
    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
http://www.python.org/peps/pep-0263.html for details
execfile
(defconfig, globs, locs,)
Error: invalid syntax 9win2k3xen12,
line1)
    当遇到无效的(或不正确的)配置文件时,Python
生成这些错误。要解决这个问题,你必须更正不正确的配置文件,或者生成一个新的文件。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/7417/showart_726917.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP