二、安装Xen服务
注:这里用的系统环境是CentOS5.8。
1、查看是否已经安装
使用下面的命令检查系统是否已经安装了Xen或者查看已经安装了何种版本,以及Linux内核是否有针对Xen的补丁
查看系统没有安装xen:
[root@xen ~]# rpm -qa |grep xen
/boot目录下无xen的补丁:
[root@xen ~]# ls /boot/
config-2.6.18-308.el5 initrd-2.6.18-308.el5.img message System.map-2.6.18-308.el5
grub lost+found symvers-2.6.18-308.el5.gz vmlinuz-2.6.18-308.el5
2、安装XEN
1)安装Xen核心
注:这里我们用阿里云的镜像yum源!
[root@xen ~]#yum install xen kernel-xen
xen-3.0.3-146.el5_11 -------》Xen工具套件
kernel-xen-2.6.18-406.el5 -------》核心
virt-manager-0.6.1-16.el5 -------》虚拟化管理工具
virt-viewer-0.0.2-3.el5 -------》图形终端
2)安装图形管理工具
yum install virt-manager
yum install virt-viewer
3)查看安装后产生的内核文件
[root@xen ~]# ls /boot
config-2.6.18-308.el5 initrd-2.6.18-406.el5xen.img symvers-2.6.18-406.el5xen.gz vmlinuz-2.6.18-406.el5xen
config-2.6.18-406.el5xen lost+found System.map-2.6.18-308.el5 xen.gz-2.6.18-406.el5
grub message System.map-2.6.18-406.el5xen xen-syms-2.6.18-406.el5
initrd-2.6.18-308.el5.img symvers-2.6.18-308.el5.gz vmlinuz-2.6.18-308.el5
4)引导XENLinux的GRUB配置
(1)修改GRUB引导文件:
[root@xen ~]# cat /boot/grub/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-406.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-406.el5
module /vmlinuz-2.6.18-406.el5xen ro root=LABEL=/ rhgb quiet
module /initrd-2.6.18-406.el5xen.img
title CentOS (2.6.18-308.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-308.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-308.el5.img
(2)重启机器
[root@xen ~]# reboot
成功启动之后,查看内核的变化:
[root@xen ~]# uname -a
Linux xen 2.6.18-406.el5xen #1 SMP Tue Jun 2 18:07:09 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux
三、实例CentOS+Xen虚拟CentOS5.8
1、创建Xen虚拟系统安装树
在Xen虚拟机半虚拟环境中安装Linux虚拟系统时需要使用系统的安装树。安装树是一个包含所有的系统安装文件及相关程序的目录,这个目录可以使用http、FTP或NFS等方式提供给Xen虚拟机用于系统的安装
使用http做安装树,将Linux系统文件放在Apache目录下,为了方便这里使用将ISO文件直接挂载方式。
安装httpd服务:
[root@xen ~]# yum -y install httpd
[root@xen ~]# service httpd start
[root@xen ~]# mkdir /var/www/html/centos
[root@xen ~]# mount /dev/cdrom /var/www/html/centos/
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@xen ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.6G 3.2G 5.0G 39% /
/dev/sda1 190M 20M 161M 11% /boot
tmpfs 101M 0 101M 0% /dev/shm
none 101M 104K 101M 1% /var/lib/xenstored
/dev/hdc 4.3G 4.3G 0 100% /var/www/html/centos
测试安装树:http://服务器IP地址或域名的方式访问
2、创建Xen虚拟机
有两种方式来创建Xen虚拟机,分别为:使用字符工具virt-install创建Xen虚拟系统、使用图形工具virt-manager创建Xen虚拟系统
1)virt-manager创建Xen虚拟系统(图形界面安装)
(1)在X-Window中打开“应用程序”---》“系统工具”---》“Virtual Machine Manager”---》新建,启动创建新的虚拟系统向导:输入虚拟系统的名称如:“vm01”,单击“前进”按钮
(2)在“选择虚拟化方式”界面选择“半虚拟化”单选按钮,然后点击“前进”按钮。
(3)在“定位安装介质”界面中输入安装介质路径http://10.10.10.106/centos/,单击“前进”按钮(自动安装脚本文件,内核参数等为可选项,不填写也可以)。
(4)选择“文件镜像”单选按钮,并输入镜像文件保存位置:在“分配内存及CPU”界面中,根据实际情况为虚拟系统分配相应的内存和CPU数量。
(5)在“准备就绪,开始安装”界面中,创建向导列出以上步骤所设置的各个参数。
之后一直下一步到安装界面,安装系统完成!!!
创建虚拟系统的配置文件在/etc/xen/vm01,并自动开启虚拟系统终端,后面和正常装系统一样!!!
(注意:安装的时候,图形界面下方的下一步按钮可能显示不出来,这时可以用组合键Alt+n执行下一步!)
2)virt-install创建Xen虚拟系统(命令行安装)
可以查看命令帮助
[root@xen ~]# virt-install --help
usage: virt-install --name NAME --ram RAM STORAGE INSTALL [options]
options:
-h, --help show this help message and exit
--connect=CONNECT Connect to hypervisor with URI (使用URI连接到监控程序)
通用选项:
-n NAME, --name=NAME (客户端事件名称
-r MEMORY, --ram=MEMORY (以MB为单位为客户端事件分配的内存)
--arch=ARCH (模拟的CPU架构)
-u UUID, --uuid=UUID (客户端UUID)
--vcpus=VCPUS (配置你的客户端的vcpu数目)
--check-cpu Check that vcpus do not exceed physical CPUs and warn
if they do.
--cpuset=CPUSET Set which physical CPUs Domain can use.
例如:创建一个Xen虚拟机
[root@xen ~]#virt-install -n vm022 -f /data/vm022.img -s 4 -r 128 nographics -l http://10.10.10.106/centos/
开始安装..........................
按照提示,进行安装(后面步骤略)
四、管理Xen虚拟机
安装一个Xen虚拟机有两种方式,命令行和GUI,那么同样也可以用这两种方式来管理
1、使用字符工具管理Xen虚拟机
命令的详细使用方法可以看命令的帮助 xm -h
常见的命令有一下几个:
A:显示虚拟机运行状态 xm list B:使用文本方式连接虚拟机 xm console
C:开启虚拟系统 xm create D:关闭虚拟系统 xm shutdown
注:虚拟机和宿主机之间的切换用ctrl+](右方括号)即可。
2、图形工具virt-manager管理Xen虚拟机
在X-Window中打开“应用程序”---》“系统工具”---》“Virtual Machine Manager”
管理方式都是图形化的,不多做说明了。
3、XEN虚拟机的克隆
了解此命令virt-clone的用法
usage: virt-clone [options]
options:
-h, --help show this help message and exit
--connect=CONNECT Connect to hypervisor with URI(使用URI连接到监控程序)
通用选项:
-o ORIGINAL_GUEST, --original=ORIGINAL_GUEST
-n NEW_NAME, --name=NEW_NAME
复制XEN虚拟机实例
[root@xen ~]#virt-clone -o vm01 -n vm02 -f /data/vm02.img
启动vm02机器:
xm create vm02
如果要批量复制多个XEN虚拟机,使用shell脚本。如:要一次生成机名为vm11到vm40的虚拟机
[root@xen ~]#cat /server/scripts/clonexen.sh
#!/bin/bash
i=11
while [ $i -le $1 ]
do
/usr/bin/virt-clone -o vm01 -n vm$i -f /data/vm$i.img
echo "vm$i clone successfully."
i=$(($i+1))
done
赋予权限:chmod +x /server/scripts/clonexen.sh
执行脚本:sh /server/scripts/clonexen.sh 40
4、为XEN虚拟机增加硬备盘
关闭系统创建设备文件
xm shutdown vm02
建立设备文件
dd if=/dev/zero of=/data/vm02b.img bs=1M count=8
编辑原来配置文件,添加新磁盘文件
[root@xen ~]# cat /etc/xen/vm02
name = "vm02"
uuid = "ba6c86f3-1cbb-5781-36a2-de8574b4f5e2"
maxmem = 64
memory = 64
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [ "type=vnc,vncunused=1,keymap=en-us" ]
disk = [ "tap:aio:/data/vm02.img,xvda,w","tap:aio:/data/vm02b.img,xvdb,w" ]
vif = [ "mac=00:16:3e:7f:3d:98,bridge=virbr0,script=vif-bridge" ]
启动XEN虚拟机并登陆测试新加的磁盘
fdisk -l
fdisk /dev/xvdb
mkfs.ext3 /dev/xvdb1
mkdir -p /test/xendb
mount /dev/xvdb1 /test/sendb
5、XEN虚拟机加网卡
[root@xen xen]# cat /etc/xen/vm02
name = "vm02"
uuid = "d8a1f961-289a-80de-9584-e45479e2c5c8"
maxmem = 512
memory = 512
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [ "type=vnc,vncunused=1,keymap=en-us" ]
disk = [ "tap:aio:/data/vm02.img,xvda,w","tap:aio:/data/vm02b.img,xvdb,w" ]
vif = [ "mac=00:16:3e:7f:3d:98,bridge=virbr0,script=vif-bridge","mac=00:16:3e:7f:3d:99,bridge=virbr0,script=vif-bridge" ]
上面网卡的配置类似于VMware中的host-only,走的是NAT模式!!
或者,此时类似于VMware中的VM8(物理机和vm02能够互通):
vif = [ "mac=00:16:3e:7f:3d:98,bridge=xenbr0,script=vif-bridge","mac=00:16:3e:7f:3d:99,bridge=xenbr0,script=vif-bridge" ]
启动vm02服务,登陆vm02虚拟机查看网卡已经有两个:
xm create vm02
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3E:7F:3D:98
inet addr:192.168.122.201 Bcast:192.168.122.255 Mask:255.255.255.0
inet6 addr: fe80::216:3eff:fe7f:3d98/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:112 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6790 (6.6 KiB) TX bytes:1288 (1.2 KiB)
eth1 Link encap:Ethernet HWaddr 00:16:3E:7F:3D:99
inet addr:192.168.122.214 Bcast:192.168.122.255 Mask:255.255.255.0
inet6 addr: fe80::216:3eff:fe7f:3d99/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:98 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5720 (5.5 KiB) TX bytes:1194 (1.1 KiB)
或者,此时类似于VMware中的VM8(物理机和vm02能够互通):
vif = [ "mac=00:16:3e:7f:3d:98,bridge=xenbr0,script=vif-bridge","mac=00:16:3e:7f:3d:99,bridge=xenbr0,script=vif-bridge" ]
注:物理网卡的IP地址为10.10.10.109/24
启动vm02服务,登陆vm02虚拟机再次查看网卡已经有两个:
xm create vm02
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3E:7F:3D:98
inet addr:10.10.10.111 Bcast:10.10.10.255 Mask:255.255.255.0
inet6 addr: fe80::216:3eff:fe7f:3d98/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:43 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7363 (7.1 KiB) TX bytes:2044 (1.9 KiB)
eth1 Link encap:Ethernet HWaddr 00:16:3E:7F:3D:99
inet addr:10.10.10.112 Bcast:10.10.10.255 Mask:255.255.255.0
inet6 addr: fe80::216:3eff:fe7f:3d99/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:43 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7363 (7.1 KiB) TX bytes:1960 (1.9 KiB)
附一:centos安装vncserver
1、安装软件包
[root@xen ~]# rpm -qa |grep vnc
vnc-server-4.1.2-14.el5_6.6
vnc-4.1.2-14.el5_6.6
若是没有上面两包,则用yum -y install vnc-server vnc安装!
2、设置用户密码
[root@xen ~]# vncpasswd
设置用户密码之后会在/root目录下新建一个.vnc的隐藏目录
3、编辑服务配置文件
[root@xen ~]# tail -2 /etc/sysconfig/vncservers
VNCSERVERS="2:root"
VNCSERVERARGS[2]="-geometry 400x400 -nolisten tcp -nohttpd -localhost"
4、创建xstartup脚本
[root@xen ~]# service vncserver start
[root@xen ~]# ls .vnc/
passwd xen:2.log xen:2.pid xstartup
5、编辑xstatup文件,把红色的注释去掉
[root@xen ~]# cat .vnc/xstartup
#!/bin/sh
# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
6、重启vnc服务
[root@xen ~]# serivce vncserver restart
7、把防火墙关闭
[root@xen ~]# service iptables stop
[root@xen ~]# chkconfig iptables off
上面的配置操作完,在Windows下就可以用vnc的客户端连接服务器了!!
附二、改IP脚本
做服务的Linux主机,使用的是静态IP,XEN克隆后的主机都需要手动改IP,因此简单写一个脚本
#!/bin/bash
netmask=255.255.255.0
gateway=10.10.10.1
IP_PATH=/etc/sysconfig/network-scripts/ifcfg-eth0
GW_PATH=/etc/sysconfig/network
echo -e "Please input IP(FORMAT:10.10.10.2):\c"
read ip
##change ip address
echo "DEVICE=eth0">$IP_PATH
echo "BOOTPROTO=static">>$IP_PATH
echo "IPADDR=$ip">>$IP_PATH
echo "NETMASK=255.255.255.0">>$IP_PATH
echo "ONBOOT=yes">>$IP_PATH
##change gateway
echo "GATEWAY=$gateway" >>$GW_PATH
/etc/init.d/network restart