在 CentOS 5.5 上升级 Xen 到 Xen 3.4.3

2008年 RedHat 收购 Qumranet 以后就一直在家搞他的 KVM,没有对 Xen 做任何升级,RHEL/CentOS 5.5 上默认的 Xen 依旧是很老很老的公元2007年发布的 Xen 3.1.2 版本。更糟糕的是 RedHat 在后续的 RedHat Enterprise Linux 6 里彻底放弃了 Xen. 如果以后想在新版本的 RHEL/CentOS 上用 Xen 的话就需要使用第三方源或者自己动手编译 Xen 源代码。自己编译源代码问题多多,看看前面那篇文章留下的150多个评论就知道会遇到多少麻烦了,所以没有特殊要求的话,VPSee 还是建议直接使用第三方源。

# cd /etc/yum.repos.d/
# wget http://www.gitco.de/repo/GITCO-XEN3.4.3_x86_64.repo
# yum update
# reboot

如果上面的 yum update 没问题的话重启系统就可以了进入 xen 3.4.3 了,如果有问题导致一些依赖需要解决的话可以彻底删除 xen 后重新升级安装:

# yum groupremove Virtualization
# yum groupinstall Virtualization
# reboot

在重启之前最好检查一下 grub 是否配置正确、默认启动是否是 xen.gz-3.4.3:

# vi /boot/grub/menu.lst
...
title CentOS (2.6.18-194.26.1.el5xen)
        root (hd0,0)
        kernel /xen.gz-3.4.3
        module /vmlinuz-2.6.18-194.26.1.el5xen ro root=LABEL=/
        module /initrd-2.6.18-194.26.1.el5xen.img
...

评论 (70 Comments)

  1. 可以告知下gmail地址么?站内找不到地址到底贴在那里,只有看到gmail在线与否的提示

  2. 我有一个问题想问问楼主,
    有这样一个环境:刚刚装好了Xen,其它虚拟操作系统还没装,也就是说只有Dom0在运行。打开“virtual Machine Manage”时,发现dom0占用了很大一块内存,相当于整机系统内存的四分之三的样子。比方说机器是2G内存,dom0就有1.4G。当我想新建一个虚拟操作系统时,给他设定为512M内存,发现localhost使用内存就变成了1.9G,按照这样的逻辑,如果我设置新建虚拟操作系统内存为1G时,会出现问题,对不?为什么dom0一开始就占用了那么大的内存?
    我现在新建操作系统时总是提示out of memory
    我菜鸟啊,求解。多谢

  3. 另,我是要虚拟CentOS系统,设置了512M内存,安装极慢.

  4. 你需要 “限制 Xen Dom0 的内存”。

  5. 请问vpsee,32位的CentOS能否安装这个Xen3.4.3的源呢?

  6. 不能,都是 x86_64.repo 的。

  7. KVM都进了 Linux 的内核了,看来 Xen 的日子不好过呀。请问 vpsee ,您对 Xen 的未来如何看?你们有计划用 KVM 来代替 Xen 吗?

  8. 呵呵,xen 的未来?这是一个很大的话题阿,现在工业界都在讨论这个问题,kvm 发展非常快,而且 kernel 社区和 redhat, ubuntu 的支持很有分量,kvm 能得到 linux 社区的欢迎是因为运行 kvm 的 linux 依然是 linux,而运行 xen 的 linux 理论上应该不叫 “linux” 了,因为首先启动的是 xen hypervisor, 不是 linux kernel,所以 kernel 社区不愿意把 xen 加入内核树,靠 linux 谋取利润的公司也不愿意看到基于 linux 的生态环境被破坏,极力想维护食物链。

    虽然 kvm 发展很快,但是在数据中心业务上还不及 xen,我们目前没有计划替代 xen.

  9. 请问一下:如何升级xen内核,例如我想把 initrd-2.6.18-194.el5xen.img 升级到更高的版本怎么办???
    谢谢~

  10. @janson
    可以参考这篇:在 CentOS 下源码安装最新的 Xen 版本

  11. vpsee,您好,我看了下那网站上还有Xen4.0的rpm包,请问CentOS5.5安装这些是否有问题呢

  12. @Anonymous
    可以安装,不过 test 版本用的时候要小心。。。

  13. 如何查看Centos上的xen版本?
    我是安装的5.5版本,我想知道通过什么命令可以查看xen版本,谢谢~

  14. @Anonymous
    # xm info

    xen_major : 4
    xen_minor : 0
    xen_extra : .1

  15. 你好,请问哪里有xen4.0的rpm包可以下载?下载哪些?
    我想偷懒下,怕编译什么的出错。。
    偶的centos不能上网,只能下载好,传到centos上

  16. yum update出问题,请问如何解决,比较紧急,谢谢~~
    Downloading Packages:
    Running rpm_check_debug
    Running Transaction Test
    Finished Transaction Test

    Transaction Check Error:
    file /etc/libvirt/libvirtd.conf from install of libvirt-0.7.0-6.el5.x86_64 conflicts with file from package libvirt-0.6.3-33.el5.i386
    file /etc/libvirt/qemu.conf from install of libvirt-0.7.0-6.el5.x86_64 conflicts with file from package libvirt-0.6.3-33.el5.i386
    file /etc/rc.d/init.d/libvirtd from install of libvirt-0.7.0-6.el5.x86_64 conflicts with file from package libvirt-0.6.3-33.el5.i386
    file /usr/share/augeas/lenses/libvirtd_qemu.aug from install of libvirt-0.7.0-6.el5.x86_64 conflicts with file from package libvirt-0.6.3-33.el5.i386
    file /usr/share/augeas/lenses/tests/test_libvirtd_qemu.aug from install of libvirt-0.7.0-6.el5.x86_64 conflicts with file from package libvirt-0.6.3-33.el5.i386
    file /usr/share/libvirt/schemas/capability.rng from install of libvirt-client-0.7.0-6.el5.x86_64 conflicts with file from package libvirt-0.6.3-33.el5.i386
    file /usr/share/libvirt/schemas/domain.rng from install of libvirt-client-0.7.0-6.el5.x86_64 conflicts with file from package libvirt-0.6.3-33.el5.i386
    file /usr/share/libvirt/schemas/network.rng from install of libvirt-client-0.7.0-6.el5.x86_64 conflicts with file from package libvirt-0.6.3-33.el5.i386

  17. @Anonymous
    http://www.gitco.de/repo/xen4.0.1/ 里有下载。

  18. @Anonymous
    你下载的是 x86_64 版本的 xen 和 libvirt,但是你的系统是 i386 版本的 centos 和 i386 版本的 libvirt,所以需要先把系统换到 x86_64 再安装。

  19. @vpsee 我想问问xen 升级到这个3.4版本后,对于虚拟磁盘的大小有限制吗?我单位服务器采用vmware,用文件模式做磁盘。最大限制是950G

  20. @babo
    虚拟机 os image 就是一个文件,应该受 linux 文件系统对单个文件大小的限制,如果使用 ext3 和 4K block size 的话最大可以支持 2TB 的单个文件。

  21. VPSEE,XEN3.4.3在网络上是否有重大变化?

    我作了两件事,
    1、将我的CENTOS5。5上自带的XEN,从源码升级到了3.4。
    2、在另外一台CENTOS5。5(无XEN),按本文的方式,装了3.4.3。

    结果,
    对于1:
    网络上,只有virbr0,没有xenbr0了。

    对于2:
    同样的。网络上,只有virbr0,没有xenbr0。

    但是xen3.1.2缺省起来有virbr0和xenbr0。

    请问vpsee,这是不是xen3.4.3的重大变化?是否从3.4.3开始,要建立桥接网络的话,需要自己手工建立了?

  22. @Brooks
    我正在度假,手上没有机器和环境。不过记忆中好像在网络方面没大变化,至于你在这里提到的名字变了应该没什么惊奇的啊,你自己也可以在 /etc/xen/scripts/ 改 xen bridge 的名字啊,比如改成 hellobr0.

  23. @vpsee

    你误解我的问题了。这里已经不是对bridge名字做修改的问题,而是,它-消-失-了。在scripts里面还有,但是它没出来。

    上面的几个方式都试了。

  24. 请问为什么要使用 3.43更稳定吗?
    4.01不好么?请指导一下哈

  25. 还有为什么我下的是CENTOS 64位 DVD 装出来的系统是 32的?
    哪设置问题呀?Debian装64 就是 64 我机器CPU 是支持64位的呀 郁闷

  26. 如何切换到64位系统?我确定我下的是64DVD 但他有2个ISO 我安装了4.1G的 还有个400M的ISO 还需要安装? VM环境下

  27. 4.0.1不稳定吗?用你文章这个版本好点还所最新版本好?
    如果我只有8G内存 只虚拟LINUX 系统。用32位会不会好一点呢?

  28. @Jacky
    4.0.1 是 4 系列的第一个版本,比较新,而且加了不少功能,bug 较多,等 4.4, 4.5 出来了我再用:)

    如果你有 8GB 内存的话最好使用64位,32位不带 pae 的话只能识别 4GB 内存。

  29. 那么我就用64好了,不过感觉64比32慢..占用也多了很多!
    32不是 编译内核 还是打什么补丁能支持到8G么

  30. @Jacky
    嗯,32位要用 pae 的内核,才能支持超过 4GB 内存。

  31. 请问 Linux内核有必要升级吗?现在是:2.6.18-194.el5xen
    升级到最新2.6.37好还是2.6.32!或这应该升级吗?

  32. @jacky
    取决于自己需要,如果没有特别理由、不需要新内核的新功能、也没重大安全问题最好就不要升级。

  33. @vpsee
    我刻了两张CentOS 5.5的盘,一张是i386的,一张是x86_64的,但是当时不知道安装了哪一个版本,uname -a结果如下:
    Linux xen-svr01.qmcc.com 2.6.18-194.32.1.el5.centos.plusxen #1 SMP Wed Jan 5 20:06:37 EST 2011 i686 i686 i386 GNU/Linux
    能判断我装的是哪一个版本吗?
    另外,http://www.gitco.de/repo/GITCO-XEN3.4.3_x86_64.repo
    是不是只有x86_64的软件包?如果我要装在32位下的xen3.4.3,我应该用哪个repos?

  34. @alfie
    你安装的是 i386,gitco.de/repo 上好像没有 32 位的。

  35. @vpsee
    我的环境:rpm -qa | grep xen
    kernel-xen-2.618-194.32.1.el5.centos.plus
    xen-libs-3.0.3-105.el5_5.5
    xen-3.0.3-105.el5_5.5

    是不是说我所安装的版本是3.0.3的?
    可是centos5.5默认的不是3.1.2的吗?

  36. 站长。你好,发现了一个控制OPenvz Xen KVM漂亮的面版 非常强大 而且免费。可是我在Xen安装不成功 在OPENVZ缺没有问题!你能测试一下吗?

    http://www.virtualizor.com/

  37. @Jacky
    看了一下,好像不是免费的,用过一个月后就要付费,只给了个 “The pricing will be very competitive”,没有给出具体价格。

  38. 应该不会呀。这后台完全没输入什么验证之类的。他首页不也写了:Virtualizor is a FREE product and installing it is very simple.=Virtualizor是一个 免费的 产品, 安装 也很简单。
    他现在应该是在开发中并不打算收费吧。你去论坛问问他们,我问过好象没有回复

  39. 我安装了一下 在授权那里看到 过期时间是:没有限制
    郁闷了…

  40. 为什么我升级了之后,不支持全虚拟化了,用virt-manager安装的时候,只剩下从网络安装可以选择,从ISO或CDROM都是灰色的,我原来是支持全虚拟化的,可以帮我分析分析吗??

  41. 原来装的是32位centOS5.5,现在改装的64位centOS5.5,按你的文章,进行下来都没有问题,就是不能全虚拟化

  42. 我的cpu是xeon5506,逻辑上4个核

  43. 我想问下,你们一般用的什么cpu

  44. 我用centos_x86_64的默认的xen是可以进行全虚拟化的,可是用这个方法升级到xen3.4.3就不支持了??好奇怪

  45. 能帮我分析分析吗?谢谢

  46. @学习xen
    你看一下 # xm dmesg 的输出,如果有下面结果就是说这个 Xen 支持 HVM:
    (XEN) HVM: VMX enabled
    可能这个第三方 Xen 3.4.3 在编译的时候没有加上 HVM 选项/模块。

  47. 升级成xen 3.4.3 之后 通过virt-manager 不能通过 iso 或者本地光盘进行安装。只能通过http、ftp、nfs 安装 请指教 是不是 有些软件包没有安装!

  48. 查看了 xm dmesg 有下面这个选项
    (XEN) HVM: VMX enabled
    唯一的不同就是 gitco.de repo 中有 写软件包在yum update 的时候没有 更新 而只更新了 xen 是不是跟没有安装其他的软件包有关系呢

  49. wget http://www.gitco.de/repo/GITCO-XEN3.4.3_x86_64.repo,这个地址现在访问不了。如果在可以访问的情况下,xen成功升级到xen3.4.3,该网站挂了后,会对xen3.4.3有什么影响吗?

  50. @david
    别人的网站挂了和你安装的 xen 有什么关系啊?没有影响。

  51. 您好,我依照您上述步骤进行xen3.4.3版本的升级后,uname -a 查看kernel-xen已升级ok,xm list xm info,查看xen版本也是正常的。但是ping不通外网。查看/etc/sysconfig/network-srcipts/ifcfg-eth0和DNS配置也是没有问题的。*(在升级之前网络是好的)。请教下是什么原因(⊙o⊙)?难道是升级后网络驱动有问题了,之前通过xen源码升级,是有网络驱动问题。谢谢。

  52. @david
    不清楚,也许你升级的这个 xen3.4.3 + dom0 kernel 没有你的网卡驱动?你检查一下网卡是否识别出来了。

  53. @vpsee
    现在可以ping通外网了,我的xend-config.sxp配置文件如下
    (xend-unix-server yes)
    (xend-unix-path /var/lib/xend/xend-socket)
    #(xend-relocation-hosts-allow ‘^localhost$ ^localhost\\.localdomain$’)
    (xend-relocation-hosts-allow ”)
    #(network-script ‘rocks-network-bridge’)
    //注:之前按照rocks-network-bridge这个自定义网桥启动就ping不通外网。
    (network-script network-bridge)//配置默认的可以ping通外网。
    (vif-script vif-bridge)
    (vncpasswd ”)
    (dom0-min-mem 768)
    #(dom0-cpus 1)
    启动后执行ifconfig 显示如下:
    eth0 Link encap:Ethernet HWaddr F4:CE:46:21:E9:90
    inet addr:192.168.39.152 Bcast:192.168.39.255 Mask:255.255.255.0
    inet6 addr: fe80::f6ce:46ff:fe21:e990/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:215873 errors:0 dropped:0 overruns:0 frame:0
    TX packets:74935 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:20875237 (19.9 MiB) TX bytes:10416502 (9.9 MiB)
    Interrupt:16 Memory:fbff0000-fc000000

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:16436 Metric:1
    RX packets:117 errors:0 dropped:0 overruns:0 frame:0
    TX packets:117 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:16336 (15.9 KiB) TX bytes:16336 (15.9 KiB)

    virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
    inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
    inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:0 (0.0 b) TX bytes:468 (468.0 b)
    可以看到没有对应Domain0的vif0.0 和 peth0,我通过这样指定(network-script ‘network-bridge bridge=xenbr0’)重启后也没有创建所指定的xenbr0这个网桥。
    我也是通过OpenNebula来管理虚拟机的,创建到该主机上的第一个虚拟机是成功的(对应会建vif1.0),该虚拟机网络不通,然而第二个虚拟机创建失败,报错如下:
    [VMM][E]: Error deploying virtual machine: Error: Domain ‘one-800’ does not exist.

    执行brctl show 如下:
    bridge name bridge id STP enabled interfaces
    virbr0 8000.feffffffffff yes
    xenbr0 8000.feffffffffff no vif1.0

    [
    xen3.1.2中主机brctl show如下:
    bridge name bridge id STP enabled interfaces
    virbr0 8000.000000000000 yes
    xenbr.eth0 8000.025b9ad6a2d7 no vif18.0
    tap2
    tap0
    vif17.0
    tap1
    vif16.0
    peth0
    vif0.0

    ]
    升级后的xen3.4.3为什么没有vif0.0 和 peth0呢? xen3.1.2中网络和创建多个虚拟机都是没问题的。您的Opennebula中节点也是用的xen3.4.3吗? 请教下上述遇到的问题,十分感谢!

  54. 请问博主,我的系统是centos5.5,/proc/cpuinfo的flags也有pae vmx,bios的VT也设置了enabled,为什么我用virt-install时指定-c /var/lib/xen/images/centos55.iso提示说半虚拟化不支持用iso安装呢?谢谢。

  55. @momaer
    半虚拟化不能通过 iso 安装,需要通过 http 安装,类似的 http://127.0.0.1/centos 等。

  56. 谢谢博主,已经搞好了,我的支持全虚拟化的,virt-install参数少加-v了,汗。

  57. 博主,请问我的笔记本的CPU不支持物理虚拟化,而openstack默认的虚拟机是KVM,所以在启动实例时,出现lunching——shutdown的情况。怎么也启动不了。如果要在我的机子上部署openstack NOVA,应该怎么办?

  58. 为啥只是升级到3.4.3呢,为啥不升级到4.1.x版本呢?
    这是出于一种什么考虑呢?

  59. @深夜的蚊子
    这篇文章是2010年11月24日写的,当年 xen 4.1 还没有出来:)

  60. 那现在是不是都升级到4.1了呢?
    关于升级4.1的文章有没有呀,参考一下
    另外,你们这边使用centos6了没?
    对于centos6没有xen,咱们这边是怎么处理的?

  61. @深夜的蚊子
    我们支持 CentOS 6,内核换一下就可以了。

  62. 也就是说centos6编译一个新内核就行了?

  63. 准备毕业中。。正在学习i/o虚拟化,请教一下,xen3.4.3的hvm模式,块设备虚拟化是使用的QEME模拟的吗?具体代码在哪里啊?我只找到半虚拟化的代码。

  64. 哈哈,在你的博客上学到了很多知识啊,感谢感谢。真心感觉CentOS5.6不怎么好用,Xen想升到高一点的版本都不行。

  65. 请问博主,升级xen后,原旧版虚拟机img文件还能用吗?要怎么加载?

  66. @晴天
    嗯,可以直接用,加载方法不变,不用改任何东西。

  67. 请问博主,升级xen后,Virtual Machine Manager里原旧版虚拟机不见了,怎么把img文件再次加载到管理器中运行?我试过Restore saved machine不行,可以用命令加载吗,怎么操作呢?

  68. 博主可以加你QQ吗,方便向你请教。

  69. @晴天
    找到 xen 配置文件和镜像以后,修改 xen 配置文件,然后用 xm create 来加载。

  70. Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=5&arch=x86_64&repo=addons error was
    [Errno 4] IOError:
    Error: Cannot find a valid baseurl for repo: addons
    [root@localhost yum.repos.d]#

发表评论