Chinaunix

标题: Xen 虚拟机的问题 [打印本页]

作者: Godbach    时间: 2010-12-20 17:40
标题: Xen 虚拟机的问题
本帖最后由 Godbach 于 2010-12-21 10:01 编辑

最近在了解 Xen 虚拟机的相关内容,存在几个初级问题,请大家伙帮忙指正一下。
(1)Xen 的源码并不是适应所用的内核,不同版本的 Xen 源码应该仅能在特定内核版本上运行。如果是,从哪里确定这个对应关系。
(2)当前系统的 Xen0 是安装的 CentOS 5.5,  内核是 2.6.18-194.26.1.el5xen。XenU 上的内核版本和 Xen0 一样。 现在我想修改 XenU 的内核,譬如编译一个新的内核版本。是不是同样需要有对应的 Xen 源码,然后和新内核一起编译,配置文件也要选择支持 XenU 的。
作者: Godbach    时间: 2010-12-21 09:51
搞虚拟机方面的朋友不多么
作者: renxiao2003    时间: 2010-12-21 11:24
我安装RHEL就是在VMWARE里安装的,所以不敢再XEN了啊。
作者: dn833    时间: 2010-12-21 12:09
我跟3楼一样,一头扎进vmware的怀抱就再不出来了。。。
作者: Godbach    时间: 2010-12-21 12:24
多谢 LS 二位。

VMWare 和 Xen 的应用场景不一样啊。如果个人学习之后,用 VMware 更方便一些。
而且实际的服务器上,因为性能比较好(8 核,32G 内存),有时为了更好的服务,就是用 Xen 虚拟机。同时开启几个 Xen 来提供服务。
作者: Godbach    时间: 2010-12-21 12:25
我现在就是想了解一下,能否自己编译一个 Xen 虚拟机里面使用的内核,大致的步骤是什么。网上看了写文档,没完全搞明白。
作者: Godbach    时间: 2010-12-22 11:26
Xen 4.0 hypervisor and supported dom0 Linux kernels

Xen 4.0.1 (and newer 4.0.x versions) includes and builds the new pvops dom0 Linux 2.6.32.x kernel as a default. Xen 4.0.0 used Linux 2.6.31.x pvops kernel as a default. You can also use the old-style linux-2.6.18-xen as the dom0 kernel, or any of the various forward-ports of the 2.6.18 xen patches to newer kernels. Please see the XenDom0Kernels and XenKernelFeatures wiki pages for more information.


可见, Xen 4.0.1 默认可以在 2.6.32.x 编译 dom0, 不知道能否使用 2.6.36.x 编译 dom0.

另外,根据 accessory 兄介绍,有可能在 2.6.36 上直接编译 pv 的 domU,需要测试一下
作者: ttvast    时间: 2010-12-22 12:12
xen和linux内核版本没有一一对应关系,问题只在于porting.

我使用xen一般都是去http://www.gitco.de/repo/  自己porting不如别人porting, 毕竟我们用xen的目的不是去研究这些的.

不过我对pv实在不感兴趣
作者: Godbach    时间: 2010-12-22 13:04
xen和linux内核版本没有一一对应关系,问题只在于porting.

我使用xen一般都是去http://www.gitco.de/repo/  自己porting不如别人porting, 毕竟我们用xen的目的不是去研究这些的.


多谢 LS 的。

意思就是,如果希望某个内核版本支持 Xen,需要的工作就是将 Xen 的源码(我的理解主要是内核部门的)往对应版本的内核上移植就可以了。

如果只想用替换 domU  的内核,也需要编译 Xen 的源码吗?
作者: ttvast    时间: 2010-12-22 13:48
pv我不是很清楚,但是你应该确认一点的就是domU和dom0的xen version是不是必须一致。 我记得是不需要一致的。

我们平时大部分考虑到的xen的特性应该是在dom0里面的,所以domU里面的xen版本并不是那么重要。
当然我理解你的意思可能是,你想在domU里面用一个更高版本的kernel,而这个kernel并没有现成的xen domU 的bin包, 所以你还是需要自己patch自己编译内核。 我觉得这个问题不会很大, 逼近domU的xen patch应该是很轻的,不会有太大问题
作者: Godbach    时间: 2010-12-22 15:23
pv我不是很清楚,但是你应该确认一点的就是domU和dom0的xen version是不是必须一致。 我记得是不需要一致的。

pv ops 下,估计 dom0  和 domU 需要用一样的内核。

我们平时大部分考虑到的xen的特性应该是在dom0里面的,所以domU里面的xen版本并不是那么重要。
当然我理解你的意思可能是,你想在domU里面用一个更高版本的kernel,而这个kernel并没有现成的xen domU 的bin包, 所以你还是需要自己patch自己编译内核。 我觉得这个问题不会很大, 逼近domU的xen patch应该是很轻的,不会有太大问题

如果我上面的结论不成立,那么是需要找对应的 patch 了。然后编译个内核,测试一下。
作者: ttvast    时间: 2010-12-22 19:24
我觉得版本应该可以不一致的,否则dom0升级了,岂不是所有domU的镜像都要重做? 这个就没有可维护性了
作者: accessory    时间: 2010-12-23 04:46
GOD老兄搞好了没有?从目前的信息看,你只要编译个新的DOM U 内核应可以了。PV OP 已经包括在主流 LINUX 内核里面了。不需要其他XEN 源码(至少DOM U 内核是这样)。
作者: Godbach    时间: 2010-12-24 09:57
我觉得版本应该可以不一致的,否则dom0升级了,岂不是所有domU的镜像都要重做? 这个就没有可维护性了
ttvast 发表于 2010-12-22 19:24

嗯,应该是这样的。我看到 Xen 的 wiki 上介绍,dom0 的升级应该不影响 domU.
作者: Godbach    时间: 2010-12-24 10:05
GOD老兄搞好了没有?从目前的信息看,你只要编译个新的DOM U 内核应可以了。PV OP 已经包括在主流 LINUX 内核里面了。不需要其他XEN 源码(至少DOM U 内核是这样)。

多谢 accessory 兄的关注。

我当前的 dom0 就是 CentOS 5.5 安装上的。domU 的内核本来也是和 dom0 一样的。版本都是 2.6.18-194.el5xen。
domU 的一些信息如下:
[root@XXX xen]# cat /etc/modprobe.conf
alias scsi_hostadapter xenblk
alias eth0 xennet
[root@XXX xen]# lsmod | grep -E "xennet|xenblk"
xennet                 61513  0 [permanent]
xenblk                 51113  7

可见这里面加载的网卡驱动和磁盘驱动都是和 Xen 相关的。

现在,我想升级 domU 的内核。按照你的介绍,应该下载一个高版本的内核,编译时,把支持 PV 和 Xen 的相关选项配置上就可以了吧。
我测试版本是 2.6.36.1 的,编译之后没有发现有这两个模块。这两个模块应该是和 Xen 源码一起编译的时候才有的。

使用这个版本的内核启动 domU,没有成功。因为是在线设备,我没获取到启动失败的具体信息。大致就是这个情况。
作者: root_wxt    时间: 2010-12-24 15:38
dom0,domU可以利用kernel的最新版本编译而成,不局限于xen原生的内核。我以前就这么搞的!
作者: Godbach    时间: 2010-12-24 16:37
dom0,domU可以利用kernel的最新版本编译而成,不局限于xen原生的内核。我以前就这么搞的!
root_wxt 发表于 2010-12-24 15:38

LS 的有一些总结吗,你的意思使用最新的 kernel,比如 2.6.36 也可以编译成 dom0 和 domU 吗,需要和 Xen 的源码一起编译吗?
作者: Godbach    时间: 2010-12-24 16:42
因为我了解到 Xen 源码还是有对应的缺省内核版本的。
你所说的可以在不同的版本上使用,是不是需要自己 移植
作者: root_wxt    时间: 2010-12-24 19:08
LS 的有一些总结吗,你的意思使用最新的 kernel,比如 2.6.36 也可以编译成 dom0 和 domU 吗,需要和 Xen ...
Godbach 发表于 2010-12-24 16:37



   没写完的记录,你参考下

xen 4.0 and kernel 2.6.34.1 on Debian lenny 5.0 安装记录
1、安装编译相关软件
# apt-get install bcc bin86 gawk bridge-utils iproute libcurl3 libcurl4-openssl-dev bzip2 module-init-tools transfig tgif texinfo texlive-latex-base texlive-latex-recommended texlive-fonts-extra texlive-fonts-recommended pciutils-dev mercurial build-essential make gcc libc6-dev zlib1g-dev python python-dev python-twisted libncurses5-dev patch libvncserver-dev libsdl-dev libjpeg62-dev iasl libbz2-dev e2fslibs-dev git-core uuid-dev ocaml libx11-dev
因为是64位系统,所以必须安装gcc-multilib
# apt-get install gcc-multilib
2、编译安装xen、tools、stubdom
# wget http://bits.xensource.com/oss-xen/release/4.0.0/xen-4.0.0.tar.gz
# tar zxvf xen-4.0.0.tar.gz
# cd xen-4.0.0
# make xen tools stubdom
# make install-xen install-tools install-stubdom
3、编译安装dom0
# wget http://gentoo-xen-kernel.googlec ... es-2.6.34-1.tar.bz2
# mkdir xenpatch
# tar xjvf xen-patches-2.6.34-1.tar.bz2 -C xenpatch
# cd /usr/src/
# wget http://www.kernel.org/pub/linux/ ... ux-2.6.34.1.tar.bz2
# tar xjvf linux-2.6.34.1.tar.bz2
# cd linux-2.6.34.1
# for i in `ls ../xenpatch/`; do patch -p1 < ../xenpatch/"$i"; done
# cp /boot/config-2.6.26-2-amd64 .config
# make menuconfig
Processor type and features --->
  
  • Enable Xen compatible kernel
    Networking support --->
      Networking options --->
        <*> 802.1d Ethernet Bridging
    Device Drivers --->
      XEN --->
       
  • Privileged Guest (domain 0)                                                     
        <*> Backend driver support                                                           
        <*>   Block-device backend driver                                                     
        <*>   Block-device tap backend driver                                                
        <*>   Block-device tap backend driver 2                                             
        <*>   Network-device backend driver                                                  
        (     Maximum simultaneous transmit requests (as a power of 2)                     
        [ ]     Pipelined transmitter (DANGEROUS)                                             
        <*>     Network-device loopback driver                                                
        <*>   PCI-device backend driver                                                      
                PCI Backend Mode (Virtual PCI)  --->                                          
        [ ]     PCI Backend Debugging                                                         
        <M>   TPM-device backend driver                                                      
        <M>   SCSI backend driver                                                            
        <M>   USB backend driver                                                              
        <*> Block-device frontend driver                                                      
        <*> Network-device frontend driver                                                   
        <M>   Network-device frontend driver acceleration for Solarflare NICs                 
        <M> SCSI frontend driver                                                              
        <M> USB frontend driver                                                               
       
  •    Taking the HCD statistics (for debug)                                          
        [ ]   HCD suspend/resume support (DO NOT USE)                                         
        <*> User-space granted page access driver                                             
        <*> Framebuffer-device frontend driver                                                
        <*>   Keyboard-device frontend driver                                                
       
  • Disable serial port drivers                                                      
        <*> Export Xen attributes in sysfs                                                   
        (256) Number of guest devices                                                         
            Xen version compatibility (3.2.0 and later)  --->                                 
       
  • Place shared vCPU info in per-CPU storage     
  • Xen driver support --->
       
  • Scrub memory before freeing it to Xen  
        <*> Xen /dev/xen/evtchn device  
    # make
    # make install
    # make moudles_install
    # depmod -a 2.6.34.1
    # update-initramfs -c -k 2.6.34.1
    4、修改grub启动项
    修改/boot/grub/menu.lst
    title           Xen 4.0/2.6.34.1
    root            (hd0,0)
    kernel          /xen-4.0.gz dom0_mem=512M dom0_max_vcpus=2
    module          /vmlinuz-2.6.34.1 root=/dev/mapper/vg1-root ro console=tty0
    module          /initrd.img-2.6.34.1
    5、设定xen开机自动启动
    #for i in 2 3 4 5
    do
    ln -s /etc/init.d/xend /etc/rc$i.d/S21xend
    ln -s /etc/init.d/xendomains /etc/rc$i.d/S21xendomains
    done
    #for i in 0 1 6
    do
    ln -s /etc/init.d/xend /etc/rc$i.d/K79xend
    ln -s /etc/init.d/xendomains /etc/rc$i.d/K79xendomains
    done
    6、建立hvm DomU虚拟客户机
    #lvcreate -L 15G -n xp-orig vg1
    建立DomU xp-orig的配置文件
    # cat /etc/xen/xp_orig.cfg
    kernel='/usr/lib64/xen/boot/hvmloader'
    builder='hvm'
    name='xp-orig'
    device_model='/usr/lib64/xen/bin/qemu-dm'
    disk=['phy:/dev/vg1/xp_orig,hda,w','phy:/dev/loop0,hdc:cdrom,r']
    boot='dc'
    #boot='c'
    memory='512'
    shadow_memory='8'
    vcpus=1
    #vif=['type=ioemu,model=e1000,mac=00:21:41:e2:31:04,bridge=eth0']
    #vif=['type=ioemu,mac=00:21:41:e2:31:04,bridge=eth0']
    vif=['']
    on_poweroff='destroy'
    on_reboot='restart'
    on_crash='restart'
    vnc=1
    vnclisten='0.0.0.0'
    vncdisplay=0
    vncunused=1
    vncpasswd='pass'
    sdl=0
    usb=1
    usbdevice='mouse'
    # losetup -f en_winxp_pro_with_sp3_vl.iso
    # losetup -a
    /dev/loop0: [fc01]:188602 (en_winxp_pro_with_sp3_vl.iso)
    开机安装
    #xm create xp_orig.cfg
    利用vnc远程连接Dom0p_orig,开始安装xp,当xp安装完成之后,安装xenWindowsGplPv驱动
    These drivers allow Windows to make use of the network and block backend drivers in Dom0, instead of the virtual PCI devices provided by QEMU. This gives Windows (in theory) a substantial performance boost, and most of the testing that has been done confirms that.
    比如说Gbit网卡的支持(不要用ioemu模拟网卡),再比如说xm shutdown DomU,没有安装这个驱动之间,关机不会保留工作状态。
    Downloading

    Recent binaries are available from http://www.meadowcourt.org/downloads/
    There is now one download per platform/architecture, named as follows:

    gplpv_<chk/fre>_<platform>_<arch>_<version>.msi
    chk is a 'checked' build which contains debug info (please use these if you want any assistance in fixing bugs)
    fre is a 'free' build which contains no debug info
    platform is 'wxp' for XP, 'wnet' for 2003, and 'wlh' for Vista/2008
    arch is 'x86' for 32 bit and 'AMD64' for 64 bits
    我们把xp_orig作为xp模板,利用此模板创建多个xpDomU
    #lvcreate -L15G -s -n xp_snap1 /dev/vg1/xp_orig
    #cat /etc/xen/auto/xp_snap1.cfg
    kernel='/usr/lib64/xen/boot/hvmloader'
    builder='hvm'
    name='xp-snap1'
    device_model='/usr/lib64/xen/bin/qemu-dm'
    disk=['phy:/dev/vg1/xp_snap1,hda,w']
    boot='c'
    memory='512'
    shadow_memory='8'
    vcpus=1
    vif=['']
    on_poweroff='destroy'
    on_reboot='restart'
    on_crash='restart'
    vnc=1
    vnclisten='0.0.0.0'
    vncdisplay=0
    vncunused=1
    vncpasswd='pass'
    sdl=0
    usb=1
    usbdevice='mouse'
    #xm create auto/xp_snap1.cfg
    作者: spunix    时间: 2010-12-25 16:57
    我是来学习的
    作者: Godbach    时间: 2010-12-26 16:49
    3、编译安装dom0
    # wget http://gentoo-xen-kernel.googlec ... es-2.6.34-1.tar.bz2
    # mkdir xenpatch
    # tar xjvf xen-patches-2.6.34-1.tar.bz2 -C xenpatch
    # cd /usr/src/

    看来这里是关键。Xen 有针对内核的 patch。这个可以从哪里下载呢。比如想找某个内核版本的 Xen patch
    作者: royzs    时间: 2010-12-28 11:46
    回复 21# Godbach


        服务器最好用Citrix XenServer ,凌驾于硬件之上,不用考虑和Linux内核的这个那个了;里牛克斯下的xen我也用过感觉没你讲的这么麻烦,因为我使用yum安装的
    作者: Godbach    时间: 2010-12-28 13:14
    可以用 yum 安装的,基本上是预编译好的内核,所以安装比较简单
    作者: dn833    时间: 2010-12-30 13:39
    不知道LZ猜想xen的境界到什么程度了,呵呵xen够深。。。。。。
    作者: Godbach    时间: 2010-12-30 17:03
    呵呵,没有多深啊。我在了解的,难道是我想复杂了。
    作者: accessory    时间: 2011-01-04 02:21
    感觉19楼的只适合DEBIAN. CENTOS 这样装不一定可以。。。。
    作者: Godbach    时间: 2011-01-04 10:05
    感觉应该是有针对不同内核版本的 Xen patch,或者至少是一些内核版本的
    作者: root_wxt    时间: 2011-01-05 15:59
    看来这里是关键。Xen 有针对内核的 patch。这个可以从哪里下载呢。比如想找某个内核版本的 Xen patch
    Godbach 发表于 2010-12-26 16:49



        事情可能是这样子的

    xen被citrix拿去之后,redhat实际上失去了对 xen 发展的主导权,所以呢去搞KVM了,我们都知道linux,redhat在企业领域一直是一家独大,他这一走就意味着xen在linux下的发展放慢了,xen代码没能包括进kernel的主线,开发受到了影响,社区开发的针对不同kernel的patch也不一定能跟上kernel的步子,所以我只找到特定kernel的patch,总比没有好吧
    不过,最新的kernel内核2.6.37好象并入了,内核了dom0的支持,我想以后各版本都会内建的
    作者: Godbach    时间: 2011-01-05 17:03
    社区开发的针对不同kernel的patch也不一定能跟上kernel的步子,所以我只找到特定kernel的patch,总比没有好吧

    嗯,应该是可以找到一些特定 kernel 的 Xen 的 patch
    不过,最新的kernel内核2.6.37好象并入了,内核了dom0的支持,我想以后各版本都会内建的

    是的,2.6.37 加入了 Dom0,不过好像 backend 的驱动还没有加入吧。

    这两天正等着 2.6.37 release 呢。:wink:
    作者: ioiioi    时间: 2011-02-26 11:05
    回复 8# ttvast


        上面的网址只有x86_64,是不是意味着我只能再64位的centos上面才能安装该repos的XEN?
    作者: ioiioi    时间: 2011-02-26 11:12
    xen和kvm的前景如何?xen被citrix收购,redhat专注于kvm,会不会以后将是kvm的天下,而xen逐渐退出人们的视野。
    作者: Godbach    时间: 2011-02-27 20:19
    好像 2.6.37 以后要把 Xen0 集成到内核了




    欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2