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

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

我正在使用一台 Xen 主机,该主机由某人安装了 Citrix 的 XenServer。他已经在主机上安装了很多 CentOS 5.2 客户机。我想知道如何检查这些客户机以了解它们是 PV 类型还是 HVM 类型?

答案1

需要注意的是,就使用的驱动程序而言,实际上有 3 种模式,而不是 2 种:

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

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

uname -a
lsmod | grep xen

如果uname -a列出的内核中包含字符串“xen”,则说明您拥有经过修改的内核,并且很可能是 PV 客户机,您将看到命令的输出lsmod以确认这一点。如果您有 grep on 的输出lsmod,但没有经过修改的内核的迹象,则说明您是 PV-HVM。如果没有任何迹象,则说明它是纯 HVM。

注意:通常,您可以使用安装了 PV 工具的虚拟机执行更多操作,因此这可能是一个很明显的提示,但是您可以假装在场PV 工具允许暂停/恢复等,所以一般来说你不能依赖它。

答案2

除了分析来自来宾域内部的输出之外,还有一种更好的选择uname -a。您应该检查虚拟机管理程序本身中的 VM 配置文件。

加大号

当前XenLight 工具栈用于独立的 Xen 安装,可以通过运行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",则表示半虚拟。

母婴袋鼠

一位年长的使用传统管理工具栈进行独立 Xen 安装xm,情况类似:

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

请注意(linux)该 (image)部分中的元素 - 它对应于 builder配置指令,其中“linux”表示“半虚拟化”(而不是实际内核),而“hvm”代表“完全虚拟化”。

捷星

使用 XenServer 或 XCP器具您可以使用xe vm-list params=all命令或类似的东西。

维尔什

可能有(或曾经有)某种方式可以从以下位置获取此信息 虚拟器toolstack,但我不知道。


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

  • 经典半虚拟化(PV)依赖于使用来宾系统进行重写环 0朝向 ring 1 迈进;由于 AMD 已经在 x86-64 中抛弃了 ring 1 和 ring 2,Xen 不得不退回到基于软件的管理,这比 HVM 还要慢;
  • 硬件辅助半虚拟化(PVH),——不要与 使用半虚拟驱动程序实现完全虚拟化(PV-on-HVM)——依靠硬件辅助来处理特权指令和内存页表,但对其他所有操作使用传统的 PV 技术,因此无需模拟任何硬件,就能实现接近本机的性能,就像过去的 x86-32 时代一样。

要检查主机是否启用了 PVH,可以使用xl info(尽管这种方法并不比检查grub配置文件):

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

要检查特定客户机是否在 PVH 模式下运行(pvh=1在配置文件中),请再次查阅xl list -l

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

然而,从管理角度来看,PVH 与 PV 应该没有什么不同。

相关内容