xen 上安装虚拟服务器(制作虚拟机模版)

cd30530

贡献于2013-03-19

字数:0 关键词:

xen 上安装虚拟服务器(制作虚拟机模版) 文档版本: 修订版(2009011513) 完成时间: 2009 年 01 月 15 日 修改时间: 2010 年 04 月 18 日 修改次数: 第 3 次修改 文档编写: 郭瑞(china.guorui@gmail.com) 修改内容 2009-02-10 添加通过 vnc 安装系统 2009-12-02 增加[5.1]小节, 使用 xen 虚拟化软件安装 windows 虚拟机 增加[4.1.1] 为虚拟机增加镜像文件设备 [4.1.2] 为虚拟增加真实的硬盘设备 2010-04-18 增加[5.2]小节, 5.2 安装 windows 虚拟机时出现的问题 我们线上服务的操作系统在安装虚拟机时只是配置一下,对如何制作虚拟机模版过程不是很了解这个文档可以使大家了解如何制做虚拟机的 模板. 文档有的地方还不是很完善, 大家在操作过程中如遇到问题或错误请及时联系我, 共同进步, 共同成长! 测试环境: CPU: Intel(R) Celeron(R) CPU 420 @ 1.60GHz (cpu 不支持虚拟化) 80Gx2 硬盘 1G 内存 网卡 x2, eth0 接 192.168.7.x 网段, eth1 接 10.10.11.x 网段 操作系统为: oracle OVM 目录 1. 创建安装虚拟服务器的镜像文件 2. 安装操作系统 2.1 命令及参数 3. 对虚拟机的控制 3.1 启动虚拟机 3.2 控制虚拟机 3.3 关闭虚拟机 4. 虚拟机配置文件 4.1 为虚拟机增加硬盘设备 4.1.1 为虚拟机增加镜像文件设备 4.1.2 为虚拟机增加真实的硬盘设备 5. 通过 vnc 安装系统 5.1 安装 windows 虚拟机 5.2 安装 windows 虚拟机时出现的问题 6. xen 虚拟机配置文件内容参数介绍 7. xen 常用操作命令 附 1. 参考资料 附 2. 实验 前言 什么是全虚拟化? 全虚拟化(Full virtualization), 也称为原始虚拟化技术, 使用虚拟机协调客户操作系统和原始硬件. 这里"协调"是一个关键词, 因为 VMM 在客 户操作系统和裸硬件之间用于工作协 调. 一些受保护的指令必须由 Hypervisor(虚拟机管理程序)来捕获和处理. 因为操作系统是通过, Hypervisor 来分享底层硬件. 全虚拟化最大的优点是操作系统没有经过任何修改. 它的唯一限制是操作系统必须能够支持底层硬件. 什么是半虚拟化? 半虚拟化(Paravirtualization)是另一种类似于全虚拟化的热门技术. 它使用 Hypervisor(虚拟机管理程序)分享存取底层的硬件, 但是它的客户 操作系统集成了虚拟化方面的代码. 该方法无需重新 编译或引起陷阱, 因为操作系统自身能够与虚拟进程进行很好的协作. 半虚拟化需要客户操作系统做一些修改(配合 Hypervisor), 这是一个不足之处. 但是半虚拟化提供了与原始系统相近的性能. 如何判断服务器是否支持虚拟化 ? 运行如下命令 # egrep '(vmx|svm)' /proc/cpuinfo  1) 没有东西提示就是不支持。 2) 支持的话会有 flag : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx tm2 cx16 xtpr lahf_lm flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc up pni monitor ds_cpl vmx tm2 cx16 xtpr lahf_lm * 注: 此文档是使用 oracle OVM 为载体, 在 oracle OVM 上安装虚似操作系统. 因为 oracle OVM 本身就是 redhat+xen, oracle 对 redhat 进行改 写内核将 xen 集成到操作系统当中了. 以下是编写文档是 oracle OVM 的内核版本,可以看出 oracle OVM 也就是 Red Hat+xen:) Linux version 2.6.18-8.1.15.1.16.el5xen (mockbuild@ca-build15.us.oracle.com) (gcc version 4.1.2 20070626 (Red Hat 4.1.2-14)) #1 SMP Fri Aug 1 18:27:30 EDT 2008 文档中提到的命令以此操作系统版本为准, 对于其它操作系统版本文档中提到的命令及参数可能有差别. oracle OVM 安装好就支持 xen 服务, 接下来我们要在这个操作系统上安装我们的虚拟服务器, 安装虚拟服务器的步聚基本上为, 为虚拟服务器创建 一个虚拟硬盘. 我们通过一台 nfs 服务器挂载安装的操作系统, 我们选择使用 CentOS5.2 版本. 在 nfs 服务器上将要安装的 CentOS 5.2 版本的镜像 mount 到一个目录下, 以提供我们安装虚拟服务器使用. xen 安装支持: nfs, http, ftp 三种方式, 使用--location 来指定用那种方式来安装虚拟服务 器.文档中提到的是用 nfs 方式来安装. 说明 文档中命令行以 "#" 开头的为 root 权限 分区及目录设置: 因为我们在安装完 oracle OVM 就会创建一个/OVS 分区,/OVS 目录结构 /OVS |-- local |-- lost+found |-- remote |-- tar |-- vm |-- run |-- install_virl_server_dir 我们安装的虚拟服务器都会放到 /OVS/vm/install_virl_server_dir 目录下, 这个目录下存放虚拟服务器的镜像文件, run 存放虚拟服务器的配置文 件. 一会我们会看到最初安装完成的配置文件不在这个地方, 是在/etc/xen 目录下,需要我们手工 cp 过来. 1. 创建安装虚拟服务器的镜像文件 首先我们在 /OVS/vm 目录下创建一个目录, 因为我要安装的是一台用于 web 服务测试的虚拟服务器, 所以命 名为: v-web01, 所以创建一个 v-web01 目录. # mkdir -p /OVS/vm/v-web01 使用 dd 命令来创建一个用于安装虚拟服务器的 8G 镜像文件 # dd if=/dev/zero of=/OVS/vm/v-web01/v-web01.img bs=1024k count=8k 以上步聚做完之后就可以进行在这个虚拟的镜像文件上安装操作系统了. go on! 2. 安装操作系统 安装操作系统过程很简单, 只需要运行如下命令: # /usr/sbin/virt-install --paravirt --file=web_server/v-web01.img --name=v-web01 --ram=521 --vcpus=1 --bridge=xenbr0 --bridge=xenbr1 --nographics --location=nfs:10.10.11.16:/home/ct5 * 注: --location=nfs:10.10.11.16:/home/ct5 是我们在安装之前准备的一台 nfs 服务器, 在安装虚拟机的过程 中从这台 nfs 服务器上得到我们要安装的操作系统的安装包. 2.1 命令及参数 # /usr/sbin/virt-install 是安装虚拟操作系统的命令, 在 OVM 操作系统上是一个 shell 脚本, 可以看一下这个脚本内容,脚本首先 设置环境变量, 最终执行/opt/oracle/usr/sbin/virt-install 这个用 python 编写的安装程序. --paravirt 支持半虚拟化 --hvm 支持全虚拟化 (用于 CPU 不支持虚拟化或安装一个全虚拟化的系统) --file 指定将虚拟服务器安装到那个文件中(也就是文档中创建的镜像文件) --name 指定虚拟服务器的名字 --ram 指定虚拟服务使用的内存 使用命令: dmidecode -t memory 查看机器的实际内存,实际内存-domain 使用的内存 就是虚拟机可以分配的内存 --vcpus 指定虚拟服务器使用的 cpu --bridge 指定虚拟服务器使用的网络接口 --nographics 指定安装方法: 使用字符界面安装 --location 指定安装操作系统的安装包从什么地方取数据 --pxe 从网络安装(只支持全虚拟化) 3. 对虚拟机的控制 我们安装完虚拟机后, 会自动的将虚拟机的配置文件放到/etc/xen 下, 需要我们手工 cp 出来到/OVS/vm/run/ 目录下, 配置文件的名字要和我们安装的虚拟机的名字要一致,这是命名规范. 以免搞混.我们在附录中会给出 xm 命令的参数. 3.1 启动虚拟机 # xm create /OVS/vm/run/v-web01 3.2 控制虚拟机 通过 xm 命令进入启动后的虚拟机,可以像操作一台真实的服务器一样:) # xm console v-web01 3.3 关闭虚拟机 关闭虚拟机的方法有两种 3.3.1 正常关闭虚拟机 # xm shutdown v-web01 3.3.2 非正常关闭虚拟机 # xm dstroy v-web01 4. 虚拟机配置文件 4.1 为虚拟机增加硬盘设备 给虚拟机增加硬盘设备可以为镜像文件或真实的硬盘设备,以镜像文件为例 4.1.1 为虚拟机增加镜像文件 1) 选创建一个 5G 的镜像文件 # time dd if=/dev/zero of=v-web01-sdb.img bs=1024k count=5k 2) 修改虚拟机的配置文件 用 vi 打开虚拟机配置文件 # vi /OVS/vm/run/v-web01 找到 disk 行添加我们刚创建的镜像文件, * 注: 粗斜字体是增加的选项 disk = [ 'file:/OVS/vm/v-web01/v-web01.img,xvda,w', 'file:/OVS/vm/v-web01/v- web01-sdb.img,xvdb,w', ] 3) 重启虚拟机 使用 xm list 查看正在进行的虚拟机, 得到运行的 domain 或 id 运行 # xm reboot v-web01 4) 使用硬盘设备 登录虚拟机对 xvdb(新加的镜像在服务器中对应 xvdb 设备)进行分区创建文件系统,挂载设备到挂载 点,修改/etc/fstab 使服务器启动后自动挂载 # mkfs.ext3 /dev/xvdb # mkdir /data # mount /dev/xvdb /data # echo "/data /dev/xvdb ext3 defaults 1 2" >> /etc/fstab 4.1.2 为虚拟机增加真实的硬盘设备 1) 查看本机的硬盘设备 # fdisk -l Disk /dev/sdb: 73.5 GB, 73543163904 bytes 255 heads, 63 sectors/track, 8941 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 8941 71818551 83 Linux 2) 修改虚拟机的配置文件 linux 虚拟机: 将: disk = [ 'file:/OVS/vm/tinysquid/tinysquid1/tinysquid.img,xvda,w' 修改为 disk = [ 'file:/vs/v-web01.img,xvda,w', 'phy:/dev/sdb,xvdb,w'] windows 虚拟机 将: disk = [ 'file:/OVS/vm/tinysquid/windows2003/win2003.img,hda,w' ] 修改为 disk = [ 'file:/OVS/vm/tinysquid/windows2003/win2003.img,hda,w', 'phy:/dev/sdb,hdb,w' ] 3) 关闭并重新启动虚拟机 xm shutdown v-web01 xm create v-web01 4) 配置虚拟机的硬盘设备 linux 虚拟机: # mkfs.ext3 /dev/xvdb # mkdir /data # mount /dev/xvdb /data # echo "/data /dev/xvdb ext3 defaults 1 2" >> /etc/fstab windows 虚拟机: 使用系统管理里的磁盘管理进行分区 5. 通过 vnc 安装系统 可以在安装虚拟机时添加—vnc 和--vncport 参数使用 vnc 客户端来安装虚拟机, xen 默认只监听本机(127.0.0.1)的 vncserver,可以修改 xen 配 置文件来修改这个选项: xen 配置文件: /etc/xen/xend-config.sxp 在配置文件中修改: (vnc-listen '127.0.0.1') 为 (vnc-listen '0.0.0.0') 然后用 vrit-install 命令安装虚拟机时指定—vnc 和—vncport 参数 注意: 在使用 vnc 客户端来安装虚拟机时不能指定 –nographics 选项 例: virt-install -v --vcpus=2 -r 1024 -f /home/vos/vos1 --noapic --noacpi -c /home/iso/centos5.3 --bridge=xenbr1 –vnc --vncport=9501 可以通过用 vnc viewer 连接 172.16.0.1:9501 来安装系统 5.1 安装 windows 虚拟机 安装 windows 虚拟机只能使用全虚拟的方式, 使用服务器 cdrom 或镜像的方式安装. 通过 vnc 桌面查看器安装。 命令安装 # virt-install -v --vcpus=2 -r 2048 -f /OVS/vm/tinysquid/windows2003/win2003.img --noapic --noacpi -c \ /OVS/vm/tinysquid/windows2003/win2003sp2.iso --bridge=xenbr0 --bridge=xenbr1 --vnc –vncport=9501 2) 使用本机的 vncview 连接此服务器的 9501 端口, 通过远程桌面安装. 3) 第一次安装的 windows 虚拟机重启后, 如出现找不到 cdrom 的情况, 需要在配置文件中加入以下选项 使用服务器 cdrom: disk = [ 'file:/home/xen/xenwin.img,hda,w', 'phy:/dev/hdb,hdc:cdrom,r' ] 使用镜像文件: disk = [ 'file:/home/xen/xenwin.img,hda,w', 'file:/home/xen/Windows.iso,hdc:cdrom,r' ] 4) 使用 xm create win2003 命令重新建立此虚拟机,继续安装 配置文件安装 可以先创建一个虚拟机的配置文件,然后使用 xm create win2003 命令启动此虚拟机,通过 vnc 安装 name = "windows2003" builder = "hvm" memory = "2048" boot="dc" disk =[ 'file:/OVS/vm/tinysquid/windows2003/win2003.img,hda,w', \ 'file:/OVS/vm/tinysquid/windows2003/win2003sp2.iso,hdc:cdrom,r' ] vif = [ 'type=ioemu, mac=00:16:3e:59:15:e4, bridge=xenbr0', 'type=ioemu, mac=00:16:3e:0d:95:c6, bridge=xenbr1', ] uuid = "2193f1d5-a6e1-fcb8-fda4-8f4306645b8b" device_model = "/usr/lib/xen/bin/qemu-dm" kernel = "/usr/lib/xen/boot/hvmloader" vnc=1 vncdisplay=3601 vncunused=0 timer_mode=0 pae=1 vcpus=2 serial = "pty" # enable serial console on_reboot = 'restart' on_crash = 'restart' 5.2 安装 windows 虚拟机时出现的问题 创建好以上的配置文件后, 运行: xm create windows2003 出现以下错误: [root@guorui run]# xm create wmstest Using config file "./wmstest". Error: Domain 'wmstest' does not exist. 查看 xen 日志: less /var/log/xen/qemu-dm-windows2003.log warning: could not open /dev/net/tun: no virtual network emulation Could not initialize device 'tap' 解决方法: 给内核加入 tun 设备支持, 后再启动虚机 [root@guorui run]# insmod /lib/modules/`uname -r`/kernel/drivers/net/tun.ko 6. xen 虚拟机配置文件内容参数介绍 boot 引导参数 此参数是指定虚拟机使用软盘, 硬盘或 CD-ROM 引导, floppy(a), hard disk(c) or CD-ROM(d) 例: boot='c' vnc 控制参数 vnc 允许使用 VNC viewer 连接虚拟机, 默认为 1(允许), 0 为禁止 vncconsole 如果 vnc=1 并且 vncconsole=0 时,用户能用 vncviewer 远程连接虚拟机 vncpasswd 指定通过 vnc 连接虚拟机时的密码 vnclisten 指定 vnc server 监听的地址 7. xen 常用操作命令 brctl 是一个在虚拟化 Linux 内核里检查和配置以太网桥配置的网络工具. 例: 我在 centos 5.3 自带的 xen 3.1.2 上安装系统时,发现没有 xenbr0 这个网络设备,使用 brctl 创建即可 brctl addbr xenbr0 brctl addif xenbr0 eth0 附 1. 参考资料 [1] xen 官方网站 http://www.xen.org/ [2] kvm http://kvm.qumranet.com/kvmwiki 附 2. 实验 2.1 通过 http 方式安装虚拟机(可以支持半虚拟化) 实验的目的是为了验证 virt-install 安装程序中支持的--location 选项指出的参数是否有效: -l LOCATION, --location=LOCATION Installation source for paravirtualized guest (eg, nfs:host:/path, http://host/path, ftp://host/path) 实验过程, 我们在刚才创建好的虚拟机下搭建 apache 服务, 挂载 iso 镜像文件到一个目录下, 并设置发布目录以 给 virt-install 安装程序指定安装源. 2.2 安装 apache 服务配置发布目录 2.2.1 编译 apache 编译 apache 时使用的选项为(我使用了大多数的选项, 以后每个选项测试一下他的功能:) #./configure --prefix=/usr/local/apache --enable-modules=all --enable-mods-shared=all --enable- file-cache --enable-cache --enable-disk-cache --enable-mem-cache --enable-headers --enable- expires --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer --enable-http --enable-cgi --enable-cgid --enable- rewrite --enable-vhost-alias --enable-so * 注: 在安装服务器时将开发包全部装上后,用以上编译选择可以正常编译 2.2.2 挂载操作系统镜像 将下载的安装盘 iso 放到/home/iso 目录下, 在/mnt 下建了一个 iso 的目录,用于 mount 需要安装的操作系统 /home/iso /mnt/iso 比如我要安装的是 centos5.2,先将 centos5.2 的 dvd 下载到/home/iso 目录下, 使用 mount 挂载 # mount -o loop /home/iso/CentOS-5.2-i386-bin-DVD.iso /mnt/iso 2.2.3 修改 apache 配置文件支持别名目录 2.2.3.1 配置别名 在之间加入别名支持 alias /iso /mnt/iso 2.2.3.2 设置别名权限 对/mnt/iso 目录设定存取权限在之外加入配置项 Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all 2.2.3.3 测试别名 重启 apache 服务, 使用 http://xxx.xxx.xxx.xxx/iso 测试, 如能正确列出目录内容,说明配置成功! 2.3. 安装虚拟机 运行安装虚拟机命令[参照第 2 小节] 2.4. 实验结果 通实验我们得只 http 方式安装虚拟机支持半虚拟化和全虚拟化, ftp 方式没有实验..

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档

相关文档