确定在XEN上运行哪个guest虚拟机:HVM或PV guest虚拟机

我正在使用Citrix XenServer安装的Xen主机。 他已经在主机上安装了很多CentOS 5.2客户端。 我不知道如何检查这些客人知道他们是PVtypes或HVMtypes?

一个简单的说明,实际上有三种模式,而不是两种,当涉及到使用的驱动程序:

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

对于一个Xen客户/ DomU你可以做一个非常基本的unamelsmod用grep列出正在使用的模块:

 uname -a lsmod | grep xen 

如果uname -a列出内含string“xen”的内核,那么你有一个修改过的内核,它可能是一个PV来宾,你会看到来自lsmod命令的输出来确认它。 如果你在lsmod上有grep的输出,但没有修改内核的信号,那你就是PV-HVM。 没有任何迹象,这是一个直接的HVM。

注意:一般情况下,对于安装了光伏工具的虚拟机,可以做的更多,所以这可以是一个非常明显的指针,但是你可以伪造光伏工具的存在以允许暂停/恢复等,所以你不能依赖。

有一个更好的select来分析来宾域内的uname -a输出。 您应该在虚拟机pipe理程序本身中检查VMconfiguration文件。

XL

使用当前用于独立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", ... }, ... } } ] 

请注意c_info部分中的type项 – 如果它等于"pv" ,则表示半虚拟。

XM

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

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

注意(image)部分的(linux)元素 – 它对应于builderconfiguration指令,其中“linux”代表“paravirtual”(而不是实际的内核),而“hvm”代表“完全虚拟化”。

XE

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

的virsh

可能有(或已经)从libvirt工具堆中获取这些信息的方法,但我不知道。


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

  • 传统的半虚拟化 (PV)依赖于客户系统从使用环0到环1重写; 由于AMD在x86-64上抛弃了Ring 1和Ring 2,Xen必须回归到基于软件的pipe理,这比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 ^^^^^ 

要检查特定的guest pvh=1是否以PVH模式(configuration文件中的pvh=1 )运行,请再次参考xl list -l

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

但是,从pipe理的angular度来看,PVH不应该和PV有什么不同。