200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 对XEN中HVM虚拟机的一些理解

对XEN中HVM虚拟机的一些理解

时间:2022-10-23 03:03:49

相关推荐

对XEN中HVM虚拟机的一些理解

最近又把一些精力花在了XEN上面了,这和我另外在处理的一个邮件系统有一个间接的关系,在那里我遇到了一个间接涉及到XEN的问题。由于邮件系统我还尚 未达到符合要求,待我整理完稍后刊出。以下是我对HVM功能的注释,其中加入了我个人对这些参数和配置的理解以及一些通常我会采用的方法。

首 先,使用HVM方式的虚拟机,在配置文件中,应当加入以下这一段。我目前还不清晰具体。它首先是一个判断的逻辑“if:...else:...”,而 arch=应该是设定体系部分,之后os.uname()我想应当是一个和内核参数有关系的调用方法。(细节我还不明白,也查阅了一些资料,目前还没有明 白,请高手指点==)。而HVM方式的虚拟机之所以和一般不同,有一个很大的区别,就是它在内核引导方面不会完全依赖宿主机的内核。(这一点在我试图在 CentOS5宿主机上安装CentOS4的非HVM虚拟机而报错时尤其明显和说明问题)。我认为HVM的这个与众不同之处的特点,我认为和下面的这段是 非常相关的。(非常希望了解的朋友解释一下呢!>_<)

importos,re

arch=os.uname()[4]

ifre.search('64',arch):

arch_libdir='lib64'

else:

arch_libdir='lib'

内核引导参数部分:

----------------------------------------------------------------------------

#Kernelimagefile.

kernel="/usr/lib/xen/boot/hvmloader"

设定该HVM虚拟机的内核镜像文件,默认是采用宿主机上/usr/lib/xen/boot/hvmloader这个来引导的。

#Thedomainbuildfunction.HVMdomainuses'hvm'.

builder='hvm'

设定虚拟域的建立方式,一个虚拟域对应了一个虚拟机,宿主机通过根域0来管理。如果是HVM虚拟机的话,这项要设定为hvm。

#Initialmemoryallocation(inmegabytes)forthenewdomain.

#WARNING:Creatingadomainwithinsufficientmemorymaycauseoutofemoryerrors.Thedomainneedsenoughmemorytobootkernelandmodules.Allocatinglessthan32MBsisnotrecommended.

memory=128

设定虚拟机的占用的内存,如手册上说的,不建议设定低于32MB。

#Shadowpagetablememoryforthedomain,inMB.

#Shouldbeatleast2KBperMBofdomainmemory,plusafewMBpervcpu.

shadow_memory=8

设定影内存?(这个术语的意思我还不了解,还烦请高手指点)这个配置项的默认值为8,单位MB。虚拟机每多一个VCPU就应到增加一些。

#Anameforyourdomain.Alldomainsmusthavedifferentnames.

name="ExampleHVMDomain"

设定虚拟机的域名实例。这个相当于你的虚拟机在XEN内的注册名,可以通过xm命令操作的命名。

#128-bitUUIDforthedomain.ThedefaultbehavioristogenerateanewUUID

#oneachcallto'xmcreate'.

uuid="06ed00fe-1162-4fc4-b5d8-11993ee4a8b9"

设定虚拟域的UUID标示。默认情况下,当收到xmcreate启动命令时会自动生成一个新的UUID。

内存和CPU参数部分:

-----------------------------------------------------------------------------

#thenumberofcpusguestplatformhas,default=1

vcpus=1

设定虚拟机的虚拟CPU数量。默认是1。

#enable/disableHVMguestPAE,default=0(disabled)

pae=0

设定启用或关闭HVM的PAE,默认值0表示关闭。

#enable/disableHVMguestACPI,default=0(disabled)

acpi=0

设定启用或关闭HVM的ACPI,默认值0表示关闭。(注:在使用HVM安装Windows这种系统时,必须要关闭,否则将会一直卡在一个安装画面中。)

#enable/disableHVMguestAPIC,default=0(disabled)

apic=0

设定启用或关闭HVM的APCI,默认值0表示关闭。(注:在使用HVM安装Windows这种系统时,必须要关闭,否则将会一直卡在一个安装画面中。)

设定虚拟机被允许使用的CPU对象。默认是无需指定而让XEN自己来挑选的。

一些设定的方式:

cpus=""不指定,让XEN自己去选择。

cpus="0"指定让虚拟机的VCPU运行在宿主机的CPU0(第一个CPU,0号)。

cpus="0-3"指定让虚拟机的VCPU运行在宿主机的0号、1号、2号、3号CPU。

cpus="5"指定让虚拟机的VCPU运行在宿主机的5号CPU上(第六个CPU)。

cpus="^1"指定让虚拟机的VCPU不运行在宿主机除1号CPU上(^表示“非”的意思,但没有说是“除这个之外其他全部”的意思,而仅仅是“非”的意思)。

cpus="0-3,5,^1"指定让虚拟机的VCPU运行在宿主机的0、1、2、3、5号CPU上,但是由于最后跟着一个^1,所以要把1号CPU去掉。实际指定的是0、2、3、5这四个CPU。

网络接口参数部分:

------------------------------------------------------------------------------

vif=['type=ioemu,mac=00:16:3e:00:00:11,bridge=xenbr0,model=ne2k_pci']

设定MAC地址,一般情况下虚拟机的MAC地址如果不特别指定的话,它是自动随机的。(一般无需特别指定配置)

vif=['type=ioemu,bridge=xenbr0']

设定网络接口的类型,虚拟网络接口类型指定的是ioemu,表示是一个模拟的IO设备,而不是真实的网络设备。(一般无需特别指定配置)

存储设备参数部分:

------------------------------------------------------------------------------

disk=['phy:hda1,hda1,r']

disk=['file:/var/images/min-el3-i386.img,hda,w',',hdc:cdrom,r']

设 定虚拟机使用的“磁盘”以及“光驱”设备,通过制定宿主机系统里的某个路径和文件来实现(file),也可以指向宿主机上的真实设备(phy),另外需要 指定这些“设备”的一些属性。比如hda,就表示这个设备在虚拟机里的角色是位置IDE-1-Master的磁盘;比如hdc:cdrom,表示这个设备 在虚拟机里的角色是位置IDE-2-Master位置的光驱。另外w和r分别表示设备的写和读的属性。

虚拟机状态参数控制部分:

----------------------------------------------------------------------------

#Configurethebehaviourwhenadomainexits.Therearethree'reasons'

#foradomaintostop:poweroff,reboot,andcrash.Foreachoftheseyou

#mayspecify:

当一个虚拟机存在并运行的时候,会有3个原因会造成虚拟机的停止:关机、重启、崩溃。对于这每个可能,需要制定一些措施。

#"destroy",meaningthatthedomainiscleanedupasnormal;

虚拟域的正常停止,使用“Destroy”方式来表达。

#"restart",meaningthatanewdomainisstartedinplaceoftheoldone;

一个新的虚拟域启动来代替旧虚拟域,使用“Restart”方式来表达。

#"preserve",meaningthatnoclean-upisdoneuntilthedomainismanuallydestroyed(usingxmdestroy,forexample);or

保护虚拟域,虚拟域不会被清除直到被一次人为手动地停止。使用“Preserve”方式来表达。

#"rename-restart",meaningthattheolddomainisnotcleanedup,butisrenamedandanewdomainstartedinitsplace.

旧的虚拟域并没有被清除,但是它被改名之后并以一个新域的的方式启动。使用“Rename-Restart”的方式来表达。

默认情况如下

on_poweroff='destroy'当遇到关机的时候,就会自动采用Destory来操作自己。

on_reboot='restart'当遇到重启的时候,就会自动采用Restart来操作自己。

on_crash='restart'当遇到崩溃的时候,就会自动采用Restart来操作自己。

关于VNC控制以及其他的一些虚拟机参数:

----------------------------------------------------------------------------

#Newstuff

device_model='/usr/'+arch_libdir+'/xen/bin/qemu-dm'

新虚拟机的设备模版。注意后面的qemu-dm。宿主机上提供的XEN-VNC控制就是由它提供的。

#bootonfloppy(a),harddisk(c)orCD-ROM(d)

#default:harddisk,cd-rom,floppy

boot="cda"

设定虚拟机的启动顺序,“a”表示软盘,“c”表示硬盘,“d”才表示CDROM。从左到右依次表示顺序。

(这里友情提示一下:当建立虚拟机的时候CDROM的“d”一般设定在最前,为的是从光盘中引导和安装操作系统。当安装完毕后请记得把启动顺序更改,将硬盘启动作为最优先。)

#writetotemporaryfilesinsteadofdiskimagefiles

snapshot=1

设定写入方式,写入到临时文件而不是镜像文件时设定为1。(一般无需特别指定配置)

#enableSDLlibraryforgraphics,default=0

sdl=0

设定SDL库支持图像,默认值0。(一般我也没有配置过这项,所以这里不是很理解,希望了解的朋友给与指点)

#enableVNClibraryforgraphics,default=1

vnc=1

设定使用VNC来支持图像,默认值1表示支持。很重要的选项!尤其是在安装HVM虚拟机的时候!

#addressthatshouldbelistenedonfortheVNCserverifvncisset.defaultistouse'vnc-listen'settingfrom/etc/xen/xend-config.sxp

vnclisten="127.0.0.1"

设定VNC监听的网络接口地址。这个地址必须是VNC服务器设定允许监听的有效地址。(默认是127.0.0.1的本机地址,一般我设定为0.0.0.0即全开放。)如果这项不设定的话,将会参考/etc/xen/xend-config.sxp这个配置文件里的设定。

#setVNCdisplaynumber,default=domid

vncdisplay=1

设定VNC的显示号,默认是为自己的DomainID。

#trytofindanunusedportfortheVNCserver,default=1

vncunused=1

设定VNC服务器使用一个未占用的端口来提供VNC连接服务。默认值1表示打开。

#enablespawningvncviewerfordomain'sconsole

#(onlyvalidwhenvnc=1),default=0

vncconsole=0

设定是否支持使用其他VNC类型客户端接入来管理虚拟机。此功能只在vnc项置1(启用VNC支持)的情况下有效。默认值0表示不支持。

#setpasswordfordomain'sVNCconsole

#defaultisdepentsonvncpasswdinxend-config.sxp

vncpasswd=''

设定此虚拟机的VNC的接入口令,如果这里不设定,那么将会默认参考xend-config.sxp主设定文件中的vncpasswd口令值。

#nographics,useserialport

nographic=0

设定无图形支持,使用串行端口。默认值0表示默认支持图形界面。

#enablestdvga,default=0(usecirruslogicdevicemodel)

stdvga=0

设定启用标准VGA。默认值为0。(一般无需特别指定配置)

#serialportre-directtoptydeivce,/dev/pts/nthenxmconsoleorminicomcanconnect

serial='pty'

设定控制台的串行接口设备。(一般无需特别指定配置)

#enablesoundcardsupport,[sb16|es1370|all|..,..],defaultnone

soundhw='sb16'

设定音频硬件设备。默认是没有。个人认为一般XEN作为服务器,用到音频的非常少。(一般无需配置)

#settherealtimeclocktolocaltime[default=0i.e.settoutc]

localtime=1

设定本地时间同步,默认值为1。(一般无需特别指定配置)

#startinfullscreen

full-screen=1

设定是否以全屏方式启动。(一般无需特别指定配置)

对周边设备支持的参数设定

-----------------------------------------------------------------------------

#EnableUSBsupport(specificdevicesspecifiedatruntimethroughthemonitorwindow)

usb=1

设定是否支持支持USB。(一般无需特别指定配置)

#EnableUSBmousesupport(onlyenableoneofthefollowing,`mouse'forPS/2protocolrelativemouse,`tablet'forabsolutemouse)

usbdevice='mouse'

usbdevice='tablet'

设定支持的USB的设备。(一般无需特别指定配置)

#Setkeyboardlayout,defaultisen-uskeyboard.

keymap='ja'

设定键盘设备,默认是英美式键盘。(一般无需特别指定配置)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。