通过Xen4CentOS在CentOS 6.4 上安装 Xen 4 和Libvirt

开源虚拟机 Xen 介绍:http://baike.baidu.com/view/697213.htm

Xen 现在是 CentOS 6的一部份了,由一个叫Xen4CentOS6的项目提供。
CentOS 发布了 Xen4CentOS 项目,该项目的目的是为了帮助 CentOS 5 的 Xen 用户移植到 CentOS 6,同时更新到 Xen 4 。因为 RHEL 6 不再提供 Xen,改用了 KVM,这使得 CentOS 和 Xen 用户没有更新的方法。该项目就是为了解决这个问题。

更多关于 Xen4CentOS 的介绍请看 release notes, quick start guide

先决条件
假设你对虚拟化已经有一定的理解,能分辨半虚拟化(pv)及全虚拟化(hvm),并且对 linux 的网络运作有基本认识,包括桥接工具。

阅读位于 http://wiki.centos.org/zh/Manuals/ReleaseNotes/Xen4-01 的发行注记;它们涵盖了重要的备注、已知问题、权宜之计及在何处寻求协助。
运行 Xen 监督器的主机应该是一台 CentOS-6/x86_64 的最少安装;在进行下一步之先,请确保 yum 只启用了 CentOS 的软件库,而且你已采用了最新的更新。CentOS 的 Xen4 堆栈只在 CentOS-6.4 及往后版本上进行测试及检验。
我们假设该台机器拥有 1.5GB 或更多的内存及 10GB 以上的磁盘空间供根目录 / 使用

安装 Xen4CentOS 堆栈
因为Xen 4 需要内核版本在3.4以上,所以先查看内核版本是否满足需求

uname -r

如果不满足,可以运行如下命令升级系统内核

yum update kernel

更新系统:

yum -y update

此堆栈所发行的软件已经放置于 CentOS 镜像网络内一个专用于它的软件库内。要启用这个软件库,请确保你已启用 CentOS-Extras 软件库并输入:

yum install centos-release-xen

完成后,我们便可安装 xen:

yum install xen

Xen 监督器是在 linux 内核之上运行,所以我们必须告诉 grub 先引导监督器,然后链式引导 dom0 的 linux 内核。要达至这个目的,centos-release-xen 的组件内已包含一个脚本,让我们执行它:

/usr/bin/grub-bootxen.sh

此时,假若你查看 /boot/grub/grub.conf,它应该含有类似以下的内容:

title CentOS (3.4.46-8.el6.centos.alt.x86_64)
        root (hd0,0)
        kernel /xen.gz dom0_mem=1024M,max:1024M loglvl=all guest_loglvl=all
        module /vmlinuz-3.4.46-8.el6.centos.alt.x86_64 ro root=/dev/mapper/vg_xen01-lv_root rd_LVM_LV=vg_xen01/lv_swap rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=uk rd_NO_MD LANG=en_GB rd_LVM_LV=vg_xen01/lv_root SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_DM rhgb quiet
        module /initramfs-3.4.46-8.el6.centos.alt.x86_64.img

它应该被设置为你的缺省内核。当你重新开机后,请检查运作中的内核是否 3.4:

reboot
uname -r

及检查 xen 是否在运作中:

xm info

截至此点,你已经可以创建首台虚拟机器了

创建桥接网络:
操作系统安装完成支持虚拟化相关包后,会自动建立一个名称为virbr0的虚拟网桥,在多网卡情况下,此网桥默认与eth1网卡绑定。为了向虚拟机提供联网功能,Xen使用virbr0作为默认网络设备,因此在实际应用中,需要将virbr0与连接到实际网络的网卡绑定,例如我的是eth0。

具体方法是修改/etc/sysconfig/network-scripts目录下的网卡配置文件,如绑定etho,则修改ifcfg-eth0 和ifcfg-virbr0

要实现网络共享和Xen的实例之间的分割,我们需要为CentOS6.x安装bridge-utils

安装桥接工具
除非你是用minimal版本最小安装的CentOS6.x,否则可以跳过这一步:

yum -y install bridge-utils

配置网桥
接下来,我们可以配置网桥。将当前活动网卡(通常为eth0/ eth1的wlan1/ wlan2,)的内容复制到另一个文件,并重新命名为ifcfg-br0:

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0

现在,修改新文件(ifcfg-br0)的内容类似于下面的配置:
这里最重要的设置是“Device”,“Type”这两项
vi /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE="br0"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO="none"
IPADDR="192.168.0.50" # Inherited from your current active interface.
PREFIX="24"
GATEWAY="192.168.0.1" # Inherited from your current active interface.
DNS1="8.8.8.8"
DNS2="8.8.4.4"
DEFROUTE="yes"
NAME="Bridge Network br0"

下一步,我们将上面的配置进行一些调整,以确保新的网桥配置生效。
这里最重要的设置是'Bridge'这项。
vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE="Ethernet"
#BOOTPROTO=none
#IPADDR=192.168.0.100
#PREFIX=24
#GATEWAY=192.168.0.1
#DNS1=8.8.8.8
#DNS2=8.8.4.4
#DEFROUTE=yes
NAME="Ethernet Network eth0"
BRIDGE="br0"

还有一点配置也很重要,就是禁止netmanager接管网络,因为这个工具不支持网桥管理。
在/etc/sysconfig/network-script/ifcfg-eth0中加入:

NM_CONTROLLED=no

为了确保新的网桥生效,需要重启网络:

service network restart

通过运行以下命令,检查网桥是否生效:

ifconfig br0

如果看到br0已经生效,则可以进入后面的操作

注:虚拟网桥由bridge-utils包中的brctl工具建立,这个包在安装虚拟化相关的包后自动安装, 使用brctl addbr 网桥名称可以增加网桥,使用brctl show显示已有网桥

创建虚拟机
采用 LibVirt/ Virt-install 及 Virt-Manager 来管理 xen4centos

yum install libvirt python-virtinst libvirt-daemon-xen

利用 virt-install 来安装 DomU

virt-install -d -n TestVM1 -r 2048 --vcpus=1 --disk /var/lib/libvirt/images/TestVM1.img,size=8 --nographics -p -l "http://192.168.0.10/centos/6.4/os/x86_64" --extra-args="text console=com1 utf8 console=hvc0"

我的安装命令:

virt-install -n centos_151 -r 512 --vcpus=2 -f /xen/centos_151.img -l http://192.168.1.6/soft/os/CentOS-6.3-x86_64-minimal/ --accelerate --nographics --network=bridge:br0 -s 10

在上述例子中,指令的含意包括:
-d — 侦错模式,打印大量文字及完整的设置样作侦错之用
-n TestVM1 — 虚拟机器的名称
-r 2048 — 内存大少(2048 MB,即 2 GB)
--vcpus=1 — 虚拟 CPU 的数量
--disk=/var/lib/libvirt/images/TestVM1.img,size=8 — 碟盘映像的位置及以 GB 计算的大少 …… 它可指向 LVM、等
--nographics — 由于我们的 Dom0 没有安装图像界面,因此不要采用 VNC、等
-p — 采用半虚拟化
-l "http://192.168.0.10/centos/6.4/os/x86_64" — centos 目录树的位置,也可采用 http://mirror.centos.org/centos/6/os/x86_64/ 或其它镜像。
--extra-args="text console=com1 utf8 console=hvc0" — 告诉 linux 利用 com1 和 xen 利用 hvc0,好让你能通过终端機进行文字模式安装
注:这类安装采用终端機,因此局限于文字模式的安装。

控制 DomU 虚拟机器
参考:http://www.3mu.me/%E5%9C%A8centos%E4%B8%8A%E5%AE%89%E8%A3%85%E5%92%8C%E9%85%8D%E7%BD%AExen%E5%B9%B6%E4%B8%94%E5%AE%89%E8%A3%85xen-guest/

参考资料:
Install Xen 4 with Libvirt / XL on CentOS 6 (2013):http://drewsymo.com/cloud-computing/install-xen-on-centos-and-create-a-fedora-debian-vm/
CentOS6 的 Xen4 快速入门:http://wiki.centos.org/zh/HowTos/Xen/Xen4QuickStart
CentOS 6 的 Xen4 Libvirt:http://wiki.centos.org/zh/HowTos/Xen/Xen4QuickStart/Xen4Libvirt
欢迎来到 Xen4CentOS:http://wiki.centos.org/zh/Manuals/ReleaseNotes/Xen4-01
xen 虚拟机:http://blog.chinaunix.net/uid-24485075-id-2208264.html

发表评论?

6 条评论。

  1. 晕了,理解成3.1.0了 谢谢博主

  2. 博主你好,yum update kernel之后内核版本是3.10,不是3.4以上 咋回事
    /usr/bin/grub-bootxen.sh 这个命令没改变grub.conf 跟原始系统有关吗
    原系统centos6.4 内核版本2.6

  3. yum update kernel后还需要yum -y update更新整个系统吗?

  4. 博主,你好,我是安装你的文章操作的,前面所有的都一样,当执行完reboot之后就直接黑屏了,没有反应了,不知道什么情况。我的环境:vmware 10.0 + centos 6.4_64(2G 内存,50G硬盘),请教是什么问题?

    • 您是在vmware虚拟机上安装的Xen是吗,这个我没有偿试过,我是直接在物理机上装的Xen,我不确定虚拟机上是否能再装虚拟机,您可以在一台物理机上再试试看

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据