设为首页 收藏本站
查看: 1168|回复: 0

[经验分享] XEN安装DOMU&OPENNEBULA虚拟机镜像制作

[复制链接]

尚未签到

发表于 2015-10-11 13:45:17 | 显示全部楼层 |阅读模式
2011-7-7
参考资料
TheBook of Xen
http://blog.iyunv.com/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.iyunv.com/sploving/article/details/5965173



需要了解的概念
XEN的全虚拟化与半虚拟化



第一部分XEN安装DOMU



一、用virt-install工具创建DOMU可以理解为GUEST,安装GUESTOS-(GUESTOSCentOS,网络上多以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



需要注意的是上面如果是-pparavirtualized)的话就不能直接从iso文件安装,必须把iso文件解出来后放到一个http/ftp服务器上安装,只有fullyvirtualized
的才可以从iso文件、CD-ROM等安装。还要注意的是,paravirtualized需要修改过的操作系统内核,所以不能安装Windowsfullyvirtualized
可以用来安装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.shtmlTheBook
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&#43;
]
回到host
ssh访问时exit回到host
如果想每次启动host时自动启动guest的话,做对配置文件符号链接到/etc/xen/auto目录下,或将配置文件放在该目录下

ln -s /etc/xen/centos /etc/xen/auto



二、xm直接创建DOMU
GUESTOSCentOS
准备工作
1虚拟机硬盘
2GUEST系统启动文件
3虚拟机配置文件
4创建虚拟机,指定安装源安装系统



1虚拟机硬盘
dd命令,从/dev/zero获得全零文件,这里大小为10G
ddif=/dev/zero of=centos.img oflag=direct bs=1M count=10240
dd参数查看mandd



2GUEST系统启动文件
vmlinuzinitrd.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=&quot;/vmcentos/vmlinuz&quot;
ramdisk=&quot;/vmcentos/initrd.img&quot;
name=&quot;centos&quot;
memory=&quot;512&quot;
disk=['tap:aio:/vmcentos/centos.img,xvda,w',]
vif=['bridge=virbr0',]
vcpus=1
on_reboot='destroy'
on_crash='destroy'



假设第2步的两个文件放在/vmcentos目录下,则kernelramdisk路径如上面所示。另外,配置文件所有涉及到的路径,不能使用相对路径,只能使用绝对路径



4创建虚拟机,指定安装源安装系统
首先xmcreate
centos
创建DOMU

xmlist可以查看DOMU状态
其次xmconsole
centos
访问GUEST启动GUEST进而启动安装程序

选择安装方式时,选择HTTP,安装源HOSTmirror.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=&quot;/usr/bin/pygrub&quot;
name=&quot;centos&quot;
memory=&quot;512&quot;
disk=['tap:aio:/vmcentos/centos.img,xvda,w']
vif=['bridge=virbr0',]
vcpus=1
on_reboot='restart'
on_crash='destroy'
on_poweroff='destroy'



xmcreate centos创建DOMUGUEST



安装好的CentOSDomU默认只有文本界面,通过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地址是Dom0IP地址。当然可能运行多个DomU会使用不同的端口号,如果你不确定端口号,可以通过xmvncviewer
centos
来确认一下。端口号可以用port指定,也可以由自动生成,一般为基本端口号加上虚拟机ID号,详细说明见TheBook
of Xen

Ubuntu安装vnc
apt-getinstall vnc4server
apt-getinstall vncviewer
Centos安装vnc
yuminstall vnc



三、安装hvmDOMU
GUESTOSubuntu
准备工作
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时,每次跳过10000k1KB,共10000000KB,按千进制算即10G
详细参数见mandd



2虚拟机配置文件ubuntu及设置安装源
kernel= &quot;/usr/lib/xen/boot/hvmloader&quot;

builder='hvm'
memory= 512

vcpus=1
name= &quot;ubuntu&quot;

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/' &#43; arch_libdir &#43; '/xen/bin/qemu-dm'




这里boot为启动顺序,ab为软盘,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= &quot;/usr/lib/xen/boot/hvmloader&quot;

builder='hvm'
memory= 512

vcpus=1
name= &quot;ubuntu&quot;

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/' &#43; arch_libdir &#43; '/xen/bin/qemu-dm'

这里主要更改boot的&#20540;为c,即从虚拟硬盘启动,如果是cd则启动顺序为硬盘、光驱,与物理机类&#20284;,另外将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
其它类&#20284;如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= &quot;centos&quot;

uuid= &quot;7fb94c00-885d-9fe5-c2bd-b124d4f19c11&quot;

maxmem= 256

memory= 256

vcpus= 1

bootloader= &quot;/usr/bin/pygrub&quot;

on_poweroff= &quot;destroy&quot;

on_reboot= &quot;restart&quot;

on_crash= &quot;restart&quot;

disk= [ &quot;tap:aio:/vm/centos.img,xvda,w&quot; ]

vif= [ &quot;mac=00:16:36:58:19:77,bridge=xenbr0,script=vif-bridge&quot;]




OPENNEBULA的虚拟机配置文件为
NAME = centos
CPU = 1

MEMORY= 256




OS = [ bootloader = &quot;/usr/bin/pygrub&quot; ]

DISK = [

source =&quot;/fromxenvm/centos.img&quot;,

target = &quot;xvda&quot;,
readonly = &quot;no&quot;]




NIC = [ NETWORK = &quot;Small network&quot; ]




这里的NIC使用OPENNEBULA的名称为Smallnetwork的虚拟网络,其与Xen的虚拟网络的关系还不清楚。第一部分第二个镜像对应的OPENNEBULA的虚拟机配置文件与上面类&#20284;,第三个hvm方式的配置文件很多参数要有不同,这里还不清楚。(待续)
官方网站http://opennebula.org/documentation:rel2.2:vmg提供的ttylinux镜像文件是KVM镜像.这里制作ttylinuxxen上的hvm镜像
制作方法同上面第二部分第三种方式,虚拟机硬盘大小为50M
安装系统配置文件
kernel=&quot;/usr/lib/xen/boot/hvmloader&quot;
builder='hvm'
memory= 64

vcpus=1
name= &quot;ttylinux&quot;

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=&quot;0.0.0.0&quot;
importos, re

arch= os.uname()[4]

ifre.search('64', arch):

arch_libdir ='lib64'

else:
arch_libdir ='lib'

device_model= '/usr/' &#43; arch_libdir &#43; '/xen/bin/qemu-dm'




vnclisten的&#20540;为0.0.0.0vnc服务器允许监听的有效IP地址为所有。宿主机IP192.168.1.102,这里可以用vncviewer192.168.1.102:4访问虚拟机。
运行时配置文件
kernel=&quot;/usr/lib/xen/boot/hvmloader&quot;
builder='hvm'
memory= 64

vcpus=1
name= &quot;ttylinux&quot;

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=&quot;0.0.0.0&quot;
importos, re

arch= os.uname()[4]

ifre.search('64', arch):

arch_libdir ='lib64'

else:
arch_libdir ='lib'

device_model= '/usr/' &#43; arch_libdir &#43; '/xen/bin/qemu-dm'




另外在系统的安装过程中,首先进入的光盘装载的系统,这时候安装系统到硬盘,需要用fdisk&#26684;式化硬盘
例如本例硬盘为hda,则
fdisk/dev/hda
fdisk命令可查看帮助
然后从光盘安装系统到硬盘
ttylinux-install-m /dev/hdc /dev/hda
中间会提示是否&#26684;式化分区,是否安装引导管理器LILO等,详细安装过程见ttylinuxUser
Guide







版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-125480-1-1.html 上篇帖子: XEN passthrough NIC on SuSE 下篇帖子: Virtualization in Xen 3.0
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表