- xen环境下半虚拟化配置:
name = 'one-85'
#O CPU_CREDITS = 256
memory = '2048'
bootloader = "/usr/bin/pygrub"
disk = [
'file:/one_images/85/images/disk.0,xvda,w',
'file:/one_images/85/images/disk.1,xvdb,w',
'file:/one_images/85/images/disk.2,sdc,r',
]
vif = [
' mac=02:00:c0:a8:a3:a8,ip=192.168.163.168,bridge=xenbr0',
]
vcpus=2
vfb = [ 'type=vnc,vncunused=1,keymap=en-us,vnclisten=0.0.0.0' ]
- xen全虚拟化配置:
name="redhat"
uuid="cb1930be-9909-1356-c50d-95f2c7c9ae8d"
memory=512
maxmem=512
vcpus=2
on_poweroff="destroy"
on_reboot="restart"
on_crash="destroy"
localtime=0
keymap="en-us"
builder="hvm"
extid=0
device_model="/usr/lib/xen/bin/qemu-dm"
kernel="/usr/lib/xen/boot/hvmloader"
boot="c"
disk=[ 'file:/var/lib/xen/images/redhat/disk1,hda,w', 'phy:/dev/sr0,hdc:cdrom,r', ]
vif=[ 'mac=00:16:3e:08:70:37,bridge=xenbr0,model=e1000', ]
stdvga=0
vnc=1
vncunused=1
apic=1
acpi=1
pae=1
serial="pty"
- xml格式的虚拟机配置:
可以通过virsh dumpxml domain-id命令查看.
<domain type='xen'>
<name>redhat</name>
<uuid>cb1930be-9909-1356-c50d-95f2c7c9ae8d</uuid>
<memory>524288</memory>
<maxmemory>524288</maxmemory>
<vcpu>2</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<clock sync='utc'/>
<keymap>en-us</keymap>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<features>
<apic/>
<acpi/>
<pae/>
</features>
<devices>
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
<disk type='file' device='disk'>
<driver name='file'/>
<source file='/var/lib/xen/images/redhat/disk1'/>
<target dev='hda'/>
</disk>
<disk type='phy' device='cdrom'>
<driver name='phy'/>
<source file='/dev/sr0'/>
<target dev='hdc'/>
<readonly/>
</disk>
<interface type='bridge' model='e1000'>
<source bridge='xenbr0'/>
<mac address='00:16:3e:08:70:37'/>
<script path='/etc/xen/scripts/vif-bridge'/>
</interface>
<graphics type='vnc'/>
</devices>
</domain>
- 内核引导参数部分:
----------------------------------------------------------------------------
# Kernel image file.
kernel = "/usr/lib/xen/boot/hvmloader"
设定该HVM虚拟机的内核镜像文件,默认是采用宿主机上/usr/lib/xen/boot/hvmloader这个来引导的。
# The domain build function. HVM domain uses 'hvm'.
builder='hvm'
设定虚拟域的建立方式,一个虚拟域对应了一个虚拟机,宿主机通过根域0来管理。如果是HVM虚拟机的话,这项要设定为hvm。
# Initial memory allocation (in megabytes) for the new domain.
# WARNING: Creating a domain with insufficient memory may cause out of emory errors. The domain needs enough memory to boot kernel and modules. Allocating less than 32MBs is not recommended.
memory = 128
设定虚拟机的占用的内存,如手册上说的,不建议设定低于32MB。
# Shadow pagetable memory for the domain, in MB.
# Should be at least 2KB per MB of domain memory, plus a few MB per vcpu.
shadow_memory = 8
设定影内存?(这个术语的意思我还不了解,还烦请高手指点)这个配置项的默认值为8,单位MB。虚拟机每多一个VCPU就应到增加一些。
# A name for your domain. All domains must have different names.
name = "ExampleHVMDomain"
设定虚拟机的域名实例。这个相当于你的虚拟机在XEN内的注册名,可以通过xm命令操作的命名。
# 128-bit UUID for the domain. The default behavior is to generate a new UUID
# on each call to 'xm create'.
uuid = "06ed00fe-1162-4fc4-b5d8-11993ee4a8b9"
设定虚拟域的UUID标示。默认情况下,当收到xm create启动命令时会自动生成一个新的UUID。
内存和CPU参数部分:
-----------------------------------------------------------------------------
# the number of cpus guest platform has, default=1
vcpus=1
设定虚拟机的虚拟CPU数量。默认是1。
# enable/disable HVM guest PAE, default=0 (disabled)
pae=0
设定启用或关闭HVM的PAE,默认值0表示关闭。
# enable/disable HVM guest ACPI, default=0 (disabled)
acpi=0
设定启用或关闭HVM的ACPI,默认值0表示关闭。(注:在使用HVM安装Windows2003这种系统时,必须要关闭,否则将会一直卡在一个安装画面中。)
# enable/disable HVM guest APIC, default=0 (disabled)
apic=0
设定启用或关闭HVM的APCI,默认值0表示关闭。(注:在使用HVM安装Windows2003这种系统时,必须要关闭,否则将会一直卡在一个安装画面中。)
设定虚拟机被允许使用的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分别表示设备的写和读的属性。
虚拟机状态参数控制部分:
----------------------------------------------------------------------------
#Configure the behaviour when a domain exits. There are three 'reasons'
#for a domain to stop: poweroff, reboot, and crash. For each of these you
#may specify:
当一个虚拟机存在并运行的时候,会有3个原因会造成虚拟机的停止:关机、重启、崩溃。对于这每个可能,需要制定一些措施。
# "destroy", meaning that the domain is cleaned up as normal;
虚拟域的正常停止,使用“Destroy”方式来表达。
# "restart", meaning that a new domain is started in place of the old one;
一个新的虚拟域启动来代替旧虚拟域,使用“Restart”方式来表达。
# "preserve", meaning that no clean-up is done until the domain is manually destroyed (using xm destroy, for example); or
保护虚拟域,虚拟域不会被清除直到被一次人为手动地停止。使用“Preserve”方式来表达。
# "rename-restart", meaning that the old domain is not cleaned up, but is renamed and a new domain started in its place.
旧的虚拟域并没有被清除,但是它被改名之后并以一个新域的的方式启动。使用“Rename-Restart”的方式来表达。
默认情况如下
on_poweroff = 'destroy' 当遇到关机的时候,就会自动采用Destory来操作自己。
on_reboot = 'restart' 当遇到重启的时候,就会自动采用Restart来操作自己。
on_crash = 'restart' 当遇到崩溃的时候,就会自动采用Restart来操作自己。
关于VNC控制以及其他的一些虚拟机参数:
----------------------------------------------------------------------------
# New stuff
device_model = '/usr/' + arch_libdir + '/xen/bin/qemu-dm'
新虚拟机的设备模版。注意后面的qemu-dm。宿主机上提供的XEN-VNC控制就是由它提供的。
# boot on floppy (a), hard disk (c) or CD-ROM (d)
# default: hard disk, cd-rom, floppy
boot="cda"
设定虚拟机的启动顺序,“a”表示软盘,“c”表示硬盘,“d”才表示CDROM。从左到右依次表示顺序。
(这里友情提示一下:当建立虚拟机的时候CDROM的“d”一般设定在最前,为的是从光盘中引导和安装操作系统。当安装完毕后请记得把启动顺序更改,将硬盘启动作为最优先。)
# write to temporary files instead of disk image files
snapshot=1
设定写入方式,写入到临时文件而不是镜像文件时设定为1。(一般无需特别指定配置)
# enable SDL library for graphics, default = 0
sdl=0
设定SDL库支持图像,默认值0。(一般我也没有配置过这项,所以这里不是很理解,希望了解的朋友给与指点)
# enable VNC library for graphics, default = 1
vnc=1
设定使用VNC来支持图像,默认值1表示支持。很重要的选项!尤其是在安装HVM虚拟机的时候!
# address that should be listened on for the VNC server if vnc is set.default is to use 'vnc-listen' setting from /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这个配置文件里的设定。
# set VNC display number, default = domid
vncdisplay=1
设定VNC的显示号,默认是为自己的DomainID。
# try to find an unused port for the VNC server, default = 1
vncunused=1
设定VNC服务器使用一个未占用的端口来提供VNC连接服务。默认值1表示打开。
# enable spawning vncviewer for domain's console
# (only valid when vnc=1), default = 0
vncconsole=0
设定是否支持使用其他VNC类型客户端接入来管理虚拟机。此功能只在vnc项置1(启用VNC支持)的情况下有效。默认值0表示不支持。
# set password for domain's VNC console
# default is depents on vncpasswd in xend-config.sxp
vncpasswd=''
设定此虚拟机的VNC的接入口令,如果这里不设定,那么将会默认参考xend-config.sxp主设定文件中的vncpasswd口令值。
# no graphics, use serial port
nographic=0
设定无图形支持,使用串行端口。默认值0表示默认支持图形界面。
# enable stdvga, default = 0 (use cirrus logic device model)
stdvga=0
设定启用标准VGA。默认值为0。(一般无需特别指定配置)
# serial port re-direct to pty deivce, /dev/pts/n then xm console or minicom can connect
serial='pty'
设定控制台的串行接口设备。(一般无需特别指定配置)
# enable sound card support, [sb16|es1370|all|..,..], default none
soundhw='sb16'
设定音频硬件设备。默认是没有。个人认为一般XEN作为服务器,用到音频的非常少。(一般无需配置)
# set the real time clock to local time [default=0 i.e. set to utc]
localtime=1
设定本地时间同步,默认值为1。(一般无需特别指定配置)
# start in full screen
full-screen=1
设定是否以全屏方式启动。(一般无需特别指定配置)
对周边设备支持的参数设定
-----------------------------------------------------------------------------
# Enable USB support (specific devices specified at runtime through the monitor window)
usb=1
设定是否支持支持USB。(一般无需特别指定配置)
# Enable USB mouse support (only enable one of the following, `mouse' for PS/2 protocol relative mouse, `tablet' for absolute mouse)
usbdevice='mouse'
usbdevice='tablet'
设定支持的USB的设备。(一般无需特别指定配置)
# Set keyboard layo