XEN安装DOMU&OPENNEBULA虚拟机镜像制作
<!--@page{margin:0.79in}pre.western{font-family:"Liberation Mono",monospace}pre.cjk{font-family:"DejaVu LGC Sans Mono",monospace}pre.ctl{font-family:"Liberation Mono",monospace}p
2011-7-7
参考资料
TheBook of Xen
http://blog.chinaunix.net/space.php?uid=25573859&do=blog&id=186783
http://server.it168.com/a2009/0715/606/000000606641.shtml
http://www.vpsee.com/2011/04/how-to-create-a-xen-file-image-faster/
http://www.vpsee.com/2009/07/install-xen-on-centos/
http://www.nginxs.com/linux/13.html
http://blog.csdn.net/sploving/article/details/5965173
需要了解的概念
XEN的全虚拟化与半虚拟化
第一部分XEN安装DOMU
一、用virt-install工具创建DOMU可以理解为GUEST,安装GUESTOS-(GUESTOS为CentOS,网络上多以CentOS为例因为CentOS有现成的网络安装环境和Xen化内核)
virt-install -n centos -r 256 -f /vm/centos.img -s 4 --nographics -p -l http://127.0.0.1/centos -n DOMU名称 -r 内存大小 -f 磁盘文件 -s 磁盘文件大小,单位为GB -p 半虚拟化 -l 安装源( 本地绝对路径、nfs路径、 http路径、ftp路径 ) (常见系统网络源,仅作参考2011-7-7 DebianUbuntu http://ftp.us.debian.org/debian/dists/Debian6.0.2/main/installer-amd64/ Fedora http://ftp.rhd.ru/pub/fedora/linux/releases/14/Fedora/x86_64/os/ Suse http://download.opensuse.org/distribution/11.4/repo/oss/ Mandriva ftp://ftp.uwsg.indiana.edu/linux/mandrake/official/2010.2/i586/ 推荐中科大开源软件镜像站或国内其它镜像站 http://mirrors.ustc.edu.cn/ 比如centos5.6 i386安装源 http://mirrors.ustc.edu.cn/centos/5.6/os/i386/ ) virt-install命令详细参数查看man virt-install
需要注意的是上面如果是-p(paravirtualized)的话就不能直接从iso文件安装,必须把iso文件解出来后放到一个http/ftp服务器上安装,只有fullyvirtualized 的才可以从iso文件、CD-ROM等安装。还要注意的是,paravirtualized需要修改过的操作系统内核,所以不能安装Windows,fullyvirtualized 可以用来安装Windows只要CPU支持Virtualization(IntelVT or AMD V)。所以这里需要先安装和配置一个web服务器,然后把iso文件解压到web服务器能访问的目录下(http://127.0.0.1/centos)。如果网速够快,可以从Internet上直接安装,把http://127.0.0.1/centos换成http://mirrors.kernel.org/centos/5.3/os/i386或者中科大的镜像站,当然在本地的速度最快,另外安装过程中,选择安装方式为HTTP,要指定系统文件路径的时候用127.0.0.1会提示找不到文件,这时要使用本机的IP,比如我的机器是192.168.1.109
随后在/vm目录下生成centos的磁盘镜像文件,并默认在/etc/xen下生成名称为centos的配置文件内容为
name= "centos"
uuid= "7fb94c00-885d-9fe5-c2bd-b124d4f19c11"
maxmem= 256
memory= 256
vcpus= 1
bootloader= "/usr/bin/pygrub"
on_poweroff= "destroy"
on_reboot= "restart"
on_crash= "restart"
disk= [ "tap:aio:/vm/centos.img,xvda,w" ]
vif= [ "mac=00:16:36:58:19:77,bridge=xenbr0,script=vif-bridge"]
其中
vcpus为虚拟cpu个数
bootloader为引导管理器
destroy为销毁虚拟机
磁盘类型tap:aio参考http://server.it168.com/a2009/0715/606/000000606641.shtml和TheBook of Xen
有些情况下,你要使用的磁盘镜像文件是来自另一种虚拟化环境,可能是VMware环境下的一个vmdk-file,也可能是Qemu环境下的一个qcow文件或者其它文件。要使用这些文件,你必须“tap”磁盘镜像。如下命令行是使用VMware环境下的vmdk-file的语句:
disk=[’tap:vmdk:/var/lib/xen/server1.vmdk,hda,w’, ]
Xen磁盘镜像文件是一种特殊的tap设备,它使用的是xenblktap内核模块。这个模块允许在完全虚拟化环境下作为准虚拟设备处理磁盘镜像文件。要使用这个模块,你需要有aio类型的设备。磁盘镜像文件本身可能是一个由dd命令创建的普通磁盘镜像文件。要在配置文件中使用那种设备类型,可以使用如下语句:
disk=[’tap:aio:/var/lib/xen/server2.img,xvda,w’, ]
mac地址自动生成
配置文件详细参数查看TheBook of Xen
随后的整个过程是GuestOS的安装过程,这里就是CentOS。当安装成功重启后,并不会直接进入GuestOS,如果要访问GuestOS,可以用xmconsole centos 或者知道IP的情况下用sshroot@<IP地址>
xmconsole访问时,用Ctrl+ ]回到host。
ssh访问时exit回到host。
如果想每次启动host时自动启动guest的话,做对配置文件符号链接到/etc/xen/auto目录下,或将配置文件放在该目录下
ln -s /etc/xen/centos /etc/xen/auto
二、xm直接创建DOMU
GUESTOS为CentOS
准备工作
1虚拟机硬盘
2GUEST系统启动文件
3虚拟机配置文件
4创建虚拟机,指定安装源安装系统
1虚拟机硬盘
用dd命令,从/dev/zero获得全零文件,这里大小为10G
ddif=/dev/zero of=centos.img oflag=direct bs=1M count=10240
dd参数查看mandd
2GUEST系统启动文件
vmlinuz和initrd.img用以启动Guest进而启动安装程序
wgethttp://mirror.centos.org/centos/5.6/os/x86_64/images/xen/vmlinuz
wgethttp://mirror.centos.org/centos/5.6/os/x86_64/images/xen/initrd.img
推荐使用中科大源:
wgethttp://centos.ustc.edu.cn/centos/5.6/os/x86_64/images/xen/vmlinuz
wgethttp://centos.ustc.edu.cn/centos/5.6/os/x86_64/images/xen/initrd.img
3虚拟配置文件vimcentos
kernel="/vmcentos/vmlinuz"
ramdisk="/vmcentos/initrd.img"
name="centos"
memory="512"
disk=['tap:aio:/vmcentos/centos.img,xvda,w',]
vif=['bridge=virbr0',]
vcpus=1
on_reboot='destroy'
on_crash='destroy'
假设第2步的两个文件放在/vmcentos目录下,则kernel与ramdisk路径如上面所示。另外,配置文件所有涉及到的路径,不能使用相对路径,只能使用绝对路径
4创建虚拟机,指定安装源安装系统
首先xmcreate centos创建DOMU
xmlist可以查看DOMU状态
其次xmconsole centos访问GUEST启动GUEST进而启动安装程序
选择安装方式时,选择HTTP,安装源HOST为mirror.centos.org或者中科大centos.ustc.edu.cn,目录为centos/5.6/os/x86_64
如果在本地局域网配置了WEB服务器比如192.168.1.109的机器为服务器并且已将CENTOS光盘下的文件拷贝到虚拟目录下的某个目录下假设这里为/var/www/html的目录下的centos目录下,则安装源选择192.168.1.109,目录为centos。推荐使用本地WEB服务器。
文本界面的最后一步是选择图形化安装模式还是文本安装模式。如果你选择了图形化安装,你需要根据提示,利用“应用程序”菜单中的“互联网”>“远程桌面查看器”来查看图形界面,通常的协议是VNC,地址根据文本界面给出的提示填写。接下来是系统的安装过程。
在安装结束的时候,要求重启虚拟机,选择重启,由于上面配置文件中on_reboot='destroy'则重启意味虚拟机销毁,当然配置文件和硬盘镜像并没有删除,这时修改配置文件重新创建GUEST
修改配置文件
bootloader="/usr/bin/pygrub"
name="centos"
memory="512"
disk=['tap:aio:/vmcentos/centos.img,xvda,w']
vif=['bridge=virbr0',]
vcpus=1
on_reboot='restart'
on_crash='destroy'
on_poweroff='destroy'
用xmcreate centos创建DOMU即GUEST
安装好的CentOS的DomU默认只有文本界面,通过xmconsole进行绑定控制台。如果你想使用图形界面需要修改配置文件。首先在DomU的文件系统中,另外需要修改GUESTOS的启动级别,让他能够启动到图形界面,通常这个级别是5,而文本界面的启动级别是3,这个设置在/etc/inittab文件中。
另外,对于DomU的配置文件,我们还需要添加一个虚拟显卡,这个显卡可以挂载VNC上,然后通过VNC输出。因此,我们需要在配置文件中添加一行:
vfb=['type=vnc,vncunused=1,vnclisten=0.0.0.0,keymap=en-us']
之后我们可以通过VNC客户端进行查看,IP地址是Dom0的IP地址。当然可能运行多个DomU会使用不同的端口号,如果你不确定端口号,可以通过xmvncviewer centos来确认一下。端口号可以用port指定,也可以由自动生成,一般为基本端口号加上虚拟机ID号,详细说明见TheBook of Xen。
Ubuntu安装vnc
apt-getinstall vnc4server
apt-getinstall vncviewer
Centos安装vnc
yuminstall vnc
三、安装hvmDOMU
GUESTOS为ubuntu
准备工作
1虚拟机硬盘
2虚拟机配置文件及设置安装源(这里是ubuntu安装光盘)
3创建虚拟机并安装系统
1虚拟机硬盘
ddif=/dev/zero of=/vm/ubuntu.img bs=1k seek=10000k count=1
参数
bs=BYTES
forceibs=BYTES and obs=BYTES 每次读写字节数
seek=BLOCKS
skipBLOCKS obs-sized blocks at start of output 输出时跳过每次写的字节数
这里每次读写1KB,输出到ubuntu.img时,每次跳过10000k个1KB,共10000000KB,按千进制算即10G。
详细参数见mandd
2虚拟机配置文件ubuntu及设置安装源
kernel= "/usr/lib/xen/boot/hvmloader"
builder='hvm'
memory= 512
vcpus=1
name= "ubuntu"
disk= [ 'file:/vm/ubuntu.img,ioemu:hda,w',
'file:/vm/ubuntu-10.10-server-i386.iso,ioemu:hdc:cdrom,r']
vif= [ 'type=ioemu, bridge=virbr0' ]
usbdevice='tablet'
on_poweroff= 'destroy'
on_reboot = 'destroy'
on_crash = 'destroy'
boot='d'
vnc=1
sdl=0
vncdisplay=3
importos, re
arch= os.uname()[4]
ifre.search('64', arch):
arch_libdir ='lib64'
else:
arch_libdir ='lib'
device_model= '/usr/' + arch_libdir + '/xen/bin/qemu-dm'
这里boot为启动顺序,a、b为软盘,c为硬盘、d为光驱
disk= [ 'file:/vm/ubuntu.img,ioemu:hda,w',
'file:/vm/ubuntu-10.10-server-i386.iso,ioemu:hdc:cdrom,r']
这里将安装源作为GUEST的光驱加载,file为设备类型是文件,磁盘设备类型及Xen配置文件详解见TheBook of Xen。
3创建虚拟机并安装系统
用xmcreate ubuntu创建DOMU
用xmlist查看虚拟机状态
这里不要用xmconsole 访问虚拟机,如果用xmconsole访问出现错误
xenconsole:Could not read tty from store: No such file or directory
原因还不清楚,可能跟下面几行设置有关:
vnc=1
sdl=0
vncdisplay=3
这里vncdisplay为端口号,虚拟显卡的设置可参照TheBook of Xen或Xen官方网站,二中最后也提到了虚拟显卡设置的语句
vfb=['type=vnc,vncunused=1,vnclisten=0.0.0.0,keymap=en-us']
二与三中图形显示部分的设置的区别还不清楚。
这里用vncviewer127.0.0.1:3,此处用127.0.0.1而不用本机(这里指DOM0)IP,因为这里没有设置vnclisten,所以其默认为127.0.0.1。
连接到ubuntu后,发现没有eth0设备只有回环设备,可能跟虚拟机的网络配置有关系。
接下来就是安装系统的过程,由于这里安装的是server版本,安装过程中是图形界面,安装成功后是没有XWINDOWS的。
这里安装完毕后要修改配置文件,并重新创建虚拟机
重启on_reboot = 'destroy' 即销毁虚拟机,修改配置文件ubuntu
kernel= "/usr/lib/xen/boot/hvmloader"
builder='hvm'
memory= 512
vcpus=1
name= "ubuntu"
disk= [ 'file:/vm/ubuntu.img,ioemu:hda,w',
'file:/vm/ubuntu-10.10-server-i386.iso,ioemu:hdc:cdrom,r']
vif= [ 'type=ioemu, bridge=virbr0' ]
usbdevice='tablet'
on_poweroff= 'destroy'
on_reboot = 'restart'
on_crash = 'destroy'
boot='c'
vnc=1
sdl=0
vncdisplay=3
importos, re
arch= os.uname()[4]
ifre.search('64', arch):
arch_libdir ='lib64'
else:
arch_libdir ='lib'
device_model= '/usr/' + arch_libdir + '/xen/bin/qemu-dm'
这里主要更改boot的值为c,即从虚拟硬盘启动,如果是cd则启动顺序为硬盘、光驱,与物理机类似,另外将on_boot设为restart,即重启后并不销毁(cleanup)虚拟机。
接下来再访问仍然用vncviewer127.0.0.1:3
这里配置文件与前面的有很多不同,比如最后还要判断并指定32位库或64位库的位置,这里需要理解全虚拟化与半虚拟化的区别,并了解这两种方式配置文件的区别。
前面三种方式不仅完成虚拟机镜像制作而且完成了虚拟机DOMU的创建,对于虚拟机镜像的创建,还有xen-create-image命令创建虚拟机镜像参照
http://www.linux.com/community/blogs/Xen-Create-a-Jaunty-DomU-using-xen-create-image.html
所有GuestOS
root
123456
如果是debian系统非超级用户
debian
123456
其它类似如ubuntu
ubuntu
123456
第二部分OPENNEBULA虚拟机镜像制作
第一部分三种方式及xen-create-image命令创建完成后的虚拟机镜像均可以直接拿来给OPENNEBULA用,不过需要修改配置文件为OPENNEBULA的配置文件。
http://www.opennebula.org/documentation:rel2.2:vm_guide
http://www.opennebula.org/documentation:rel2.2:template
现在以第一部分第一个镜像为例
其xen的配置文件为
name= "centos"
uuid= "7fb94c00-885d-9fe5-c2bd-b124d4f19c11"
maxmem= 256
memory= 256
vcpus= 1
bootloader= "/usr/bin/pygrub"
on_poweroff= "destroy"
on_reboot= "restart"
on_crash= "restart"
disk= [ "tap:aio:/vm/centos.img,xvda,w" ]
vif= [ "mac=00:16:36:58:19:77,bridge=xenbr0,script=vif-bridge"]
其OPENNEBULA的虚拟机配置文件为
NAME = centos
CPU = 1
MEMORY= 256
OS = [ bootloader = "/usr/bin/pygrub" ]
DISK = [
source ="/fromxenvm/centos.img",
target = "xvda",
readonly = "no"]
NIC = [ NETWORK = "Small network" ]
这里的NIC使用OPENNEBULA的名称为Smallnetwork的虚拟网络,其与Xen的虚拟网络的关系还不清楚。第一部分第二个镜像对应的OPENNEBULA的虚拟机配置文件与上面类似,第三个hvm方式的配置文件很多参数要有不同,这里还不清楚。(待续)
官方网站http://opennebula.org/documentation:rel2.2:vmg提供的ttylinux镜像文件是KVM镜像.这里制作ttylinux在xen上的hvm镜像
制作方法同上面第二部分第三种方式,虚拟机硬盘大小为50M
安装系统配置文件
kernel="/usr/lib/xen/boot/hvmloader"
builder='hvm'
memory= 64
vcpus=1
name= "ttylinux"
disk= [ 'file:/vm/xenttylinux.img,ioemu:hda,w',
'file:/home/ut-ttylinux-i686-12.6.iso,ioemu:hdc:cdrom,r']
vif= [ 'type=ioemu, mac=03:64:fa:86:98:3f, bridge=virbr0,model=ne2k_pci' ]
on_poweroff= 'destroy'
on_reboot = 'destroy'
on_crash = 'destroy'
boot='d'
vnc=1
sdl=0
vncdisplay=4
vnclisten="0.0.0.0"
importos, re
arch= os.uname()[4]
ifre.search('64', arch):
arch_libdir ='lib64'
else:
arch_libdir ='lib'
device_model= '/usr/' + arch_libdir + '/xen/bin/qemu-dm'
vnclisten的值为0.0.0.0,vnc服务器允许监听的有效IP地址为所有。宿主机IP为192.168.1.102,这里可以用vncviewer192.168.1.102:4访问虚拟机。
运行时配置文件
kernel="/usr/lib/xen/boot/hvmloader"
builder='hvm'
memory= 64
vcpus=1
name= "ttylinux"
disk= [ 'file:/vm/xenttylinux.img,ioemu:hda,w' ]
vif= [ 'type=ioemu, mac=03:64:fa:86:98:3f, bridge=virbr0,model=ne2k_pci' ]
on_poweroff= 'destroy'
on_reboot = 'restart'
on_crash = 'destroy'
boot='c'
vnc=1
sdl=0
vncdisplay=4
vnclisten="0.0.0.0"
importos, re
arch= os.uname()[4]
ifre.search('64', arch):
arch_libdir ='lib64'
else:
arch_libdir ='lib'
device_model= '/usr/' + arch_libdir + '/xen/bin/qemu-dm'
另外在系统的安装过程中,首先进入的光盘装载的系统,这时候安装系统到硬盘,需要用fdisk格式化硬盘
例如本例硬盘为hda,则
fdisk/dev/hda
fdisk命令可查看帮助
然后从光盘安装系统到硬盘
ttylinux-install-m /dev/hdc /dev/hda
中间会提示是否格式化分区,是否安装引导管理器LILO等,详细安装过程见ttylinuxUser Guide。
更多推荐
所有评论(0)