确定哪个客户机在XEN上运行:HVM或PV客户机


9

我正在使用Xen主机,该主机由Citrix从Citrix安装了XenServer。他已经在主机上安装了许多CentOS 5.2 guest虚拟机。我想知道如何检查那些客人以了解他们是PV类型还是HVM类型?

Answers:


10

快速说明一下,实际上有3种模式,而在使用的驱动程序上则没有2种:

  • HVM:使用软件仿真设备的未修改内核和驱动程序
  • PV-HVM:具有半虚拟化(特定于Xen)的磁盘和网络驱动程序的未修改内核
  • PV:修改后的内核和驱动程序

对于Xen guest / DomU,您可以做一个非常基本的操作unamelsmod使用grep列出正在使用的模块:

uname -a
lsmod | grep xen

如果uname -a列出的内核中包含字符串“ xen”,则说明您有一个已修改的内核,很可能是PV guest虚拟机,您将看到lsmod命令的输出进行确认。如果您从grep上获得了输出lsmod但没有经过修改的内核的迹象,那么您就是PV-HVM。没有任何迹象,这是一个直接的HVM。

注意:通常,对于安装了PV工具的VM可以做更多的事情,因此可以很明显地看出来,但是您可以伪造 PV工具的存在以允许挂起/恢复等操作,因此您通常不能依赖它。


谢谢@亚当。这是我到目前为止找到的最明确的答案。
哈桑海

10

有一个更好的替代方法可以分析uname -a来宾域内部的输出。您应该在管理程序本身中检查VM配置文件。

加大码

使用用于独立Xen安装的当前 XenLight工具栈,可以通过运行以下xl list --long命令来实现:

# xl list
Name                   ID   Mem VCPUs      State   Time(s)
My-Virtual-Machine     42  1024     1     -b----    9001.0

# xl list -l 42
    or
# xl list --long My-Virtual-Machine

[
    {
        "domid": 6,
        "config": {
            "c_info": {
                "name": "My-Virtual-Machine",
                "uuid": "12345678-abcd-1234-abcd-12345678abcd",
                "type": "pv",
                ...
            },
            ...
        }
    }
]

请注意本节中的type项目  c_info-如果等于  "pv",则表示半虚拟。

XM

对于使用传统管理工具堆栈的较旧的独立Xen安装xm,情况是类似的:

# xm list --long My-Virtual-Machine
(domain
    (domid 42)
    (name My-Virtual-Machine)
    (image
        (linux
            (kernel ...)
            ...
        )
    )
    ...
)

注意本节中的(linux)元素  (image)—它对应于  builder配置指令,其中“ linux”表示“准虚拟”(而不是实际内核),而“ hvm”表示“完全虚拟化”。

XE

使用XenServer或XCP 设备,您可以使用xe vm-list params=all命令或类似命令。

维尔什

可能有(或曾经有)某种方法可以从libvirt工具堆栈中获取此信息  ,但是我不知道。


请注意,从Xen 4.5开始,x86-64上的半虚拟模式具有两种风格:

  • 经典半虚拟化(PV)依赖于从使用环0到环1 进行重写的来宾系统;由于AMD放弃了x86-64中的环1和环2,因此Xen必须退回到基于软件的管理,这甚至比HVM还慢。
  • 硬件辅助半虚拟化(PVH),不要与半虚拟驱动程序(PV-on-HVM)完全虚拟化相混淆  ,它依赖于硬件协助来处理特权指令和内存页表,但对其他所有东西都使用传统的PV技术,因此无需模拟任何硬件,并且可以达到与旧版x86-32相同的近乎原生的性能。

要检查主机是否在启用PVH的情况下运行,可以使用主机xl info(尽管此方法并不比检查grub.cfg好):

# xl info | grep xen_commandline
xen_commandline        : pvh=1 loglvl=all guest_loglvl=all console=com1,vga
                         ^^^^^

pvh=1再次检查特定来宾是否正在PVH模式下运行(在配置文件中),请咨询xl list -l

            "c_info":{
                "name": "My-Virtual-Machine",
                "type": "pv",
                "pvh": "True",
                ...
            },

但是,从管理角度来看,PVH与PV不应有任何区别。


这在4.4.1上不起作用,因为没有xm命令,但是xl输出不同。任何想法如何获取有关4.4.1 XEN的信息。谢谢。
2015年

@WakanTanka我目前无法访问正在运行的Xen服务器,但是根据在线发现的示例输出,该方法基本相同。查看更新后的答案。
安东·萨姆索诺夫

与@AdamC的答案相比,这是一种更好的方法,因为我有几个PV ubuntu来宾,它们根据绝对是PV xl,但在内核名称或内核模块中没有提及xen。
假名称

2
这需要访问管理程序,如何知道他是否仅有权访问访客?
托宁
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.