最近又把一些精力花在了XEN上面了,这和我另外在处理的一个邮件系统有一个间接的关系,在那里我遇到了一个间接涉及到XEN的问题。由于邮件系统我还尚未达到符合要求,待我整理完稍后刊出。以下是我对HVM功能的注释,其中加入了我个人对这些参数和配置的理解以及一些通常我会采用的方法。
首先,使用HVM方式的虚拟机,在配置文件中,应当加入以下这一段。我目前还不清晰具体。它首先是一个判断的逻辑“if:...else:...”,而arch=应该是设定体系部分,之后os.uname()我想应当是一个和内核参数有关系的调用方法。(细节我还不明白,也查阅了一些资料,目前还没有明白,请高手指点= =)。而HVM方式的虚拟机之所以和一般不同,有一个很大的区别,就是它在内核引导方面不会完全依赖宿主机的内核。(这一点在我试图在CentOS5宿主机上安装CentOS4的非HVM虚拟机而报错时尤其明显和说明问题)。我认为HVM的这个与众不同之处的特点,我认为和下面的这段是非常相关的。(非常希望了解的朋友解释一下呢!>_<)
import os, re
arch = os.uname()[4]
if re.search('64', arch):
arch_libdir = 'lib64'
else:
arch_libdir = 'lib'
内核引导参数部分:
----------------------------------------------------------------------------
# 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 layout, default is en-us keyboard.
keymap='ja'
设定键盘设备,默认是英美式键盘。(一般无需特别指定配置)
阅读(1560) | 评论(0) | 转发(0) |