Xen PV guest的配置(Xen PV guest configuration)

前阵子,自动化测试系统中关于XenU(即:Xen的PV guest)的cases总是failed,我们那里使用的guest都是几年前做的了(用的是RHEL4.3),所以我就自己研究了一下在最新的Xen下面PV Guest的配置。
经过研究发现,目前最新的Xen 4.x中,PV guest的配置方式大约是有3方式:
1. 传统的也是最流行和推荐的:kernel和initrd放在Dom0中的;
2. 使用pygrub启动
3. 使用pv-grub启动

第1种,是Xen很早就支持的方式了;而第2、3种都是后来加上去的方式,它们的guest kernel都在guest image中,不受Dom0的影响,它们的好处是PV guest相对独立,guest升级kernel可以不受Dom0的影响。

你可能需要了解的基本概念有以下几点:
a. 对于第1种方式,是说kernel放在dom0中,但并不是要和dom0同一个kernel,也可以是另外自己编译的kernel(注意:需要在dom0的/lib/modules/下面有你配置的PV guest kernel所对应的modules文件);

b. 第1种方式中,PV guest启动的kernel和加载的module都是存放在dom0中的。

c. pygrub是Xen提供的一个userspace的Bootloader工具,它是为了实现从domU中存放的kernel启动PV guest,而不需要用在dom0中存放的kernel。

d. 而pv-grub的出现是为了取代pygrub的,它提供一种更为安全的方式去启动PV guest,它需要一个mini的OS(名字可能为:pv-grub-x86_32.gz)。

e. 不管使用哪种方式,由于是PV guest,所以他们的kernel都是经过特殊配置的,比如一些重要的config项目有:CONFIG_XEN=y, CONFIG_XEN_DEBUG_FS=y, CONFIG_PCI_XEN=y, CONFIG_XEN_PCIDEV_FRONTEND=y, CONFIG_XEN_BLKDEV_FRONTEND=y, CONFIG_XEN_NETDEV_FRONTEND=y 等等(当然部分配置为module而不是编译进kernel也是可以的)。

第1种配置文件:xlexample.pvlinux

第2种配置文件:xlexample.pygrub
它的特色就是有bootloader = "/usr/bin/pygrub"的配置,而没有了"kernel="这样的配置。

第3种配置文件:xlexample.pvgrub
注意,其中extra = "(hd0,0)/boot/grub/grub.conf" 指的是guest中grub.conf的位置。
而关于,pv-grub-x86_32.gz怎么编译的呢,需要等到今后的博客再简单写一下吧。

对于以上3个PV guest的config文件,都可以用同样的命令创建guest、连接guest的串口、连接guest的vnc(我都加了VNC的配置)。

怎么检查一个guest里面是运行的PV guest而不是HVM guest呢?
可以检查guest的dmesg信息,检查里面可能有如下类似关键信息:

更多关于pygrub、pv-grub的参考资料如下:
http://wiki.xen.org/wiki/PyGrub
http://wiki.xen.org/wiki/PvGrub
http://wiki.xen.org/wiki/PVGrub_HowTo

master

Stay hungry, stay foolish.

9 Comments

  1. 您好,我用CentOS6.4 安装Xen环境,其中在DomU启动过程中提示以下
    PCI: Warning: Cannot find a gap in the 32bit address range
    PCI: Unassigned devices with 32bit resource registers may break!
    PCI: Fatal: No config space access function found
    ipmi_si: Could not set up I/O space
    ipmi_si: Could not set up I/O space
    ipmi_si: Could not set up I/O space
    不知道该如何解决 (服务器dell r720)

    • 看起来就是一个32bit的问题? dom0 是32bit 还是 64bit? dom0 已经不支持 32bit了,要用64bit的。

      • 博主好,Dom0、DomU都是CentOS6.4 64位的系统,下面是DomU中的错误信息,不知道这个错误对使用有没有影响(服务器为dell r720,RAID卡是H310 )
        # dmesg | grep PCI
        PCI: Warning: Cannot find a gap in the 32bit address range
        PCI: Unassigned devices with 32bit resource registers may break!
        Allocating PCI resources starting at 400100000 (gap: 400100000:400000)
        PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
        PCI: Fatal: No config space access function found
        PCI: System does not support PCI
        PCI: System does not support PCI
        PCI: max bus depth: 0 pci_try_num: 1
        pci_hotplug: PCI Hot Plug PCI Core version: 0.5
        pciehp: PCI Express Hot Plug Controller Driver version: 0.4
        acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5

        # dmesg | grep ipmi
        ipmi message handler version 39.2
        ipmi_si: Adding default-specified kcs state machine
        ipmi_si: Trying default-specified kcs state machine at i/o address 0xca2, slave address 0x0, irq 0
        ipmi_si: Could not set up I/O space
        ipmi_si: Adding default-specified smic state machine
        ipmi_si: Trying default-specified smic state machine at i/o address 0xca9, slave address 0x0, irq 0
        ipmi_si: Could not set up I/O space
        ipmi_si: Adding default-specified bt state machine
        ipmi_si: Trying default-specified bt state machine at i/o address 0xe4, slave address 0x0, irq 0
        ipmi_si: Could not set up I/O space
        ipmi_si: Unable to find any System Interface(s)

    • 没啥运行问题,就不管了吧。我最近没研究xen,只有一些明显的问题,我才能帮忙看出来。

      • 已经解决了,这个不是什么问题,
        你网站挺棒的!

          • 前面那个留言者估计 找不到了~ 不巧 他没讲解决方法反馈回来 :(

发表评论

邮箱地址不会被公开。 必填项已用*标注

*