1、安装XEN虚拟机前的准备工作首先介绍一下安装XEN主机的配置,它的物理机配置如下所示:CPU:英特尔i5-2310内存:金士顿DDR313334GB主板:华硕P8H61-MLX硬盘:西部数据SATA31T系统:Centos5.10x86_64服务器IP:192.168.11.23在安装XEN之前我们
1、安装XEN虚拟机前的准备工作
首先介绍一下安装XEN主机的配置,它的物理机配置如下所示:
CPU:英特尔 i5-2310
内存:金士顿DDR3 1333 4GB
主板:华硕P8H61-MLX
硬盘:西部数据SATA3 1T
系统:Centos5.10 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虚拟机。