【51CTO原创稿件】1、安装XEN虚拟机前的准备工作
首先介绍一下安装XEN主机的配置,它的物理机配置如下所示:
- CPU :英特尔 i5-2310
- 内存:金士顿DDR3 1333 4GB
- 主板:华硕P8H61-MLX
- 硬盘:西部数据SATA3 1T
- 系统:Centos5.8 x86_64
- 服务器IP:192.168.11.23
在安装XEN之前我们先检查一下CPU是否支持XEN虚拟化,命令如下:
egrep '(vmx|svm)' /proc/cpuinfo
如果什么结果都不显示,则表示CPU是不支持XEN虚拟化的,结果显示如下:
flags : fpu tsc msr pae cx8 apic mtrr cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc ida arat pni vmx est ssse3 cx16 sse4_1 sse4_2 popcnt lahf_lm flags : fpu tsc msr pae cx8 apic mtrr cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc ida arat pni vmx est ssse3 cx16 sse4_1 sse4_2 popcnt lahf_lm flags : fpu tsc msr pae cx8 apic mtrr cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc ida arat pni vmx est ssse3 cx16 sse4_1 sse4_2 popcnt lahf_lm flags : fpu tsc msr pae cx8 apic mtrr cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc ida arat pni vmx est ssse3 cx16 sse4_1 sse4_2 popcnt lahf_lm
2. XEN的安装过程
我们可以用以下命令来安装XEN软件,如:
yum -y install kernel-xen xen
顺利安装完Centos5.8后,我们要修改下/etc/grub.conf文件,让其采用新的内核,/etc/grub.conf文件的内容如下:
default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-308.11.1.el5xen) root (hd0,0) kernel /xen.gz-2.6.18-308.11.1.el5 module /vmlinuz-2.6.18-308.11.1.el5xen ro root=LABEL=/ module /initrd-2.6.18-308.11.1.el5xen.img title CentOS (2.6.18-238.el5) root (hd0,0) kernel /vmlinuz-2.6.18-238.el5 ro root=LABEL=/ initrd /initrd-2.6.18-238.el5.img
3. 开始安装XEN虚拟机
下面我们要安装XEN虚拟机了,安装前我们做点准备工作,搭好httpd环境,因为等会儿我们需要httpd服务,这个很容易实现,命令如下:
yum -y install httpd && service httpd start
另外,记得建一个目录以供XEN安装虚拟机使用,我这里是/data/vm;我准备安装3个XEN虚拟系统,所以我将其光盘文件用cp -a命令拷至/var/www/html/centos目录下,这些都是Linux下的基本操作,大家应该都很熟悉。如果只有iso文件,我们可以直接在Centos下用mount命令挂载,命令如下:
mount -t iso9660 -o loop,user download.iso /isoimage
1)首先安装名为vm1的Centos5.6 x86_64 XEN虚拟机,安装命令为:
virt-install -n vm0 -r 512 -f /data/vm/vm1.img -s 150 --nographics -p -l http://192.168.11.23/centos
2)安装完vm1的XEN虚拟机后,我们再接着安装一个名为vm2的XEN虚拟机,命令如下:
virt-install -n vm2 -r 512 -f /data/vm/vm2.img -s 150 --nographics -p -l http://192.168.11.23/centos
3) 我们接着安装名为vm3的XEN虚拟机,命令如下:
virt-install -n vm3 -r 256 -f /data/vm/vm3.img -s 150 --nographics -p -l http://192.168.11.23/centos
如果还需要安装其它的XEN虚拟机,可以依此步骤继续操作,最后我们可以用xm list命令来查看一下,如下所示:
Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 3933 4 r----- 32803.0 vm1 8 512 1 -b---- 16074.5 vm2 26 512 1 -b---- 13140.8 vm3 44 256 1 -b---- 7800.5 vm4 45 256 1 -b---- 8048.2 vm5 46 256 1 -b---- 5934.1
如果XEN虚拟机没有开放SSH权限,或者采用的是DHCP动态分配IP,这个时候就需要我们进入XEN主机进行管理登陆,命令如下所示:
xm console ID
此时接XEN机的名字或ID号都是可以的,console命令也可以精简为con,大家可以自行尝试,如果进入XEN控制台后想退出,可以按快捷键CTRL+]。
如果要启动名为vm1的XEN虚拟机,可以用如下命令,其他以此类推:
xm create -f /etc/xen/vm1
4. 利用XEN模板机快速克隆虚拟机
如果每次都手动一台一台地安装服务器,效率会极低,而且也很容易出现不符合规范的误操作,所以我们在生产环境下只需要安装一次XEN虚拟机,然后就此虚拟机为模板,克隆出成百上千台虚拟机用于业务,下面总结一下安装XEN模板机要注意的问题:
- 模板机的IP和主机名要避免现在或以后的线上运行的服务器不要冲突。
- 模板机应该精简不必要的服务,一般只保留network、sshd、crond等基础服务。
- 模板机要配置好帐号、snmp、nrpe、ssh、文件同步等与监控及安全相关的配置。
- 模板机应该安装好如Apache、Nginx、PHP或Java、MySQL及Varnish、memcached等常见的服务程序,想用时随时可以开启,省去了重新编译安装的时间,统一了编译参数,为以后的自动化运维做好铺垫。
- 模板机以后需要通过网络分发,所以模板机的体积不宜过大,以20GB为宜。
- 如果是大规模的部署XEN虚拟机,可以考虑搭建内网YUM源服务器,然后修改模板机的YUM源为同一内网服务器。
- 需要编写一个修改主机名及IP地址的SHELL脚本,输入IP地址和主机名后,脚本就可以自动修改这些信息。
下面我们以名为vm1的XEN为模板机来克隆名为vm6的XEN虚拟机,命令如下:
virt-clone -o vm1 -n vm6 -f /data/vm/vm6.img
克隆成功以后我们需要作主机名和IP的修改,这里用脚本来简化此工作量即可。
5. XEN虚拟机的管理
1.XEN虚拟机常用的命令为:
xm list:查看当前机器里的全部虚拟机列表。 xm help:所有可用的xm命令概述。 xm top:提供所有的虚拟机的状态概貌。 xm create xxxx:启动名字为xxx的虚拟机。 xm shutdown xxx:关闭名字为xxx的虚拟机。 xm destroy xxx:像关掉电源那样关闭名字为xx的虚拟机。 xm reboot xxx:重启名字为xxx的虚拟机。 xm pause xxx:暂停名字为xxx的虚拟机。 xm resuem xxx:继续运行名字为xxx的虚拟机。 xm save xxx:保存虚拟机状态到一个文件。 xm restore:重新启动已经保存在文件里的虚拟机。
2.如何快速的新建XEN虚拟机呢?
其实我们只需要拷贝XEN虚拟机的img镜像文件和配置文件,并修改配置文件中的镜像路径和虚拟机名称就可以了。注意要修改虚拟机的MAC地址,要不然会出现冲突。
3.让虚拟机随宿主机一起启动。
只要在/etc/xen/auto建立一个xen vm配置文件的链接就可以了,如下列命令所示:
ln -s /etc/xen/vm1 /etc/xen/auto/vm1
4. XEN虚拟机时间同步失败的解决办法
虚拟机同宿主机硬件时钟同步,本来是很方便的嘛。不过因为软件模拟中断会在负载变化的时候出现延迟,所以慢慢会跑慢了,这个时候我们可以用如下方法来解决。
我们修改/etc/sysctl.conf文件,增加内容如下所示:
xen.independent_wallclock = 1
然后执行以下命令让其立即生效,如下所示:
sysctl -p
6. XEN虚拟机的优势
XEN虚拟机的的优势有如下几点:
(1)XEN的工作原理是基于准虚拟化(半虚拟化)的,是获得最佳性能的方法,XEN虚拟化只有2%-8%的效能损耗,大家可以看一下XEN作为VPS虚拟主机的使用率。
(2)XEN虚拟机是以文件的形式存在的,所以虚拟机的迁徒和备份及恢复都是非常方便的。
(3)Linux下的各种版本自带了XEN虚拟化软件,这个跟大多数Linux系统一样是免费开源的,大家就不需要担心版权问题了。
(4)XEN利用模板功能10分钟就能克隆出一台XEN虚拟机来,在大规模的虚拟机集群部署上,我们短时间就能部署200台以上的XEN虚拟机集群,在自动化运维越来越重要的今天,这个功能非常重要。
注意:对部会会严重消耗I/O的服务,如Cache服务器、数据库服务器,不建议使用XEN虚拟机。
本文作者:余洪春(抚琴煮酒),英文名Andrew.Yu。
个人博客地址:http://andrewyu.blog.51cto.com/,
Sina微博地址:http://weibo.com/yuhongchun027。