我正在使用一台 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 应该没有什么不同。