xen
一、安装相关软件
rpm -ivh kernel-xen-*
rpm -ivh xen-libs-3.0.3-80.el5.i386.rpm
rpm -ivh gnome-python2-gnomekeyring-2.16.0-2.el5.i386.rpm  gnome-python2-desktop-2.16.0-2.el5.i386.rpm
rpm -ivh gnome-desktop-2.16.0-1.el5.centos.1.i386.rpm
rpm -ivh gnome-menus-2.16.0-2.fc6.i386.rpm
rpm -ivh gnome-applet-vm-0.1.2-1.el5.i386.rpm libvirt-0.3.3-14.el5.i386.rpm virt-manager-0.5.3-10.el5.i386.rpm xen-3.0.3-80.el5.i386.rpm bridge-utils-1.1-2.i386.rpm gtk-vnc-python-0.3.2-3.el5.i386.rpm python-virtinst-0.300.2-12.el5.noarch.rpm bridge-utils-1.1-2.i386.rpm python-virtinst-0.300.2-12.el5.noarch.rpm libvirt-python-0.3.3-14.el5.i386.rpm libvirt-python-0.3.3-14.el5.i386.rpm gtk-vnc-0.3.2-3.el5.i386.rpm
rpm -ivh Virtualization-en-US-5.2-11.el5.centos.noarch.rpm Virtualization-zh-CN-5.2-11.el5.centos.noarch.rpm
rpm -ivh xen-devel-3.0.3-80.el5.i386.rpm
安装时最好使用yum省事,软件也是最新少bug
二、更改grup文件
[root@Centos CentOS]# vi /etc/grub.conf
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-128.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-128.el5
        module /vmlinuz-2.6.18-128.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        module /initrd-2.6.18-128.el5xen.img
title CentOS (2.6.18-128.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        initrd /initrd-2.6.18-128.el5.img
更改完配置文件后重启机器
三、虚拟机安装操作系统
virt-install -n VMRHEL2 -r 400 --vcpus=1 -f /vmserver/VMRHEL2 -s 80 -p -l /mnt/RedhatASV4.0 --nographics
-n名称 -r内存大小单位为M -vcpus cpu个数 -f 虚拟机文件存放的位置可以是分区,我这是一个文件 -s 虚拟机的硬盘空间单位为G -l 后面是本地文件已解压开的ISO文件在安装过程中得有一个HTTP 或NFS之类的ISO文件位置
------------------------------------------相关知识------------------------------------------------------------------
挂载NFS是第一行为IP 第二行为目录如下
192.168.6.219
/qeedoodb
nfs配置
主配置该文件
/etc/exports
/qeedoodb *(ro,sync)#sync当服务端资料有变时会通知客户端
权限没有设置权限时默认权限为ro,sync
chown -R nfsnobody /qeedoodb/  允许匿名帐户写入
/qeedoodb *.exmple.com(ro,sync) server1.redhat.com(rw,sync)
/data1 192.168.0.0/255.255.255.0(sync)
exportfs -r 重新加载配置文件
在客户端机器使用showmount -e NFSserverip查看NFS的共享
mount NFSserverIP:/tmp /mnt/nfs
NFS使用RPC 管理,通知rpcinfo 查看NFS使用的相关服务及端口
[root@a211-155-229-83 ~]# rpcinfo -p localhost
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp    904  status
    100024    1   tcp    907  status
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100021    1   udp  56226  nlockmgr
    100021    3   udp  56226  nlockmgr
    100021    4   udp  56226  nlockmgr
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100021    1   tcp  51857  nlockmgr
    100021    3   tcp  51857  nlockmgr
    100021    4   tcp  51857  nlockmgr
    100005    1   udp   1011  mountd
    100005    1   tcp   1011  mountd
    100005    2   udp   1011  mountd
    100005    2   tcp   1011  mountd
    100005    3   udp   1011  mountd
    100005    3   tcp   1011  mountd
在防火墙上开放111:tcp 111:udp 1011:tcp 1011:udp 2049:tcp 2049:udp端口即可远程访问NFS
参考文档http://linux.vbird.org/linux_server/0330nfs.php
mount 211.155.229.83:/qeedoodb/439920/mcdb /mnt
chown -R nfsnobody /qeedoodb/
挂载windows的共享目录至linux
[root@localhost ~]# mount -o --username=administrator //192.168.6.176/Redhat /mnt
Password:
挂载一个ISO至文件夹
mount -o loop /qeedoodb/RHEL4.8-i386-ES-DVD.iso /mnt
--------------------------------------------------------------------------------------------------------------------------
四、xen 内存及CPU调整
vi /etc/xen/xen_vm2 编辑xen配置文件把内存及cpu个数调至和物理的差不多,之后通过如下命令动态调整CPU个数及内存
xm mem-set xen_vm2 1000
xm vcpu-set  xen_vm2 5
name = "xen_vm2"
uuid = "65ed1ddf-8f29-c024-dae8-ce7432c1e366"
maxmem = 10000
memory = 10000
vcpus = 7
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [  ]
disk = [ "tap:aio:/xen/xen_vm2,xvda,w" ]
vif = [ "mac=00:16:3e:5e:eb:72,bridge=xenbr0" ]

五、虚拟机克隆
virt-clone -o VM_3 -n VM_4 -f /vmserver/VM_4
-o原虚拟机 -n克隆的虚拟机 -f存放位置 克隆完之后需要更改下主机名为避免管理混乱(克隆机器前需要把被克隆的主机关闭掉才能克隆)
六、部分命令操作
xm list 查看正在运行的虚拟机
xm create VM_3开启VM_3机器
xm console VM_3 在实体机上进入虚拟机的控制
xm shutdown VM_3 关闭虚拟机,也可能过ssh进入虚拟机IP后 执行相关的关闭等操作
关于虚拟机的时间问题 如果实体机的时间不正确,此时更正虚拟机的时间也是白操作
七、硬盘空间的扩充
新建一块6G的设备作为XEN的磁盘
dd if=/dev/zero of=/vmserver/disk_1.img bs=1M count=6000
查看相关权限并设置相同权限
ll /vmserver/
chmod 755 disk_1.img
更改下面配置前需先关闭虚拟机,试验时,有一虚拟机未关闭加入下面选项导致不能开启
[root@Centos ~]#vi /etc/xen/VM_3
disk = [ "tap:aio:/vmserver/VM_3,xvda,w","tap:aio:/vmserver/disk_1.img,xvdb,w" ]
启动虚拟机后,fdisk -l查看新加入的虚拟机的硬盘
 
 
xen突然停止服务,机器连接不上
xen开机后的日志与dmesg日志的错误,此错误导致xen机器间隔性的突然死机问题。。
Feb  9 12:51:43 a211-155-229-83 kernel: PCI: BIOS Bug: MCFG area at e0000000 is not E820-reserved
Feb  9 12:51:43 a211-155-229-83 kernel: PCI: Not using MMCONFIG.
[root@a211-155-229-83 ~]# dmesg |grep BIOS
BIOS-provided physical RAM map:
PCI: BIOS Bug: MCFG area at e0000000 is not E820-reserved
 
方法更改/etc/grub.conf 在 module /vmlinuz-2.6.18-128.el5xen ro root=LABEL=/ 加入 pci=nommconf不让其检测
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-128.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-128.el5
        module /vmlinuz-2.6.18-128.el5xen pci=nommconf ro root=LABEL=/
        module /initrd-2.6.18-128.el5xen.img
title CentOS (2.6.18-128.el5PAE)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-128.el5PAE ro root=LABEL=/
        initrd /initrd-2.6.18-128.el5PAE.img
 
使用此方法目前已有一段没有出现问题了,现象描述为xen跟主系统争用pci资源导致系统突然访问不了,此前是周期性比较强的出现机器歇菜,有朋友说他们装xen从来就没有出现过这个问题,可能硬件不太好也有关系吧,配置是xeon 5506两颗4核的CPU 内存16G 硬盘120G  啥牌子的就不知道了,说是DELL的正牌机
 
 
[root@a211-155-229-83 ~]# xm console xen_vm1
xenconsole: Could not open tty `/dev/pts/0': No such file or directory
ps -ef|grep xenconsole查看下这个进程是否存在
/usr/sbin/xenconsoled运行下就可以了 当然如果虚拟机上没有运行什么东西可以service xend restart一把
 
 
考虑换xen为KVM了目前redhat打算在RHEL 6不再内置xen而使用KVM取而代之

参考资料
http://linux.chinaunix.net/bbs/viewthread.php?tid=1002876
基于Redhat Enterprise Linux AS 5 的XEN安装与配置
xen用户手册 Xen v3.0